cover.jpg

Bibliografische Information der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte Daten sind im Internet über http://dnb.ddb.de abrufbar.

Hinweis: Alle Angaben in diesem Buch wurden vom Autor mit größter Sorgfalt erarbeitet bzw. zusammengestellt und unter Einschaltung wirksamer Kontrollmaßnahmen reproduziert. Trotzdem sind Fehler nicht ganz auszuschließen. Der Verlag und der Autor sehen sich deshalb gezwungen, darauf hinzuweisen, dass sie weder eine Garantie noch die juristische Verantwortung oder irgendeine Haftung für Folgen, die auf fehlerhafte Angaben zurückgehen, übernehmen können. Für die Mitteilung etwaiger Fehler sind Verlag und Autor jederzeit dankbar. Internetadressen oder Versionsnummern stellen den bei Redaktionsschluss verfügbaren Informationsstand dar. Verlag und Autor übernehmen keinerlei Verantwortung oder Haftung für Veränderungen, die sich aus nicht von ihnen zu vertretenden Umständen ergeben. Evtl. beigefügte oder zum Download angebotene Dateien und Informationen dienen ausschließlich der nicht gewerblichen Nutzung. Eine gewerbliche Nutzung ist nur mit Zustimmung des Lizenzinhabers möglich.

© 2012 Franzis Verlag GmbH, 85540 Haar

Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Das Erstellen und Verbreiten von Kopien auf Papier, auf Datenträgern oder im Internet, insbesondere als PDF, ist nur mit ausdrücklicher Genehmigung des Verlags gestattet und wird widrigenfalls strafrechtlich verfolgt.

Die meisten Produktbezeichnungen von Hard- und Software sowie Firmennamen und Firmenlogos, die in diesem Werk genannt werden, sind in der Regel gleichzeitig auch eingetragene Warenzeichen und sollten als solche betrachtet werden. Der Verlag folgt bei den Produktbezeichnungen im Wesentlichen den Schreibweisen der Hersteller.

EPUB-Bearbeitung und Konvertierung: www.goebel-software.com
Coverart & -design: www.ideehoch2.de

ISBN 9783645270106

Inhaltsübersicht

Vorwort

1  Der Engineering-Prozess

1.1  Zusammenstellen der Hardware

1.2  Zusammenstellen der Werkzeuge

1.3  Projekt: Blinkende LED

2  Arduino-Software-Entwicklung

2.1  Erste Schritte mit setup und loop()

2.2  Arbeiten mit Schleifen

2.3  Digitale Kommunikation

2.4  Analoge Kommunikation

2.5  Serielle Kommunikation

2.6  Arduino-Bibliotheken

3  Roboterausstattung – Bewegungssteuerung

3.1  H-Brücken

3.2  Fahrgestell

3.3  Projekt: Einschalten eines Motors mit einem Schalter

3.4  Projekt: Steuern der Motorgeschwindigkeit mit einem Potenziometer

3.5  Projekt: Steuern mehrerer Motoren mit dem Arduino-Board

3.6  Projekt: Steuern von Geschwindigkeit und Richtung

3.7  Projekt: Steuern von Motoren mit seriellen Befehlen

4  Arbeiten mit LCDs

4.1  Konfigurieren des Farb-LCD-Shields

4.2  Monochrom- und Farb-LCD-Shields

4.3  Arbeiten mit Bibliotheken

4.4  Grundlagen der LCD-Steuerung

4.5  Projekt: Erstellen eines Menüs auf dem Monochrom-LCD

4.6  Projekt: Erstellen eines Spielautomaten mit dem Farb-LCD-Shield

4.7  Projekt: Verwenden eines Tastenfelds zur Kommunikation mit einem Farb-LCD

4.8  Projekt: Erstellen eines Roboters nach Vorgabe

5  Integration eines GPS-Moduls

5.1  microSD-Shield

5.2  Das NMEA-Protokoll

5.3  Bibliotheken

5.4  Projekt: Ausgeben von GPS-Rohdaten an Serial Monitor

5.5  Projekt: Ausgeben von GPS-Daten auf einem Monochrom-LCD

5.6  Projekt: Erstellen eines Programms zur Fahrzeugpositionsbestimmung

5.7  Projekt: Protokollieren von GPS-Daten

6  Home-Engineering

6.1  Grundlagen der Spannungsteilung

6.2  Sensoren

6.3  Bibliotheken

6.4  Projekt: Programm zum Messen des Lichteinfalls

6.5  Projekt: Verwenden eines FSR-Drucksensors

6.6  Projekt: Verwenden eines Biegesensors

6.7  Projekt: Programm zur Bestimmung der horizontalen Abweichung

6.8  Projekt: Verwenden eines DHT22-Sensors mit einem Monochrom-LCD

6.9  Projekt: kabellose Temperaturüberwachung

7  Roboterwahrnehmung: Objekterkennung mit Arduino

7.1  Hardware

7.2  Servo-Bibliothek

7.3  Projekt: digitales Lineal

7.4  Projekt: Objektalarmsystem

7.5  Projekt: Solarregler

7.6  Projekt: automatisierter Roboter

8  Entwicklung eines Alarmsystems

8.1  Projekt: Türalarm

8.2  Projekt: Bewegungsmelder mit Datenausgabe an Serial Monitor

9  Arduino und GSM: Fehlermeldungen und Befehle

9.1  Cellular Shield

9.2  Einführung in den AT-Befehlssatz

9.3  Projekt: Senden einer Textnachricht

9.4  Projekt: Türalarm mit SMS-Benachrichtigung

9.5  Projekt: GPS-Tracker

10  Xbox-Controller-Integration mit LabVIEW

10.1  Einführung in die LabVIEW-Umgebung

10.2  LabVIEW-Funktionen

10.3  Projekt: Steuern mit einem Xbox-Controller

11  Arduino-Steuerung mit Bluetooth

Stichwortverzeichnis

Vorwort

Harold Timmis, der Autor des vorliegenden Werks, studierte technische Informatik am Florida Institute of Technology und sammelte dort seine ersten Erfahrungen mit LabVIEW und Arduino. Als Projektmitarbeiter im Bereich Zugtechnik hat er seine Kenntnisse in den Bereichen LabVIEW, Arduino, Datenerfassung und Kontrolltheorie weiter vertieft. Seit 3 Jahren beschäftigt er sich mit LabVIEW und Arduino. In dieser Zeit hat er beruflich an zahlreichen LabVIEW-Projekten mitgewirkt und diverse Arduino-Projekte in seiner Freizeit realisiert.

Das Buch richtet sich an Studenten, Hobbybastler und Ingenieure gleichermaßen. Anhand verschiedener Projekte wird der praktische Einstieg in die Arbeit mit Arduino ermöglicht. Jeder findet heraus, wie er/sie die Plattform am besten für sich nutzen kann. Für den gelungenen Einstieg in die Programmierung mit Arduino unter Verwendung spezifischer Hardware-Komponenten wurden mehrere Einführungsprojekte konzipiert.

Das Werk enthält umfassende Informationen zum Thema Arduino und bietet weit mehr als nur die üblichen Anwendungsbeispiele mit LEDs. Eine Vielzahl von Peripheriegeräten und Technologien wie ein Ultraschallsensor, ein Xbox®-Controller und ein Bluetooth-Modul kommen zum Einsatz. Auch der Laie lernt in diesem Buch, Prozesse nachzuvollziehen, die auch für zukünftige (Nicht-Arduino-)Projekte hilfreich sein können.

Dieses Buch ist für jeden geeignet, der etwas über Arduino und die praktische Arbeit damit lernen möchte. Vorausgesetzt werden grundlegende Kenntnisse im Breadboarding und Löten.

In diesem Buch lernen Sie, wie Sie verschiedene Hardware-Komponenten und Technologien (Bluetooth, GPS, GSM) mit Arduino für sich nutzen können. Sie lernen, den Ablauf Ihrer Arduino-Projekte zu optimieren und sparen so Zeit und Ressourcen.

Mein Dank gilt den Fachkorrektoren Coleman Sellers und Andreas Wischer für Ihr ausführliches Feedback.

Christian Schweinfurth

1  Der Engineering-Prozess

In diesem Kapitel geht es um den eigentlichen Entwicklungsprozess und die Möglichkeiten der Prototypoptimierung. Vorrang hat vor allem die Vermeidung von Hard- und Software-Problemen sowie die Einhaltung eines festen Zeitplans. Die Realisierung der Projekte in diesem Buch erfolgt nach einem vorgegebenen Ablauf, der im Folgenden als Engineering-Prozess bezeichnet wird. Dieser setzt sich folgendermaßen zusammen:

Aus dieser Zusammenfassung lässt sich die Effektivität dieser Vorgehensweise für die Prototyperstellung bereits erahnen. Deshalb wird der Prozess für alle Arduino-Projekte in diesem Buch konsequent eingehalten.

Arduino ist ein frei konfigurierbarer Mikrocontroller und Open Source, d. h., der Quellcode ist frei verfügbar und die integrierte Entwicklungsumgebung (IDE) zum Schreiben der Software kostenlos. Das gilt auch für einen Großteil der verfügbaren Ressourcen. Lediglich der Arduino-Mikrocontroller selbst muss käuflich erworben werden. Für den Arduino-Mikrocontroller finden Sie zahlreiche Ressourcen im Web und in Büchern, z. B. Tutorials zu einzelnen Problemstellungen. Für den Einstieg sind die Seiten www.arduino.cc und http://tronixstuff.wordpress.com/tutorials/ einen Besuch wert. Dieses Buch ist wesentlich mehr als nur eine Sammlung von Tutorials. Hier lernen Sie, den Engineering-Prozess konsequent anzuwenden, um Ihre Projekte übersichtlicher, effizienter und zuverlässiger zu gestalten.

1.1  Zusammenstellen der Hardware

Zunächst gilt es, sich mit den wichtigsten Einzelkomponenten und Materialien vertraut zu machen. Für den erfolgreichen Abschluss aller Projekte in diesem Buch benötigen Sie folgende Hardware-Komponenten:

1.2  Zusammenstellen der Werkzeuge

Sie benötigen eine Reihe von Werkzeugen, die nachfolgend aufgeführt sind.

1.3  Projekt: Blinkende LED

Der Engineering-Prozess dient der umfassenden Optimierung des gesamten Entwicklungsprozesses.

Zusammenstellen der Anforderungen

Wir gehen von dem Fall aus, dass Sie bei einem Kunden die Anforderungen für ein bestimmtes Projekt analysieren sollen. Dieser Teil des Engineering-Prozesses ist von entscheidender Bedeutung: Alle weiteren Schritte hängen davon ab, welche Entscheidungen Sie beim ersten Meeting treffen. Ihr Kunde möchte z. B. eine LED mit einer bestimmten Frequenz aufleuchten lassen, und Sie einigen sich darauf, für diesen Zweck den Arduino-Mikroprozessor zu verwenden. Das Intervall soll 100 ms betragen.

Anlegen einer Checkliste

Aus den Kundenanforderungen und der von Ihnen vorgeschlagenen Lösung erstellen Sie z. B. folgende einfache Checkliste:

Hardware

Software

Auch wenn es sich in diesem Fall um ein sehr einfaches Beispiel handelt, wird das Prinzip dieser Vorgehensweise für den Rest des Buchs beibehalten. Mit einer solchen Checkliste vermeiden Sie z. B., dass Ihr Kunde fortlaufend das Hinzufügen neuer Funktionen erwartet. Das könnte zum Problem werden, weil Sie zusätzliche Arbeitszeit ohne entsprechende Bezahlung auf ein Projekt verwenden würden, das sich möglicherweise endlos hinzieht. Dank der Checkliste wissen Sie und Ihr Kunde genau, was zu tun ist und auf was Sie sich geeinigt haben. Nach dem Anlegen der Checkliste können Sie ein Flussdiagramm erstellen, das Ihnen später dabei hilft, die Software zu debuggen.

01_10.tif

Bild 1.10  Programmablauf des Projekts »Blinkende LED«

Hardware

Als nächster Schritt des Engineering-Prozesses müssen Sie sicherstellen, dass Sie über die richtige Hardware verfügen. Welche Hardware Sie benötigen, sollten Sie beim Zusammenstellen der Anforderungen entscheiden. Alle Hardware-Komponenten müssen kompatibel sein, andernfalls müssen Sie ggf. einzelne Komponenten austauschen. Stimmen Sie sich dabei immer mit dem jeweiligen Unternehmen ab, für das Sie arbeiten.

Konfigurieren der Hardware

Je nach den Hardware-Anforderungen des jeweiligen Projekts kann die Konfiguration ganz unterschiedlich ausfallen. Als Beispiel dient hier die Hardware-Konfiguration für das Projekt »Blinkende LED«.

Für die Einrichtung der Hardware muss die LED an Digital-Pin 13 und den Masse-Anschluss des Arduino-Boards angeschlossen werden.

9781430238850_Fig01-11.tif

Bild 1.11  Einrichten der Hardware für das Projekt »Blinkende LED

9781430238850_Fig01-12.tif

Bild 1.12  Schaltplan des Projekts »Blinkende LED«

Zuerst muss allerdings die Arduino-IDE installiert werden. Rufen Sie dazu die Adresse www.arduino.cc/en/main/software auf. Die Arduino-IDE ist unter Windows Vista, Windows 7, Mac OS X und Linux lauffähig. Nach dem Herunterladen der Arduino-IDE auf den Desktop liegen die Dateien im ZIP-Format vor und müssen entpackt werden. Nach dem Entpacken ist die Arduino-IDE installiert.

Nachdem Sie die Arduino-IDE auf dem Computer installiert haben, gilt es sicherzustellen, dass die IDE richtig konfiguriert ist. Öffnen Sie dazu die Arduino-IDE, und navigieren Sie zu Tools/Serial Port. Wählen Sie den seriellen Port aus, mit dem Ihr Arduino-Board verbunden ist. Wählen Sie anschließend Tools/Boards, und wählen Sie Ihr Arduino-Board aus (in diesem Buch verwenden wir das Modell Arduino Duemilanove ATmega328). Nachdem Sie die Hardware konfiguriert haben, können Sie die Software schreiben.

Schreiben der Software

Dieser Teil des Engineering-Prozesses ist von entscheidender Bedeutung. Ein Blick auf die Checkliste für das Projekt »Blinkende LED« hilft, um über den Funktionsumfang der Software zu entscheiden: Die LED soll in einem Intervall von 100 ms aufleuchten. Die Software könnte demnach folgendermaßen aussehen:

// Code für blinkende LED (Intervall: 100 ms)

const int LEDdelay = 100;  // Verzögerungszeit

void setup()
{
pinMode(13, OUTPUT);  // definiert Pin 13 als Ausgang
}

void loop()
{
digitalWrite(13, HIGH);   // gibt HIGH-Bit an Pin 13 aus
delay(LEDdelay);          // Verzögerung 100 ms
digitalWrite(13, LOW);
delay(LEDdelay)           // löst Syntaxfehler wegen eines 
// fehlenden Strichpunkts aus

} 

Hinweis
Wenn Sie versuchen, dieses Programm für Ihr Arduino-Board zu kompilieren, erhalten Sie eine Fehlermeldung. Das liegt an einem Syntaxfehler, den wir im nächsten Abschnitt beheben werden.

Debuggen der Arduino-Software

Das letzte Programm konnte wegen eines Syntaxfehlers nicht kompiliert werden. Ursache ist falsch formatierter Code, z. B. ein fehlender Strichpunkt wie in unserem Beispiel. Der überarbeitete Code sieht folgendermaßen aus:

// Code für blinkende LED (Intervall: 100 ms)

const int LEDdelay = 100;  // Verzögerungszeit

void setup()
{
pinMode(13, OUTPUT);  // definiert Pin 13 als Ausgang
}

void loop()
{
digitalWrite(13, HIGH);   // gibt HIGH-Bit an Pin 13 aus
delay(LEDdelay);          // Verzögerung 100 ms
digitalWrite(13, LOW);
delay(LEDdelay);          // Strichpunkt jetzt vorhanden, 
// Code kann kompiliert werden

} 

Syntaxfehler gehören noch zu den harmloseren Fehlern. Die problematischsten Fehler sind logische Fehler. Hier wird der Code zwar kompiliert, aber Sie erhalten ein unerwartetes Ergebnis. Ein logischer Fehler liegt z. B. dann vor, wenn Sie ein Größer-als-Symbol (>) anstelle eines Kleiner-als-Symbols (<) verwenden. Bei einem Projekt mit mehreren Tausend Zeilen Code kann die Behebung eines solchen Fehlers ein nahezu unmögliches Unterfangen darstellen.

Hinweis
Im Projekt »Blinkende LED« läge ein logischer Fehler z. B. dann vor, wenn Sie für beide digitalWrite-Funktionen digitalWrite(13, HIGH); schreiben würden.

Logische Fehler in einem Arduino-Programm lassen sich am besten mithilfe eines Flussdiagramms ausfindig machen. Damit können Sie genau nachvollziehen, an welcher Stelle Werte abweichen.

Hardware-Fehlerbehebung

Erste Wahl zum Beheben von Hardware-Fehlern ist das Multimeter. Mit diesem Werkzeug lassen sich Hardware-Schäden bereits im Vorfeld verhindern. Wenn Sie z. B. mithilfe eines Multimeters feststellen, dass für das Projekt »Blinkende LED« die Stromversorgung den gewünschten Wert überschreitet, können Sie einen 22-Ω-Widerstand einbauen, um das Ausbrennen der LED zu verhindern.

Fertiger Prototyp

Nach dem Software Debugging und der Hardware-Fehlerbehebung sollten Sie jetzt einen fertigen Prototyp vorliegen haben, der unter normalen Bedingungen einwandfrei funktioniert. Das Projekt aus in diesem Kapitel war sehr einfach konzipiert. In den folgenden Kapiteln wird die Komplexität stetig zunehmen und der Engineering-Prozess eine immer wichtigere Rolle bei der Code-Optimierung spielen.

2  Arduino-Software-Entwicklung

Nachfolgend werden die verschiedenen Programmierelemente vorgestellt, auf die im Verlauf dieses Buchs immer wieder zurückgegriffen wird. Wenn Sie bereits Erfahrung mit der Programmierung in C haben, wird Ihnen das Programmieren mit Arduino dank der vielen Gemeinsamkeiten nicht schwerfallen. Falls Programmierung neu für Sie ist, erhalten Sie in diesem Kapitel eine Einführung in die wichtigsten Konzepte. Nur wenn Sie die Grundlagen der Arduino-Programmierung beherrschen, bleibt Ihr Code übersichtlich und nachvollziehbar. Außerdem werden Sie nachfolgend die wichtigsten Programmstrukturen erarbeiten, damit Sie sich später auf die Bibliotheken konzentrieren können. Bibliotheken sind Sammlungen von Klassen, Typen oder Funktionen, die über Schlüsselwörter aufgerufen werden können. Mit Bibliotheken können Sie Ihrem Programm vorgefertigte Funktionalität hinzufügen. Damit ermöglichen Bibliotheken das Prinzip der modularen Wiederverwendbarkeit von Code. Hier werden wir uns schwerpunktmäßig mit den Bibliotheken NewSoftSerial, LCD Library und TinyGPS befassen.

2.1  Erste Schritte mit setup und loop()

Ohne setup() und loop() kann kein Arduino-Programm ordnungsgemäß ausgeführt werden. Die Implementierung der beiden Funktionen erfolgt nach diesem Schema:

// Einfaches Arduino-Programm

void setup()
{
// E/As hier einrichten 
}

void loop()
{
// Funktionalität
}

Unter setup() richten Sie E/A-Ports wie LEDs, Sensoren, Motoren und serielle Ports ein. Dieser Vorgang ist wichtig, denn um die Pins auf dem Arduino-Board nutzen zu können, müssen Sie die gewünschten Pins vorher »reservieren«.

loop() enthält den gesamten Code zur Steuerung der E/A-Ports. Hier legen Sie z. B. eine bestimmte Geschwindigkeit für Ihren Motor fest. Das Einrichten und Steuern der E/As wird in den nächsten Abschnitten näher erläutert.

Arduino-Programme enthalten außerdem diverse Unterfunktionen. Dabei handelt es sich um nützliche Sonderfunktionen, die Sie innerhalb von loop()-Anweisungen oder in den entsprechenden Unterfunktionen aufrufen können. Um eine Unterfunktion verwenden zu können, müssen Sie die Funktion zuerst am Anfang des Programms initialisieren. Diese erste Deklaration nennt sich Funktionsprototyp.

Beispiel:

// Funktionsprototyp
void delayLED();

void setup()
{

}

void loop()
{

}

// Unterfunktion

void delayLED()
{
// Code, der im Anschluss an die loop()-Struktur ausgeführt wird 
}

Initialisieren von Variablen

Variablen sind die grundlegendsten Programmierbausteine. Mit ihnen lassen sich Daten zwischen einzelnen Programmbestandteilen übergeben. Alle Programme in diesem Buch verwenden Variablen. In der Arduino-Programmiersprache stehen verschiedene Variablentypen zur Verfügung.

Name

Wert

Wertebereich

char

'a'

–128 bis 127

byte

1011

0 bis 255

int

-1

–32.768 bis 32.767

unsigned int

5

0 bis 65.535

long

512

-2.147.483.648 bis 2.147.483.647

unsigned long

3.000.000

0 bis 4.294.967.295

float

2,513

–3,4028235E+38 bis 3,4028235E+38

double

2,513

–3,4028235E+38 bis 3,4028235E+38

Nachdem Sie nun wissen, welche Variablentypen es gibt, gilt es, diese Variablen zu deklarieren. Für die Deklaration der Variablen müssen Sie wissen, in welchem Bereich sie verwendet werden können. Anschließend müssen Sie den Bereich angeben (deklarieren), der Ihren Anforderungen entspricht. Hier wird zwischen zwei grundsätzlichen Bereichen für Variablen unterschieden: lokal und global. Eine lokale Variable lässt sich nur innerhalb des für sie definierten Bereichs verwenden. Z. B. werden in einer Schleife die dort deklarierten Variablen nur innerhalb der Klammern verwendet, die Variablen sind also für diese Schleife lokal. Eine globale Variable kann von jedem beliebigen Ort des Programms aufgerufen werden. Zur Definition einer globalen Variable müssen Sie die Variable zu Beginn des Programms initialisieren. Das folgende Programm zeigt, wie Sie lokale und globale Variablen initialisieren:

// Variable initialisieren

int x;  // Diese Variable wird global deklariert und kann im 
// gesamten Programm aufgerufen werden.

void setup()
{

}

void loop()
{
x = 1 + 2;  // weist x den Wert 3 zu
for(int i; i <= 100; i++)
{
// i ist eine lokale Variable und kann nur innerhalb 
// dieser Schleife aufgerufen werden.
} 

} 

Alle anderen Deklarationen erfolgen auf die gleiche Weise, solange Sie keine Arrays verwenden. Mit Arrays können Sie mehrere Werte vom selben Typ übergeben. Wenn Sie z. B. mehrere digitale Pins übergeben möchten, müssen Sie nicht jeden Pin einzeln deklarieren:

int pins[] = {13,9,8};

Sie sollten auch die Größe des Arrays deklarieren, wie im folgenden Beispiel:

const int NumOfPins = 3;
int pins[NumOfPins] = {13,9,8};

So können Sie auf die Informationen im Array zugreifen und anschließend an einen digitalen Pin oder eine andere Instanz übergeben.

Hinweis
Whitespacing bedeutet das Hinzufügen von Leerzeilen und Leerzeichen, um den Code lesbarer zu gestalten.

Bedingte Anweisungen

Mit bedingten Anweisungen steuern Sie den Programmfluss. Wenn z. B. ein Motor nur eingeschaltet werden soll, nachdem ein Knopf gedrückt wurde, können Sie das mit einer bedingten Anweisung umsetzen. Folgende bedingte Anweisungen sind für uns von Interesse: if, if-elseif, if-else und switch.

if-Anweisungen sind wichtige bedingte Anweisungen, die für nahezu jede boolesche Operation und verschiedene andere Zwecke verwendet werden können, z. B. zur Grenzwertbestimmung. Im Folgenden ein Beispiel für eine if-Anweisung:

int i;
if (i < 10)
{
i++;
}

Sie können am Ende Ihrer if-Anweisung weitere elseif-Anweisungen hinzufügen, um weitere Bedingungen hinzuzufügen, oder Sie erstellen eine if-elseif-Anweisung:

int i;
if (i < 10)
{
i++;
}
else if (i > 10)
{
i--;
}

Ein praktisches Anwendungsbeispiel für eine bedingte Anweisung ist z. B. das Auslesen eines Potenziometerwerts:

potValue = analogRead(potPin);

if (potValue <= 500)
{
digitalWrite(motorpin, 1);
}
else
{
digitalWrite(motorpin, 0);
}

Hinweis
Sie müssen die Arduino-Pins im Vorfeld festlegen, bevor Sie die Pins in einer Schleife aufrufen.

Eine switch-Anweisungswitch