Upload
tranhuong
View
216
Download
0
Embed Size (px)
Citation preview
LeseprobeMit diesem Buch bauen, programmieren und erweitern Sie Ihren eigenen Roboter Schritt für Schritt. Dank dieser Leseprobe kön-nen Sie direkt einsteigen: In einem ersten Praxisprojekt steuern Sie die LED auf dem Arduino-Board an. Außerdem enthält diese Leseprobe das Inhalts- und Stichwortverzeichnis des Buches.
Markus Knapp
Roboter bauen mit Arduino – Die Anleitung für Einsteiger411 Seiten, broschiert, in Farbe, 2. Auflage 2016 29,90 Euro, ISBN 978-3-8362-4351-3
www.rheinwerk-verlag.de/4242
»Einleitung«»Erste Praxis« (Auszug)
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Wissen, wie’s geht.
15
Kapitel 1
Don’t panic! – Einleitung»Als der Pflug erfunden wurde, haben einige gesagt, das ist schlecht. Dasselbe war
der Fall beim Buch, beim Telefon, beim Auto, beim Fernsehen und bei fast jeder neuen
Technologie. Das war immer so und wird immer so sein. Die nächste Generation hat
die neue Technologie dann aber jedes Mal fast schon als völlig selbstverständlich
betrachtet.« – Bill Gates
Sie haben sich also entschlossen, einen Arduino-Roboter zu bauen. Das ist gut. Denn Sie
folgen damit nicht nur einem aktuellen Trend. Die Robotik wird uns in Zukunft immer
mehr im Alltag begleiten. Denken Sie nur einmal daran, wie preiswert Staubsaugroboter
bereits zu kaufen sind oder wie viele Firmen bereits an selbstfahrenden Autos arbeiten.
Einen eigenen Roboter von Grund auf zu bauen geht weit darüber hinaus, sich einfach
»nur« mit Elektronik und Modellbau zu beschäftigen. Aber das soll Sie nicht abschre-
cken. Denn in diesem Buch wird Ihnen auf leicht verständliche Art und Weise erklärt,
wie Sie einen autonomen Roboter bauen können, der mit der berühmten Arduino-Elek-
tronikplattform vollautomatisch angesteuert wird. Und ganz nebenbei können Sie die
Arduino-Elektronik für praktisch unendlich viele weitere Bastelprojekte verwenden.
Und wer weiß? Vielleicht legt dieses Buch den Grundstein für eine große Bastler- oder
sogar Entwicklerkarriere? Aus welchem Grund auch immer Sie sich dafür entschieden
haben: Ich verspreche Ihnen, dass dies kein langweiliges Fachbuch ist, gespickt mit Hun-
derten Formeln und langatmigen theoretischen Abhandlungen! Ich werde Sie stattdes-
sen in kleinen, einfachen und vor allem unterhaltsamen Schritten an den Bau Ihres
persönlichen Arduino-Roboters heranführen. Sie finden hier zahlreiche praktische
Experimente zum Nachbauen und Ausprobieren und einfache Programme, die alle
genau erklärt werden. Natürlich gibt es auch ein wenig Theorie. Aber eben nur so viel,
wie nötig ist. Und: Keine Panik, es ist wirklich simpel, einen Roboter zu bauen. Sie wer-
den erstaunt sein! Aber nun genug der einleitenden Worte. Viel Spaß beim Lesen, Aus-
probieren und Basteln!
1 Don’t panic! – Einleitung
16
1.1 Für wen ist dieses Buch geeignet?
Dieses Buch ist für jeden geeignet, der auf einfache und anschauliche Art lernen möchte,
einen Arduino-gesteuerten Roboter selbst zu bauen.
1.1.1 Programmierkenntnisse?
Sie benötigen für das Buch keine Programmierkenntnisse, denn alle Beispielpro-
gramme werden fertig mitgeliefert und Sie werden Schritt für Schritt an alle Befehle
herangeführt. Wenn Sie bereits Programmiererfahrung mit C oder C++ haben, wird es
Ihnen umso leichter fallen – es ist aber keine Bedingung.
1.1.2 Altersklassen
Dieses Buch ist für nahezu alle Altersklassen geeignet. Vielleicht sind Sie bereits im
Ruhestand und möchten ein neues Hobby beginnen. Dieses Buch macht es möglich.
Oder Sie sind noch Schüler und wollen sich mit der Robotik beschäftigen. Dieses Buch
erspart Ihnen das mühsame Sammeln von Informationen aus dem Internet, da Sie alles,
was Sie wissen müssen, strukturiert und übersichtlich zusammengefasst in diesem
Buch finden.
Sicherheit
An verschiedenen Stellen in diesem Buch könnte es für sehr junge Leser notwendig
sein, dass die Eltern oder ältere Freunde ein wenig beim Aufbau helfen. Das ist aber nur
vereinzelt der Fall und beschränkt sich nur auf Dinge, die Kinder nicht allein machen
sollten, wie zum Beispiel einen heißen Lötkolben benutzen. Ich werde Sie in den jewei-
ligen Kapiteln deutlich darauf hinweisen.
Eine Sicherheitsbrille für wenige Euro ist immer hilfreich, wenn Sie zum Beispiel ein
Drahtende mit einem Werkzeug abkneifen – so kann im wahrsten Sinne des Wortes
nichts ins Auge gehen. Aber auch das wird Ihnen in Kapitel 5, »Die kleine Werkstatt«,
genau gezeigt und auch, worauf Sie dabei achten sollen.
Ich kann Ihnen außerdem versichern, dass alle Experimente und Beispiele in diesem
Buch mit einem absoluten Bastel- und Robotikanfänger getestet wurden. Er hat alle
Experimente mit Leichtigkeit umgesetzt, und es hat ihm auch noch viel Spaß gemacht.
Und um den Spaß soll es doch in diesem Buch auch gehen!
1.3 Das Roboterkit zum Buch
17
1.1.3 Handwerkliches Geschick und Elektronikwissen?
Sie benötigen für dieses Buch kein besonderes handwerkliches Können. Die meisten
Schritte bestehen aus einfachem Stecken von Kabeln oder aus dem Umgang mit einem
Schraubendreher oder einer Schere. Das an wenigen Stellen erforderliche Verlöten von
Kabeln wird Ihnen im jeweiligen Kapitel ausreichend erläutert. Auch spezielles Wissen
über elektronische Bauteile ist nicht notwendig. Alle Teile, die Sie für Ihren Roboter
benötigen, werden genau erklärt, und Sie lernen ihre Funktion in praktischen Beispie-
len kennen.
1.2 Wie sollte das Buch gelesen werden?
Im Idealfall lesen Sie dieses Buch von Anfang an und der Reihe nach durch, da die Glie-
derung der einzelnen Kapitel aufeinander aufbaut. So lernen Sie beispielsweise erst,
welche Arten von Motoren es gibt, danach, wie Sie einen Motor ansteuern, und später,
wie Sie die Motoren für Ihren Roboter nutzen. Es hilft Ihnen als Einsteiger also sehr,
wenn Sie erst ein wenig Theorie lernen und später das Erlernte ausprobieren. Vielleicht
wissen Sie aber auch bereits das eine oder andere über Roboter oder kennen bestimmte
elektronische Bauteile. Oder Sie haben manchmal keine Lust, alles im Detail zu verste-
hen, und wollen sofort mit dem Basteln loslegen. All das geht mit diesem Buch.
Mir geht es oft auch so, dass ich Sachen lieber gleich »in die Hand« nehmen und alles
zusammenbauen will. Wenn aber dann nicht alles auf Anhieb funktioniert, ersparen Sie
sich viel Zeit bei der Fehlersuche, wenn Sie vorher etwas Theorie »gebüffelt« haben. Ich
kann daher aus eigener Erfahrung sagen, dass es Ihnen wahrscheinlich mehr Freude
bereiten wird, wenn Sie erst verstehen, wie etwas funktioniert, und es danach erfolg-
reich in die Praxis umsetzen.
Wie gesagt, Sie können im Buch gerne zwischen den Kapiteln hin- und herspringen. Es
wird Ihnen aber am Ende leichter fallen, es der Reihe nach durchzulesen.
1.3 Das Roboterkit zum Buch
Bestimmt sind Sie schon neugierig, was Sie so alles für den Bau Ihres Arduino-Roboters
benötigen. Nun, ich will Sie nicht länger auf die Folter spannen. Der Roboter, den Sie in
diesem Buch bauen werden, entstand ursprünglich durch die Online-Community Let’s
Make Robots1. Dies ist eine Internetplattform, auf der sich Robotik-Interessierte austau-
1 http://letsmakerobots.com
1 Don’t panic! – Einleitung
18
schen und ihre selbst gebastelten Roboter mit Bildern vorstellen können. Die Bauanlei-
tung in diesem Buch basiert auf dem dort vorgestellten Roboter.
1.3.1 Welche Teile benötige ich zum Bau des Roboters?
Sie können sich alle Teile, die Sie zum Bau Ihres Arduino-Roboters benötigen, selbst
zusammenstellen. Die Liste der verwendeten Bauteile finden Sie in Abschnitt 4.2.4,
»Treiberinstallation«. Alternativ können Sie den in diesem Buch beschriebenen Robo-
ter vollständig als Bausatz bei watterott electronic2 bestellen.
Sonstige elektronische Bauteile
Neben den Teilen für den Roboter sind für einige Lernbeispiele noch einige weitere elek-
tronische Bauteile notwendig. Dies sind zum Beispiel ein Taster, ein Schalter, eine LED
und ein Widerstand. Sie benötigen diese nicht zwingend, aber sie helfen Ihnen, die
Funktionsweise Ihres Roboters später besser zu verstehen. Die Teile werden jeweils vor
jedem Experiment benannt und sind hier gesammelt für Sie aufgeführt:
Checklisteein Widerstand, 10 kΩ, 5 %
ein Potenziometer (z.B. 10 kΩ)
ein beliebiger Schalter
ein beliebiger Taster (Schließer)
ein einfacher Piezo-Summer
ein paar dünne Leitungen oder Drähte (»Jumper Wire«)
eine Steckplatine (auch Steckbrett, Steckboard oder Protoboard
genannt)
In Kapitel 10, »Pimp My Robot! – Mögliche Erweiterungen«, können Sie den Roboter um
ein Display mit Tasten erweitern. Es handelt sich hierbei um
ein Adafruit RGB LCD Shield mit Keypad3.
2 http://www.watterott.com/de/StarterKit-Roboter
3 https://learn.adafruit.com/rgb-lcd-shield/overview
1.5 Danksagung
19
1.4 Die Webseite zum Buch
Alle Programme in diesem Buch sind Open Source und daher frei verfügbar. Sie finden
sie auf meiner Webseite zum Download:
http://robotiklabor.de/literatur
1.4.1 Robotiklabor – der Podcast rund um Robotikthemen
Wenn Sie sich auch sonst für Robotik im weitesten Sinne interessieren, möchte ich
Ihnen meine monatlich erscheinende Sendung Robotiklabor – Deutschlands größter
Podcast rund um Robotikthemen4 ausdrücklich ans Herz legen. Dieser Podcast infor-
miert in lockerer Unterhaltungsrunde über aktuelle Themen rund um die Robotik und
um das Elektronikbasteln – gratis, monatlich und mit viel Spaß. Wir greifen hier The-
men aller Art für Einsteiger und Profis auf und senden zudem live mit Chat sowie als
Aufzeichnung zum Download. Das Schöne an einem Audio-Podcast ist ja, dass Sie ihn
wann und wo Sie wollen hören oder auch mal unterbrechen können – wie dieses Buch.
1.5 Danksagung
Als Erstes möchte ich an dieser Stelle meinem Lektor Sebastian Kestel danken, der mich
motivierte, dieses Buch zu schreiben. Mein Dank geht in gleicher Weise an das gesamte
Team vom Rheinwerk Verlag. Ebenfalls möchte ich mich bei meinem Arbeitgeber
bedanken, der mir die nebenberufliche Tätigkeit ermöglichte. Auch meiner Familie gilt
an dieser Stelle großer Dank: Während der Zeit des Schreibens haben wir uns leider viele
Monate nicht sehen können. Ganz besonders danke ich meinen Freunden Alexander
Moser, Berit Behnke und Oliver Bock. Ihr habt mich so vielfältig und auf so großartige
Weise unterstützt, dass ich bis jetzt nicht weiß, wie ich euch etwas in angemessener Art
zurückgeben kann. Der größte Dank allerdings geht an meine wunderbare Frau Stepha-
nie. Ohne deine unglaubliche Geduld, deine einmalige Unterstützung und dein immer-
währendes Verständnis würde es dieses Buch nicht geben.
4 http://robotiklabor.de
179
Kapitel 7
Los geht’s! – Erste PraxisSie haben bis zu diesem Kapitel durchgehalten. Das ist ein gutes Zeichen. Denn Sie
haben es trotz viel Theorie bis hierher geschafft, und nun soll es endlich mit prakti-
schen Experimenten losgehen.
Sie werden gleich Ihr erstes Programm für den Arduino erstellen und das Ergebnis auf
dem Board sehen können.
7.1 Der erste Kontakt mit der Hardware
Das erste Experiment wird ganz einfach daraus bestehen, die orange LED auf Ihrem
Arduino-Board zum Blinken zu bringen. Traditionell wird das erste eigene Programm,
das eine LED zum Blinken bringt, Blinky genannt. Das ist vielleicht nicht sehr einfalls-
reich, aber dafür einprägsam.
7.1.1 »Blinky« – Ansteuerung einer LED
Für Ihr erstes Experiment benötigen Sie folgende Teile:
Checklisteein Arduino-Board
ein passendes USB-Kabel
Schließen Sie das Arduino-Board mit einem USB-Kabel an Ihren Computer an. Das pas-
sende USB-Kabel hat auf der »Computerseite« einen USB-A-Stecker und auf der
»Arduino-Seite« einen USB-B-Stecker und ist in Abbildung 7.1 dargestellt.
7 Los geht’s! – Erste Praxis
180
Abbildung 7.1 USB-B-Stecker (links) und USB-A-Stecker (rechts)
Wenn Sie den Arduino so, wie er »ab Werk« geliefert wird, mit Ihrem Computer verbin-
den, blinkt normalerweise die orange LED auf der Platine im Sekundenrhythmus. Sie
finden die LED links oben auf der Platine. Sie ist mit dem Buchstaben »L« beschriftet
(siehe Abbildung 7.2).
Abbildung 7.2 Die orange leuchtende LED »L«
Sollte auf Ihrer Platine nur die grüne ON-LED leuchten, die orange LED aber nicht,
machen Sie sich keine Sorgen. Denn Sie erstellen jetzt ja Ihr erstes Programm, das die
LED zum Blinken bringen wird. Sollte die LED bei Ihnen bereits blinken, so ist wahr-
scheinlich bereits ein Programm ab Werk auf dem Arduino. Das macht nichts, denn Sie
lernen dann jetzt, wie Sie den Blinkrhythmus verändern können. In Listing 7.1 sehen Sie
7.1 Der erste Kontakt mit der Hardware
181
das vollständige Programm dazu. Sie finden die Datei Blinky.ino wie immer zum Down-
load unter http://robotiklabor.de/literatur/.
// An Pin 13 ist auf den meisten Arduino-Boards// eine LED angeschlossen.//// Definieren der Variable 'led'// und Setzen auf den Wert 13 (Pin 13)int led = 13;
// Die setup-Funktion läuft einmal zu Beginn.void setup()// Den digitalen PIN zur Ausgabe (Output) festlegen.pinMode(led, OUTPUT);
// Die loop-Routine läuft immer wieder - unendlich:void loop()// schalte die LED an (HIGH)digitalWrite(led, HIGH);
// warte eine halbe Sekundedelay(500);
// schalte die LED aus (LOW)digitalWrite(led, LOW);
// warte eine halbe Sekundedelay(500);
Listing 7.1 Ihr erstes Arduino-Programm: »Blinky«
Wie Sie sehen, besteht das Programm aus nur wenigen Zeilen, wovon die meisten nur
aus Kommentaren bestehen. Zur Erinnerung: Kommentare, die sich auf eine Zeile
beschränken, beginnen jeweils mit zwei Schrägstrichen. Dabei ist es unerheblich, ob sie
am Anfang oder Ende einer Zeile stehen:
// Dies ist ein Kommentar.x = 1; // Das ist noch ein Kommentar.
7 Los geht’s! – Erste Praxis
182
Nun aber zur Erklärung der Software im Detail. Variablen haben Sie bereits in Abschnitt
6.1, »Stil«, kennengelernt. Die erste Anweisung im Listing definiert die Variable led und
gibt ihr den Wert 13:
int led = 13;
Auf den meisten Arduino-Platinen ist Pin 13 des Steckers intern mit einer LED und
einem Widerstand verdrahtet. Das ist sehr praktisch, denn die LED kann so leicht zu
Kontrollzwecken verwendet werden oder um einen bestimmten Status zu signalisieren.
Warum eine LED einen Widerstand benötigt, erkläre ich Ihnen später in Abschnitt 7.1.4,
»Herr Ohm und sein Gesetz«, denn nun soll zunächst die Praxis im Vordergrund ste-
hen. Darum gehen wir jetzt schnell zu den weiteren Programmanweisungen im Code:
void setup()// Den digitalen PIN als Ausgabe (Output) festlegen.pinMode(led, OUTPUT);
Immer, wenn Sie den Arduino einschalten, werden die Zeilen der setup-Funktion ein-
malig ausgeführt. Dies kann durch Anschluss an einen Computer per USB-Kabel oder
über die Stromversorgungsbuchse oder nach Drücken des Tasters Reset geschehen. Wie
bereits in Abschnitt 4.2.1 erläutert, können die Pins des Arduino-Boards als Eingang
(INPUT) oder Ausgang (OUTPUT) betrieben werden. Das heißt, es wird entweder eine
Spannung erwartet (Eingang) oder eine Spannung am Pin ausgegeben (Ausgang). Da Sie
in diesem Fall eine LED einschalten wollen, benötigt diese eine Spannung. Dementspre-
chend wird der Pin des Arduino als Ausgang geschaltet (OUTPUT), um eine Spannung
per HIGH auszugeben. Nun zum »Hauptprogramm«:
void loop()// schalte die LED an (HIGH)digitalWrite(led, HIGH);
// warte eine halbe Sekundedelay(500);
// schalte die LED aus (LOW)digitalWrite(led, LOW);
// warte eine halbe Sekundedelay(500);
7.1 Der erste Kontakt mit der Hardware
183
Zur Erinnerung: Die loop-Funktion wird automatisch abgearbeitet, nachdem das setupbeendet ist. Zum Schalten einer Spannung auf einen der Ausgänge dient der Befehl1 digi-talWrite. Wie Sie sehen, wird die LED als Erstes mit HIGH eingeschaltet. Danach wartet der
Arduino für eine halbe Sekunde, bevor er den nächsten Befehl ausführt. Dazu dient die
Anweisung delay(500). Denn der Wert für delay wird in Millisekunden angegeben, und
500 Millisekunden entsprechen 0,5 Sekunden. Nachdem der Arduino gewartet hat, wird
die LED mit LOW ausgeschaltet. Und wieder wartet das Board danach für 500 Millisekun-
den durch den zweiten delay(500)-Befehl. Wenn das Ende der loop-Funktion bei der
schließenden geschweiften Klammer erreicht ist, beginnt die Schleife von vorne und
schaltet die LED mit HIGH wieder an. Und so weiter. Ganz einfach, oder? Jetzt, wo Sie wis-
sen, wie das Programm funktioniert, wollen Sie es natürlich endlich in Aktion sehen.
7.1.2 Übertragen der Software auf das Arduino-Board
Das Übertragen der Software auf das Arduino-Board wird übrigens auch flashen
genannt, weil hier ein sogenannter Flash-Speicher mit Daten beschrieben wird.
Experten-Wissen zum Angeben
Die Software, die Sie auf das Arduino-Board übertragen, wird auch Firmware genannt.
Sie haben davon vielleicht schon einmal gehört. Eine Firmware besteht aus dem Pro-
grammcode und allen darin gespeicherten Daten und bleibt beim Ausschalten des
Gerätes dauerhaft bestehen. »Dauerhaft« deshalb, weil sie nicht so einfach gelöscht
werden kann – außer eben mit einem Computer und der passenden Software (hier der
Arduino-Software). Alle Geräte, die einen Mikrocontroller enthalten, haben auch eine
Firmware im Speicher, die beim Einschalten ausgeführt wird – zum Beispiel Ihre Wasch-
maschine, die verschiedene Waschprogramme ausführen kann, eine Verkehrsampel,
die ein Tages- oder Nachtprogramm ausführen kann, oder vielleicht Ihr Anzeigeinstru-
ment im Auto, das live den Benzinverbrauch ausrechnen und anzeigen kann.
Öffnen der Datei
Um die Software nun endlich zu übertragen, laden Sie die Datei Blinky.ino herunter und
starten die Arduino-Software. Öffnen Sie die heruntergeladene Datei Blinky.ino im
Menü über Datei Öffnen (siehe Abbildung 7.3).
1 Genau genommen ist es kein Befehl, sondern eine Funktion. Umgangssprachlich sprechen aber die
meisten von einem Befehl oder einer Anweisung – auch wenn es nicht ganz korrekt ist.
7 Los geht’s! – Erste Praxis
184
Abbildung 7.3 Öffnen einer vorhandenen Datei in der Arduino-Software
Ihre Arduino-Software sollte jetzt so wie in Abbildung 7.4 aussehen.
Abbildung 7.4 Das geladene Programm »Blinky« in der GUI
7.1 Der erste Kontakt mit der Hardware
185
Auswahl des Arduino-Boards
Damit die Arduino-Software weiß, auf welchen Typ Arduino-Board das Programm über-
tragen werden soll, wählen Sie einmalig im Menü Werkzeuge Board den Punkt
Arduino/Genuino Uno aus (siehe Abbildung 7.5).
Abbildung 7.5 Auswahl des passenden Arduino-Boards
Auswahl des USB-Anschlusses
Nun müssen Sie noch den passenden USB-Anschluss Ihres Computers auswählen. Dies
geschieht wieder unter dem Menüpunkt Werkzeuge und dann durch den Unterpunkt
Port. Unter macOS heißen die USB-Ports in der Arduino-GUI /dev/cu.usbmodemxxxx.
Je nach Board ist der letzte Teil des Namens mit »xxxx« immer unterschiedlich und
könnte zum Beispiel /dev/cu.usbmodem1411 oder auch /dev/cu.usbmodem1421 lauten.
Wenn Sie sich bei der Auswahl des richtigen Anschlusses nicht sicher sind, beenden Sie
die Arduino-Software, ziehen alle nicht benötigten USB-Geräte von Ihrem Computer ab
und lassen nur das Arduino-Board verbunden. Dann starten Sie die Arduino-Software
erneut und schauen, was an Anschlüssen zur Auswahl steht. Unter Windows heißen die
Anschlüsse für das Arduino-Board zum Beispiel COM2 oder COM3, wobei hier die Ziffer
im Namen variiert. Solange Sie das gleiche Board immer am gleichen USB-Anschluss
Ihres Computers verwenden, müssen Sie diese Einstellung nur einmal durchführen. Ihr
7 Los geht’s! – Erste Praxis
186
Arduino-Board wird dann automatisch erkannt. Seit einiger Zeit versucht die Arduino-
Software sogar, das angeschlossene Board selbstständig zu erkennen. So steht dann im
Menü zum Beispiel Werkzeuge Port /dev/cu.usbmodem1411 (Arduino/Genu-
ino Uno), wenn ein Arduino/Genuino Uno erkannt wurde.
Übertragen der Software
Der einfachste Teil ist nun das Übertragen der Software auf das Board. Klicken Sie hierzu
einfach auf die Upload-Schaltfläche in der Arduino-Software. Der Rest geht automa-
tisch: Die Software prüft den geschriebenen Programmcode vor dem Übertragen noch
einmal auf Fehler, wandelt ihn in ein für den Mikrocontroller verständliches Format um
(kompiliert und linkt) und überträgt das Ergebnis auf das Arduino-Board (flasht). Abbil-
dung 7.6 zeigt die GUI, wenn der Vorgang erfolgreich abgeschlossen wurde: In der Sta-
tuszeile unten steht dann »Upload abgeschlossen.«.
Abbildung 7.6 Das Übertragen der Arduino-Software (Upload) ist beendet.
Hat alles funktioniert, blinkt die LED auf dem Arduino-Board nun in einem Rhythmus
von 0,5 Sekunden. Herzlichen Glückwunsch! Sie haben gerade das erste Mal Ihren
Arduino erfolgreich programmiert und damit die Grundlage für alle weiteren Schritte
auf dem Weg zu Ihrem eigenen Roboter gelegt! Weiter geht’s.
7.1.3 Fehlersuche
Falls Sie eine Fehlermeldung erhalten haben, schauen Sie auf die Arduino-Projektseite.
Dort gibt es einen ausführlichen Troubleshooting-Bereich2. Die dort beschriebenen
2 http://arduino.cc/en/Guide/Troubleshooting
7.1 Der erste Kontakt mit der Hardware
187
Lösungen werden Ihnen helfen, die meisten Probleme zu beseitigen. Alternativ kopie-
ren Sie einfach die erste Fehlermeldung aus der Arduino-Software in die Suchmaschine
Ihrer Wahl. Sie können davon ausgehen, dass bereits vor Ihnen jemand dieses Problem
hatte und eine Lösung im Internet zu finden ist.
Übung macht den Meister
Experimentieren Sie mit dem Programm Blinky ruhig noch etwas herum. Lassen Sie die
LED zum Beispiel ganz schnell blinken oder nur alle zwei Sekunden. Oder lassen Sie die
LED nur ganz kurz blinken und dann eine lange Pause einlegen. Übertragen Sie jedes
Mal den geänderten Code auf das Arduino-Board, und schauen Sie sich die Auswirkun-
gen sofort an. Sie bekommen so ein Gefühl dafür, wie leicht es ist, Änderungen vorzu-
nehmen und diese per Upload zu übertragen.
7.1.4 Herr Ohm und sein Gesetz
Wie ich bereits in Abschnitt 7.1.1 erwähnt habe, hat die orange LED an Pin 13 des Arduino-
Boards einen Vorwiderstand. Was hat es nun mit dem Widerstand auf sich? Vielleicht
haben Sie ja im Zusammenhang mit Widerständen schon einmal vom ohmschen
Gesetz3 gehört.
Das ohmsche Gesetz
Das ohmsche Gesetz beschreibt, wie sich der durch ein Objekt fließende Strom in seiner
Stärke verändert, wenn eine elektrische Spannung an ein Objekt anlegt und diese Span-
nung verändert wird.
Anders formuliert: Die Stärke des elektrischen Stroms, der durch ein Objekt fließt, ver-
ändert sich im gleichen Verhältnis (proportional) wie die elektrische Spannung am
Objekt. Das bedeutet automatisch, dass der Widerstand des Objekts gleich bleibt (kons-
tant), egal wie sich Spannung und Strom ändern. Dieser Zusammenhang kann in einer
einfachen Formel beschrieben werden. Wird die Stromstärke mit I, die Spannung mit U
und der Widerstand mit R bezeichnet, lautet sie:
R = U / I
bzw.:
U = R × I
bzw.:
I = U / R
3 Benannt nach Georg Simon Ohm
7 Los geht’s! – Erste Praxis
188
Praktische Anwendung des ohmschen Gesetzes
Und wozu brauchen Sie das nun? Ganz einfach. Eine LED zum Beispiel ist ein verhältnis-
mäßig empfindliches Bauteil (auch wenn LEDs heutzutage an jeder Stelle eingesetzt
werden). Denn eine LED verträgt nur eine geringe maximale elektrische Spannung U
und eine maximale Stromstärke I.
Vorsicht!
Fließt ein zu hoher Strom durch eine LED, geht sie sehr schnell kaputt. Sie kann dabei
sogar explodieren. Und wenn dabei die Kunststoffummantelung in mehrere Teile zer-
platzt, kann das im wahrsten Sinne des Wortes schnell ins Auge gehen. Seien Sie also
bitte sehr vorsichtig, und schauen Sie in das Datenblatt des Herstellers der LED, welche
Spannungen und Ströme die LED maximal verträgt!
Vorwiderstände
Um den Strom zu begrenzen, der durch eine LED fließt, wird ein Widerstand R benötigt,
der vor die LED geschaltet wird (Vorwiderstand). Und um die Höhe des Widerstandes zu
berechnen, wird – Überraschung! – das ohmsche Gesetz mit obigen Formeln benutzt.
Die Einheit des Widerstandes lautet übrigens Ohm (Ω). Wie praktisch, was?
Eine orange Standard-LED wird typischerweise mit einer Spannung von 2,2 Volt (V) und
einem Strom von 0,02 Ampere (A) betrieben. 0,02 A entsprechen 20 Milliampere bzw.
20 mA. Wollen Sie so eine LED also an einen Ausgang des Arduino anschließen, der ja 5 V
Spannung liefert (siehe Abschnitt 4.2.1), benötigen Sie einen Widerstand, um den Strom
und die Spannung an der LED zu begrenzen. Welchen Widerstandswert muss der Wider-
stand haben? Nun, wenn am Ausgang des Arduino 5 V »herauskommen«, die LED aber
nur 2,2 V als Spannung benötigt, bleibt ein Unterschied von 5 V – 2,2 V = 2,8 V übrig, der
am Widerstand R verbraucht4 werden muss. Da Sie jetzt wissen, dass durch die LED nur
20 mA an Strom I fließen dürfen, haben Sie alle Werte zusammen, die Sie zur Berech-
nung des benötigten Widerstandes brauchen:
U = 2,8 V
I = 0,02 A
R = ? Ω
4 Tatsächlich wird Strom nicht »verbraucht«, denn jede Art von Energie geht nie verloren. Sie wird nur
in eine andere Form umgewandelt. In unserem Beispiel findet eine Umwandlung in Wärme statt, die
jedoch so gering ist, dass sie nicht spürbar ist. Umgangssprachlich spricht dennoch jeder vom »Ener-
gieverbrauch«.
7.1 Der erste Kontakt mit der Hardware
189
Eingefügt in die Formel des ohmschen Gesetzes, sieht das so aus:
R = U / I = 2,8 V / 0,02 A = 140 Ω
Sie benötigen somit einen Widerstand von mindestens 140 Ohm (140 Ω), damit die LED
beim Anschluss an eine Spannung von 5 V – sprich: an einem der Ausgänge des
Arduino-Boards – nicht zerstört wird. Da Widerstände nicht mit allen Werten produ-
ziert werden, sondern nur in bestimmten Reihen5 erhältlich sind, ist der nächsthöhere
Wert hier 150 Ω. In der Praxis macht das für die Helligkeit der LED keinen Unterschied.
Wichtig!
Bitte denken Sie immer daran, dass jede LED andere Spannungen und Ströme verträgt.
Hier hilft Ihnen das Datenblatt des Herstellers weiter, das Sie in der Regel online finden,
oft auch dort, wo Sie die LEDs gekauft haben. Die LED-Spannung wird übrigens meist
mit Uf angegeben (Uf = forward voltage).
Widerstandsberechnung für LEDs vollautomatisch
Falls Sie sich nicht die Mühe machen möchten, LED-Vorwiderstände jedes Mal »von
Hand« zu berechnen, so finden Sie im Internet passende Seiten6, die Ihnen die Berech-
nung abnehmen.
Anschluss weiterer LEDs
Möchten Sie auf dem Arduino-Board eine weitere LED an einen anderen der Pins
anschließen, sähe das auf einer Steckplatine so wie in Abbildung 7.7 aus.
Widerstände und ihre Farbcodierung
Der Wert von Widerständen ist nicht als Zahlenwert auf sie aufgedruckt, sondern
anhand von farbigen Ringen kodiert. Eine Erläuterung dazu finden Sie im Internet.7 Für
den Aufbau des Roboters ist das in diesem Buch nicht relevant.
5 https://de.wikipedia.org/wiki/Widerstandsreihe
6 Zum Beispiel http://www.leds.de/Widerstandsrechner
7 http://de.wikipedia.org/wiki/Widerstand_(Bauelement)#Farbkodierung_auf_Widerst.C3.A4nden
7 Los geht’s! – Erste Praxis
190
Abbildung 7.7 Eine weitere LED mit Widerstand am Arduino-Board
7.1.5 Wie dimme ich eine LED?
In diesem Abschnitt lernen Sie, wie Sie eine LED dimmen können und warum das wich-
tig für die Ansteuerung Ihres Roboters sein wird. Generell kennt ein digitaler Arduino-
Ausgang nur zwei Zustände: HIGH (5 V) und LOW (0 V). Damit könnte eine LED nur ein-
oder ausgeschaltet sein. Was also tun Sie, wenn Sie die LED in der Helligkeit regeln wol-
len? Könnten Sie nicht einfach eine geringere Spannung anlegen, damit die LED dunkler
leuchtet? Nein. Denn anders als bei Glühlampen ist der Spannungsbereich, in dem eine
LED arbeitet (leuchtet), sehr eng begrenzt. Die LED benötigt je nach Typ eine sogenannte
Durchflussspannung (engl. forward voltage), ab der sie überhaupt erst anfängt zu leuch-
ten. Ein typischer Spannungsbereich für eine LED liegt bei 2 bis 2,4 V, und in diesem
Bereich leuchtet sie dann in voller Stärke. Aber es gibt einen Trick: Pulsweitenmodula-
tion. Und die kann Ihr Arduino auch!
Pulsweitenmodulation
Stellen Sie sich vor, Sie sind in einem ziemlich dunklen Raum und Sie haben eine
Taschenlampe. Wenn Sie die Taschenlampe nun einschalten, ist es vollständig hell
(HIGH), und wenn sie ausgeschaltet ist, ist es dunkel (LOW). Und nun der Trick: Wenn
11
55
1010
1515
2020
2525
3030
A A
B B
C C
D D
E E
F F
G G
H H
I I
J J
13 12 11 10
9 8 7 6 5 4 3 2
L
5V A0
AR
EF
1
GN
D
TXRX
RE
SE
T
3V3
A1
A2
A3
A4
A5
VIN
GN
D
GN
D
IOR
EF
ICS
P
ICSP2
ON
POWER
01TX
0
RX
0RESET
ANALOG IN
ArduinoTM
DIGITAL (PWM= )
7.1 Der erste Kontakt mit der Hardware
191
Sie die Taschenlampe nun, so schnell Sie können, hintereinander ein- und wieder aus-
schalten, so werden Sie feststellen, dass es aussieht, was wäre sie gedimmt. Offenbar
erhellt sie den Raum nur noch halb so stark, als wenn sie die ganze Zeit leuchtet. Das
liegt daran, dass das menschliche Auge nur sehr träge auf die schnellen Helligkeitsände-
rungen reagieren kann. Es nimmt daher insgesamt nur eine »halbe Helligkeit« wahr.
Das können Sie übrigens leicht selbst mit einer Taschenlampe ausprobieren. Zur besse-
ren Veranschaulichung, was Pulsweitenmodulation ist, schauen Sie sich einmal Abbil-
dung 7.8 genauer an.
Abbildung 7.8 Pulsweitenmodulation
In dem Diagramm ist die Taschenlampe innerhalb einer Zeitdauer t von insgesamt acht
Sekunden viermal für eine Sekunde ausgeschaltet und viermal für eine Sekunde einge-
schaltet. In der Dauer von acht Sekunden war sie also 50 % der Zeit an- und 50 % ausge-
schaltet. Natürlich würde das Auge einen so langsamen Wechsel deutlich wahrnehmen.
Das Beispiel in Abbildung 7.8 dient nur zur einfacheren Berechnung der 50 % – sprich
der halben Helligkeit.
Der Name »Pulsweitenmodulation« (PWM) kommt daher, dass die Länge der Impulse,
also die Weite im Diagramm, verändert (moduliert) wird.8 Es muss ja kompliziert klin-
gen, denn Sie sind nun schon fast ein Arduino-Fachmann, und da brauchen Sie auch ein
paar Fachausdrücke zum Angeben.
Ganz formell
In einer Formel würde die Berechnung der Helligkeit aus dem Diagramm oben so ausse-
hen:
t1 / T = 1s / 2s = 0,50 = 50 %
8 Die Pulsweitenmodulation (PWM) wird übrigens auch Pulsdauermodulation (PDM) genannt.
t1
T
100%
0%
0
t/s
1 2 3 4 5 6 7 8
7 Los geht’s! – Erste Praxis
192
Man spricht hierbei auch von einem duty cycle von 50 %. Duty cycle bedeutet so viel wie
Einschaltdauer oder Tastverhältnis.
Wenn die Lampe innerhalb einer Sekunde nur 0,1 Sekunden lang an wäre, ergäbe das
einen Helligkeitswert (duty cycle) von 10 %:
t1 / T = 0,1s / 1s = 0,10 = 10 %
Pulsweitenmodulation nachgebildet
Um die Pulsweitenmodulation auf dem Arduino nachzubilden, benötigen Sie wieder
den Code Blinky.ino aus Listing 7.1. Tragen Sie für die delay-Anweisungen folgende neue
Werte in die Klammern ein:
digitalWrite(led, HIGH); // schalte die LED an (HIGH)delay(100); // warte 0,1 SekundendigitalWrite(led, LOW); // schalte die LED aus (LOW)delay(900); // warte 0,9 Sekunden
Wenn Sie nun den geänderten Code auf Ihren Arduino hochladen, werden Sie sehen, dass
die LED nur halb so hell erscheint – wie in dem Beispiel mit der Taschenlampe. Sie haben
nämlich die LED nur noch für 100 Millisekunden an- und dann für 900 Millisekunden
wieder ausgeschaltet. Dieses schnelle Flackern wird von Ihrem Auge so wahrgenommen,
als wäre die LED viel dunkler geworden. Spielen Sie ruhig mit den zwei Werten für die
delay-Anweisung, und versuchen Sie, weitere Helligkeitsstufen zu bilden.
Einmal »delay«, immer »delay«?
Der Befehl delay ist die simpelste Methode, um mit dem Arduino-Board PWM nachzu-
bilden. Jedoch hat diese Methode auch Nachteile. So kann der Befehl delay als kleinsten
Wert nur 1 übernehmen, also eine Millisekunde. Sollten Sie also eine später eine feinere
Auflösung benötigen, ginge das mit delay nicht. Der wesentliche Nachteil von delay ist
jedoch, dass während der Ausführung dieses Befehls der Arduino nichts anderes im
Hintergrund abarbeiten kann! Außerdem ist es nicht sehr einfach, mittels delay die Ein-
schaltdauer exakt zu definieren. Weitere Details dazu finden Sie im Internet im Artikel
»The secrets of Arduino PWM«.9
9 http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
7.1 Der erste Kontakt mit der Hardware
193
PWM für Profis: »analogWrite«
Praktischerweise haben die Entwickler auch hier vorgesorgt und PWM gleich »mitgelie-
fert«. Anstatt mittels delay einen Pin in einem bestimmten Rhythmus zwischen HIGH
und LOW wechseln zu lassen, gibt es den Befehl analogWrite(Pin, Wert).
Der Befehl benötigt zwei Parameter: Der erste ist der anzusteuernde Pin, der zweite eine
Zahl von 0 (= »immer aus«) bis 255 (= »immer an«).
Beispiel:
Der Befehl analogWrite(5, 128) schaltet den Pin 5 auf 50 % des maximalen Wertes von
5 V, also 2,5 V (255 = 100 % = 5 V, 128 = 50 % = 2,5 V). Natürlich liegen für einen Teil der Zeit
immer noch 5 V am Ausgang des Ports an, denn dieser wechselt ja wie beim Taschen-
lampenlicht immer noch sehr schnell zwischen 0 und 5 V. Wenn Sie aber mit einem trä-
gen Messgerät die Spannung am Pin überprüfen, so werden Sie effektiv nur 2,5 V
messen (Mittelwert).
Und wenn Sie nun mittels analogWrite(5, 64) effektiv nur ca. 1,25 V messen würden,
warum leuchtet die LED dann immer noch, obwohl sie ja, wie in Abschnitt 7.1.4 beschrie-
ben, eine Spannung größer als 2 V benötigt, um zu leuchten? Ganz einfach: Die einfa-
chen Messgeräte sind zu träge, um die schnellen Wechsel in der Gleichspannung
messen zu können. An einem sehr präzisen und vor allem schnellen Oszilloskop sind
die Wechsel zwischen 0 und 5 V gut zu sehen. In Abbildung 7.9 sehen Sie so eine Mes-
sung mit dem Oszilloskop. Hier ist deutlich der gemessene Mittelwert Mean mit 1,28 V
zu erkennen, aber eben auch der Maximalwert Maximum mit 5,28 V.10
Da unsere LED die bei 5,28 V entstehenden höheren Ströme nicht dauerhaft verträgt, muss
eben auch bei den effektiv gemessenen 1,28 V ein Vorwiderstand verwendet werden.
Wichtig!
Der Arduino Uno kann nicht auf jedem Pin ein PWM-Signal ausgeben! Es sind genau
sechs Pins, die diese Funktion nutzen können. Damit Sie sich diese nicht merken müs-
sen, sind sie auf der Platine mit einer Tilde (~) vor der jeweiligen Pin-Nummer gekenn-
zeichnet.
10 Eigentlich sollten das hier genau 5,0 V sein. Aber so spielt das Leben: Offenbar lagen zum Zeitpunkt
des Experiments an meinem Board 5,28 V an.
7 Los geht’s! – Erste Praxis
194
Abbildung 7.9 Schneller Wechsel der Pegel zwischen 0 und 5 V
In Abbildung 7.10 sehen Sie die markierten PWM-fähigen Pins 3, 5, 6, 9, 10 und 11 des
Arduino Uno.
Abbildung 7.10 Die PWM-Pins sind mit einer Tilde (~) gekennzeichnet.
Abbildung 7.11 Auf einigen Arduino-Boards sind die Buchsen bedruckt.
7.1 Der erste Kontakt mit der Hardware
195
Warum ist PWM so wichtig?
Die Pulsweitenmodulation ist nicht nur praktisch, um LEDs zu dimmen. Wenn Sie spä-
ter in Abschnitt 7.5, »Ich muss hier weg! – Ansteuerung von Motoren«, die Motoren
Ihres Roboters ansteuern, werden Sie PWM verwenden, um den Motor nicht nur mit
maximaler Geschwindigkeit (100 % = HIGH), sondern auch langsamer (zum Beispiel mit
25 %) drehen zu lassen.
Übrigens: HIGH ist nicht gleich HIGH – oder: 3,3 V vs. 5 V
Viele neue Bauteile nutzen als HIGH-Zustand statt 5 V oft nur noch 3,3 V, weil damit ins-
gesamt in einer Schaltung Energie gespart wird. Um eine andere Schaltung mit 3,3-V-
Logik am Arduino Uno anzuschließen, werden spezielle Wandler benötigt, die die Span-
nungen automatisch von 3,3 nach 5 V und umgekehrt wandeln. Im Internet finden Sie
diese zum Beispiel unter der englischen Bezeichnung Voltage Level Translator. Sie kos-
ten nur wenige Euro.
Übung
Erstellen Sie jetzt bitte ein Programm, das eine LED auf 25 % Helligkeit herunterregelt
(dimmt). Schließen Sie dazu eine LED mit Vorwiderstand an Pin 5 an. Wenn Sie sich
nicht mehr sicher sind, wie die LED angeschlossen wird, blättern Sie dazu kurz zu Abbil-
dung 7.7 zurück. Das Programm besteht aus sehr wenigen Zeilen und sollte am Ende so
wie PWM_LED.ino in Listing 7.2 aussehen:
// An Pin 5 ist eine LED mit Widerstand angeschlossen.
int led = 5;
void setup()
// Den Pin zur Ausgabe festlegen.
pinMode(led, OUTPUT);
void loop()
// 64 entspricht ca. 25 % von 255.
7 Los geht’s! – Erste Praxis
196
// Die LED leuchtet nun mit 25 % Helligkeit.
analogWrite(led, 64);
Listing 7.2 Das Programm »PWM_LED.ino« dimmt eine LED auf 25 %.
7.1.6 Zwischenfazit
Der erste Praxisteil ist geschafft, und ich hoffe, es hat Ihnen bis hierher Spaß gemacht.
Sie haben erfolgreich die Grundlagen für die nachfolgenden Kapitel auf dem Weg zu
Ihrem eigenen Arduino-Roboter gelernt. Als Erstes haben Sie die orange LED zum Blin-
ken gebracht, indem Sie zum ersten Mal Software auf Ihr Arduino-Board übertragen
haben. Nach etwas Theorie über das ohmsche Gesetz lernten Sie im Anschluss, warum
LEDs immer Vorwiderstände benötigen. Als Letztes haben Sie anhand einer Taschen-
lampe gelernt, was Pulsweitenmodulation (PWM) ist und dass Sie diese später zur
Motorsteuerung auf Ihrem Roboter benötigen werden.
7.2 Ist da jemand? – Kontakt mit der Außenwelt
In Abschnitt 7.1.1 haben Sie gelernt, wie Sie mit dem Arduino-Board mittels LED etwas
signalisieren können. Was tun Sie aber, wenn Ihr Arduino-Board etwas von der Außen-
welt mitbekommen soll? Das zeige ich Ihnen in den folgenden Abschnitten. Und es wird
viel einfacher als das PWM-Thema aus Abschnitt 7.1.5.
7.2.1 Schalter abfragen
Das einfachste Element, das Sie an einem Arduino-Pin »einlesen« können, ist ein simp-
ler Schalter. Diese Teile benötigen Sie für den nachfolgenden Aufbau:
Checklisteeinen Schalter
einen Widerstand, 10 kΩ
ein paar Leitungen (Jumper Wires)
eine Steckplatine
den Arduino Uno
7.2 Ist da jemand? – Kontakt mit der Außenwelt
197
Um einen Arduino-Pin einzulesen, muss natürlich ein Signal auf den Pin gegeben wer-
den, das der Arduino »versteht«. Wie Sie sich bestimmt schon gedacht haben, ist das
einfachste Signal ein HIGH oder LOW. Dazu wird gleich ein Pin des Arduino-Boards mit
der Masse (GND = LOW-Signal) und mit 5 V (HIGH-Signal) verbunden. Wenn Sie nämlich
den Wert eines Arduino-Eingangs einfach einlesen würden, ohne dass etwas mit dem
Pin verbunden ist – dieser also quasi »in der Luft hängt« –, dann bekommen Sie jedes
Mal ein nicht vorhersagbares Ergebnis. Bauen Sie nun das Experiment mit dem Schalter
so wie in Abbildung 7.12 dargestellt auf.
Abbildung 7.12 Eine einfache Schaltung mit Schalter
Wie Sie sehen, ist Pin 5 des Arduino über die gelbe Leitung mit einem Widerstand von
10 kΩ und mit einem Kontakt des Schalters verbunden. Das andere Ende des Widerstan-
des R1 ist über die schwarze Leitung mit der Masse (GND) verbunden. Der mittlere Kon-
takt des Schalters S1 ist über die rote Leitung mit 5 V verbunden. Zur Verdeutlichung
zeigt Abbildung 7.13 den dazu passenden Schaltplan.
11
55
1010
1515
2020
2525
3030
A A
B B
C C
D D
E E
F F
G G
H H
I I
J J
13 12 11 10
9 8 7 6 5 4 3 2
L
5V A0
AR
EF
1
GN
D
TXRX
RE
SE
T
3V3
A1
A2
A3
A4
A5
VIN
GN
D
GN
D
IOR
EF
ICS
P
ICSP2
ON
POWER
01TX
0
RX
0RESET
ANALOG IN
ArduinoTM
DIGITAL (PWM= )
7 Los geht’s! – Erste Praxis
198
Abbildung 7.13 Der Schaltplan zu Abbildung 7.12
Warum ist eine so umständliche Verkabelung mit einem extra Widerstand notwendig,
wenn Sie doch nur einen simplen Schalter einlesen wollen? Noch einmal: Würde der
Widerstand weggelassen werden und wäre der Schalter geöffnet bzw. in die eine Rich-
tung geschoben, so würden Sie beim Einlesen des Arduino-Pins einen willkürlichen
Wert als Ergebnis zurückbekommen, weil der Pin »in der Luft« hängen würde und
dadurch keinen definierten Zustand wie HIGH oder LOW hat. Wenn aber ein Wider-
stand gegen die Masse (GND) geschaltet wird, so wird der Pin »auf Masse gezogen«. Ein
Auslesen des Pins ergibt somit den definierten Wert LOW. Schieben Sie den Schalter in
die andere Richtung, liegen am Pin des Arduino 5 V an. Sie haben also ein definiertes
HIGH-Signal.
Expertenwissen zum Angeben
Ein Widerstand, der einen Pin wie beschrieben »herunter auf Masse zieht«, wird übri-
gens Pull-down-Widerstand genannt. Das Gleiche gibt es auch Richtung HIGH: Ein
Widerstand vom Pin zur positiven Versorgungsspannung heißt Pull-up-Widerstand.
2
3
1
21
D0/RX
D1/TX
D2
D3 PWM
D4
D5 PWM
D6 PWM
D7
D8
D9 PWM
D10 PWM/SS
D11 PWM/MOSI
D12/MISO
D13/SCK
RESET
RESET2
AREF
ioref
A0
A1
A2
A3
A4/SDA
A5/SCL
N/C
GN
D
3V
3
5V
VIN
ArduinoUno
(Rev3)
R110kΩ
S1
7.2 Ist da jemand? – Kontakt mit der Außenwelt
199
Der Befehl zum Einlesen eines digitalen Arduino-Pins lautet:
digitalRead(Pin);
Der Befehl benötigt beim Aufruf nur den Parameter Pin, also die Nummer des digitalen
Pins, der eingelesen werden soll. Als Ergebnis liefert der Befehl den »Wert« HIGH oder
LOW zurück. Aber am einfachsten verdeutlicht dies das kleine Programm Schalter_ein-
lesen.ino in Listing 7.3, das Sie bitte auf Ihr Arduino-Board übertragen und mit der Schal-
tung aus Abbildung 7.12 ausprobieren.
int ledPin = 13; // LED verbunden mit Digital-Pin 13int inPin = 7; // Schalter verbunden mit Digital-Pin 7int zustand = LOW; // Diese Variable speichert den Schalterzustand
void setup()pinMode(ledPin, OUTPUT); // Digital-Pin 13 als Ausgang definierenpinMode(inPin, INPUT); // Digital-Pin 7 als Eingang definieren
void loop()zustand = digitalRead(inPin); // Schalterzustand (Pin) einlesendigitalWrite(ledPin, zustand); // LED gemäß Schalterzustand schalten
Listing 7.3 Einlesen eines Schalters und Ausgabe mittels LED
Wie erwartet, sollte nun der Schalter die LED auf dem Arduino-Board ein- und ausschal-
ten.
Warum einfach, wenn es auch umständlich geht?
Haben Sie sich beim Lesen des Programmcodes gefragt, warum es so viele Zeilen sind
bzw., genauer gesagt, warum eine Variable verwendet wird? Natürlich hätte der Code
auch wie in Listing 7.4 wesentlich kürzer geschrieben werden können.
void setup()// Digital-Pin 13 als Ausgang definierenpinMode(13, OUTPUT);// Digital-Pin 7 als Eingang definieren
7 Los geht’s! – Erste Praxis
200
pinMode(7, INPUT);
void loop()// Schalter einlesen und LED sofort ein-/ausschaltendigitalWrite(13, digitalRead(7));
Listing 7.4 Einlesen eines Schalters – kurz, aber unvorteilhaft
Auf den ersten Blick erscheint Ihnen das Programm sicher einfacher und übersichtli-
cher. Schauen Sie sich die Unterschiede in Ruhe an. Sie werden feststellen, dass in Lis-
ting 7.4 vollständig auf die Verwendung von Variablen verzichtet und der Code dadurch
sehr schlank wird. Das kann natürlich so gemacht werden – insbesondere dann, wenn es
sich um ein so einfaches Programm handelt. Stellen Sie sich aber nun vor, Sie bauen die
Schaltung einmal um und schließen den Schalter statt an Pin 7 an Pin 11 an. Vielleicht
schließen Sie auch noch eine grüne LED statt der eingebauten an und wollen diese an
Pin 10 stecken. Was müssten Sie dazu nun im Programmcode verändern? Richtig: An
jeder Stelle müssten Sie für den Schalter die 7 auf 11 ändern und für die LED die 13 auf 10.
Verwenden Sie stattdessen den Code mit den Variablen, müssten Sie lediglich die zwei
Zeilen mit ledPin und inPin aktualisieren.
Die lange Codevariante ist auf den ersten Blick vielleicht umständlicher, aber wesent-
lich leichter zu warten. Denken Sie nur daran, an wie vielen Stellen Sie Pin-Nummern
aktualisieren müssten, sollten Sie später einmal ein Programm mit hundert Zeilen
haben. Nicht zuletzt wäre dieses Vorgehen auch noch deutlich fehleranfälliger.
In diesem Abschnitt haben Sie gelernt, wie Sie einen Schalter anschließen, diesen ausle-
sen und warum hierzu ein Widerstand notwendig ist. Des Weiteren haben Sie erfahren,
warum es sich meistens lohnt, Variablen in Programmen zu verwenden, statt sie so kurz
wie möglich zu schreiben.
7.2.2 Taster abfragen
Was mit einem Schalter geht, geht mit einem Taster genauso einfach. Und das testen Sie
jetzt. Sie benötigen für den nachfolgenden Aufbau:
7.2 Ist da jemand? – Kontakt mit der Außenwelt
201
Checklisteeinen Taster
einen Widerstand, 10 kΩ
ein paar Leitungen (Jumper Wire)
eine Steckplatine
den Arduino Uno
Im Unterschied zu einem Schalter, der seine Position dauerhaft beibehält, verbindet ein
Taster seine Kontakte nur, solange er gedrückt wird – zumindest bei einem Taster, der
die Kontakte beim Betätigen schließt. Es gibt nämlich auch Taster, die beim Betätigen
die Kontakte öffnen. Der Aufbau der Schaltung ist genau der gleiche wie beim Schalter,
wie Sie anhand Abbildung 7.14 leicht feststellen werden.
Abbildung 7.14 Schaltung zum Auslesen eines Tasters
Den dazugehörigen Schaltplan sehen Sie in Abbildung 7.15: Nur das Symbol für den Tas-
ter S2 hat sich verändert.
11
55
1010
1515
2020
2525
3030
A A
B B
C C
D D
E E
F F
G G
H H
I I
J J
13 12 11 10
9 8 7 6 5 4 3 2
L
5V A0
AR
EF
1
GN
D
TXRX
RE
SE
T
3V3
A1
A2
A3
A4
A5
VIN
GN
D
GN
D
IOR
EF
ICS
P
ICSP2
ON
POWER
01TX
0
RX
0RESET
ANALOG IN
ArduinoTM
DIGITAL (PWM= )
7 Los geht’s! – Erste Praxis
202
Abbildung 7.15 Schaltplan zu Abbildung 7.14
Vorwiderstand ohne Widerstand – oder: Der interne Pull-up-Widerstand
Sie können den Aufbau aus Abbildung 7.14 durch Aktivieren einer besonderen Funktion
Ihres Arduino auch ohne extra Widerstand aufbauen. Dazu nutzen Sie den internen
Pull-up-Widerstand. Intern? Richtig. Der auf Ihrem Arduino-Board verbaute Mikrocon-
troller besitzt an seinen digitalen Pins interne Pull-up-Widerstände, die Sie per Software
aktivieren können. Dies geschieht mit folgendem Befehl:
pinMode(Pin, INPUT_PULLUP);
Damit ersparen Sie sich einen separaten Widerstand beim Abfragen von Tastern oder
Schaltern. Beachten Sie aber, dass sich die Logik beim Auslesen des Pins »umkehrt«.
Denn der Pin wird standardmäßig immer Richtung +5 V »gezogen«. Das bedeutet:
Wenn der Taster in Abbildung 7.16 nicht gedrückt ist, ist der Pin HIGH. Wird der Taster
gedrückt, wird der Pin mit GND verbunden und ist damit LOW. Aber dafür sparen Sie sich
ein extra Bauteil.
12
12
21
D0/RX
D1/TX
D2
D3 PWM
D4
D5 PWM
D6 PWM
D7
D8
D9 PWM
D10 PWM/SS
D11 PWM/MOSI
D12/MISO
D13/SCK
RESET
RESET2
AREF
ioref
A0
A1
A2
A3
A4/SDA
A5/SCL
N/C
GN
D
3V
3
5V
VIN
ArduinoUno
(Rev3)
R110kΩ
S2
7.2 Ist da jemand? – Kontakt mit der Außenwelt
203
Abbildung 7.16 Versuch mit Taster und internem Pull-up-Widerstand
Prellende Taster und Schalter
Taster und Schalter haben eine Eigenschaft, die Prellen (engl. bounce) genannt wird. Das
bedeutet: Wenn ein Schalter oder Taster betätigt wird, werden die Kontakte in der Regel
nicht einfach geschlossen, sondern im winzigen Millimeterbereich mehrfach hinterein-
ander kurz geschlossen und wieder geöffnet. Das kann man sich wie einen Handball
vorstellen, der auf den Boden fällt und dabei ein paarmal springt, bis er endgültig liegen
bleibt. Dieses Verhalten ist technisch bedingt und unerwünscht. Beim Schalten einer
LED ist dieses Prellen nicht weiter tragisch und auch nicht wahrnehmbar. Wenn Sie aber
zum Beispiel jede Betätigung eines Tasters zählen wollen, so nimmt der Arduino diese
Mehrfachbetätigungen durch das Prellen aufgrund mehrerer schneller Messungen
während des Tastendrucks wahr. Ein scheinbar einmaliger Druck auf den Taster wird
dann zum Beispiel als »fünfmal betätigt« gezählt. Das kann dann bei Auswertungen in
einer Software zu einem Problem werden. In Abbildung 7.17 sehen Sie, wie ein Taster
mehrfach zwischen AUS und EIN wechselt, bis er am Ende eingeschaltet bleibt.
Wie kann dieses Prellproblem gelöst werden? Zum einen gibt es spezielle sogenannte
entprellte Taster. Diese sind mechanisch so konstruiert, dass sie nicht prellen können.
Zum anderen ist das aber auch per Software lösbar. Es gibt eine fertige Lösung, da sich
bereits andere ausgiebig zu diesem Problem Gedanken gemacht haben: die sogenannte
Bounce-Bibliothek11.
11 http://playground.arduino.cc/code/bounce
11
55
1010
1515
2020
2525
3030
A A
B B
C C
D D
E E
F F
G G
H H
I I
J J
13
12
11
10
9
8
7
6
5
4
3
2
L
5V
A0
AREF
1
GND
TXRX
RESET
3V3
A1
A2
A3
A4
A5
VIN
GND
GND
IOREF
ICSP
ICS
P2
ON
PO
WE
R
0
1TX0
RX0
RE
SE
T
AN
ALO
G IN
Arduino
TM
DIG
ITAL (P
WM
= )
7 Los geht’s! – Erste Praxis
204
Abbildung 7.17 Ein prellender Schalter beim Einschalten
Die Bounce-Bibliothek sorgt dafür, dass ein prellender Schalter oder Taster wie ge-
wünscht abgefragt werden kann, und filtert die Störungen automatisch für Sie heraus.
Ein Beispiel dazu sehen Sie in Listing 7.5. Den Code zum Download finden Sie in der Datei
Taster_entprellt.ino. Der Aufbau der Testschaltung dazu ist in Abbildung 7.16 dargestellt.
Denken Sie daran, dass Sie für die Verwendung der Bibliothek diese erst in Ihre Arduino-
Software importieren müssen (siehe Abschnitt 6.15, »Bibliotheken (Libraries)«).
#include <Bounce2.h>
#define TASTER_PIN 2 // Pin für den Taster (gegen GND)#define LED_PIN 13 // Die übliche Arduino-LED
// Erstelle ein Bounce-Objekt, das das Entprellen regelt.Bounce entpreller = Bounce();
void setup()// Taster-Pin als Eingang definierenpinMode(TASTER_PIN, INPUT);
// Internen Pull-up-Widerstand aktivierenpinMode(TASTER_PIN, INPUT_PULLUP);
// Entprellfunktion aktivierenentpreller.attach(TASTER_PIN);
7.2 Ist da jemand? – Kontakt mit der Außenwelt
205
entpreller.interval(5);
// LED-Pin als Ausgang definierenpinMode(LED_PIN,OUTPUT);
void loop()// Entpreller (entpreller) aktualisierenentpreller.update();
// "Korrigierten" Wert des Tasters lesenint wert = entpreller.read();
// LED ein- oder ausschalten// (LOW = EIN, weil Pull-up-Widerstand!)if (wert == LOW)// LED andigitalWrite(LED_PIN, HIGH);
else// LED ausdigitalWrite(LED_PIN, LOW);
Listing 7.5 Taster einlesen und automatisch entprellen
Die meisten Zeilen dürften für Sie nicht mehr neu sein. Spannend ist lediglich die Zeile
zu Beginn:
Bounce entpreller = Bounce();
Hier wird ein Objekt namens entpreller erstellt, das die ganze Magie für Sie regelt.
Beachten Sie weiterhin die in der setup-Funktion enthaltene Anweisung pinMode(TAS-
TER_PIN, INPUT_PULLUP), die den internen Pull-up-Widerstand im Arduino für den Tas-
ter-Pin aktiviert (siehe Abschnitt 7.1.4). Wie die Entprellfunktion intern genau arbeitet,
können Sie auf der Website des Entwicklers nachlesen.12
12 https://github.com/thomasfredericks/Bounce-Arduino-Wiring/wiki
7 Los geht’s! – Erste Praxis
206
Wichtig sind an dieser Stelle zum einen die folgenden Zeilen in der setup-Funktion:
// Entprellfunktion aktivierenentpreller.attach(TASTER_PIN);entpreller.interval(5);
sowie die folgenden Zeilen später in der loop-Funktion:
// Entpreller (entpreller) aktualisierenentpreller.update();
// "Korrigierten" Wert des Tasters lesenint wert = entpreller.read();
Das ist auch schon alles, was Sie dazu wissen müssen. Wahrscheinlich werden Sie die
Bounce-Bibliothek in der Praxis nicht sehr oft benötigen. Aber falls einmal die exakte
Auswertung von Tastern oder Schaltern notwendig ist, kennen Sie nun diese hilfreiche
Bibliothek.
7.2.3 Sensoren
Aber nun zu etwas Spannenderem als simplen Tastern und Schaltern: Sensoren. Ein Sen-
sor ist so etwas wie ein »Fühler«, der bestimmte Eigenschaften seiner Umgebung erken-
nen kann. Er nimmt Messungen vor und stellt die Ergebnisse an seinen Anschlüssen
zum Auslesen an elektrischen Schaltungen, wie dem Arduino, zur Verfügung. In diesem
Kapitel will ich Ihnen drei Sensoren vorstellen, die in der Robotik häufig Anwendung
finden. Einen davon werden Sie selbst später an Ihrem Arduino-Roboter nutzen.
7.2.4 Infrarotsensor
Es gibt verschiedenste Sensoren, die sich mit der Messung von Infrarotlicht beschäfti-
gen. Infrarotlicht ist Licht im für den Menschen unsichtbaren Bereich. Dabei sind wir
ständig davon umgeben, sogar in unserem Wohnzimmer – zumindest, wenn Sie einen
Fernseher oder eine Stereoanlage mit Fernbedienung besitzen, denn die gängigen Fern-
bedienungen haben alle eine Infrarot-LED (IR-LED), die Signale an das zu steuernde
Gerät überträgt. Mit vielen Digitalkameras oder Webcams können Sie die Infrarotstrah-
lung sogar sichtbar machen: Halten Sie doch einmal in sehr dunkler Umgebung Ihre
Fernseherfernbedienung vor eine Kamera, betätigen Sie eine der Tasten, und schauen
Sie auf das Bild. Es dürfte ungefähr wie in Abbildung 7.18 aussehen. Der nun sichtbar
leuchtende Punkt ist die Infrarot-LED.
7.2 Ist da jemand? – Kontakt mit der Außenwelt
207
Natürlich hat Ihr Fernseher oder das entsprechende empfangende Gerät auch einen Inf-
rarotsensor, um dieses Licht zu erkennen und mittels weiterer Elektronik zu dekodie-
ren. Dekodieren bedeutet in diesem Fall, die übertragenen Signale zu entschlüsseln.
Schließlich wäre es ziemlich hilfreich, wenn beim Drücken der Taste 4 auf der Fernbe-
dienung eine andere Information als bei Taste 2 an das zu steuernde Gerät übertragen
wird. In Abbildung 7.19 sehen Sie einen Infrarotsensor (IR-Sensor).
Abbildung 7.18 Infrarotlicht, mit einer Webcam sichtbar gemacht
Abbildung 7.19 Der Infrarotsensor (IR-Sensor) TSOP38238
Der Vorteil der Infrarotsensoren ist, dass sie relativ günstig sind. Sie haben aber auch
einen Nachteil: Da die Sonne ebenfalls einen sehr hohen Anteil an Infrarotlicht aussen-
det, funktionieren viele IR-Sensoren im Außenbereich nicht sehr zuverlässig. Denn
neben dem Infrarotlicht der Fernbedienung empfangen sie zusätzlich das IR-Licht der
Sonne und können das Signal somit nicht immer eindeutig erkennen. Für Innenberei-
che können sie also gut eingesetzt werden, während draußen andere Sensoren besser
geeignet sind.
Der Infrarotsensor Ihres Roboters
Der Infrarotsensor, der später auf Ihrem Arduino-Roboter zum Einsatz kommen wird,
ist eine Kombination aus Infrarotsender und -empfänger: der Sharp-Infrarotdistanz-
7 Los geht’s! – Erste Praxis
208
messer mit dem kurzen und leicht zu merkenden Namen GP2Y0A21YK0F. Dieser Sensor,
den Sie in Abbildung 7.20 sehen, enthält eine Infrarotdiode (IR-Diode) und einen IR-
Empfänger. Die IR-Diode sendet Infrarotlicht aus, das von einem Objekt reflektiert und
vom IR-Empfänger wieder eingelesen wird. In Abhängigkeit von der Entfernung des
Objekts gibt dieser Sensor an einem seiner Pins eine Spannung aus. Diese Spannung
können Sie mit dem Arduino einlesen.
Abbildung 7.20 Der Sharp-Infrarotdistanzmesser »GP2Y0A21YK0F«
Der Sensor ist denkbar einfach an einem Arduino-Board anzuschließen, denn er hat
lediglich drei Leitungen an seinem Anschlusskabel:
Für das nachfolgende Experiment benötigen Sie folgende Teile:
Checklisteeinen Infrarotdistanzsensor
den Arduino Uno
Stecken Sie das Anschlusskabel an den Sensor, und schließen Sie dann den Sensor wie in
Abbildung 7.22 an Ihren Arduino an. Das weiße Sensorkabel entspricht in der Abbildung
der gelben Leitung.
Farbe Belegung
Rot +5 V
Schwarz Masse (GND)
Weiß Signal
7.2 Ist da jemand? – Kontakt mit der Außenwelt
209
Vorsicht, empfindliche Buchse am Sensor!
Beachten Sie, dass der weiße Stecker nur in eine Richtung auf den Sensor gesteckt wer-
den kann. Bitte schauen Sie sich den Stecker in Abbildung 7.21 genau an: Er hat einen
kleinen Steg in der Mitte, der in die passende Führung des Sensors gesteckt werden
muss. Sollten Sie den Stecker falsch herum stecken und den Sensor anschließen, wird
mindestens der Sensor dauerhaft Schaden nehmen!
Abbildung 7.21 Der Stecker des Sensors hat einen Steg in der Mitte.
Abbildung 7.22 Der Infrarotdistanzsensor, angeschlossen am Arduino
Dieser Sharp-Sensor kann Distanzen zu einem Objekt in ca. 10 bis 80 cm Entfernung
messen und gibt entsprechend zu den Entfernungen einen analogen Spannungswert
auf der weißen Signalleitung aus. Beispielsweise:
ca. 2,3 V bei 10 cm Entfernung
ca. 1,0 V bei 29 cm Entfernung
ca. 0,4 V bei 80 cm Entfernung
13 12 11 10
9 8 7 6 5 4 3 2
L
5V A0
AR
EF
1
GN
D
TXRX
RE
SE
T
3V3
A1
A2
A3
A4
A5
VIN
GN
D
GN
D
IOR
EF
ICS
P
ICSP2
ON
POWER
01TX
0
RX
0RESET
ANALOG IN
ArduinoTM
DIGITAL (PWM= )
7 Los geht’s! – Erste Praxis
210
In Abbildung 7.23 sehen Sie ein Diagramm aus dem Datenblatt des Sensors, das die
jeweilige Spannung in Abhängigkeit zur Entfernung eines Objekts vom Sensor zeigt.
Wie Sie sehen, handelt es sich um eine analoge Spannung, die alle Werte zwischen 0 bis
ungefähr 3,1 V annehmen kann. Daraus folgt das nächste Experiment mit dem Arduino
und einer neuen Funktion: das Einlesen einer analogen Spannung mit diesem Befehl:
analogRead(pin);
Abbildung 7.23 Die Ausgangsspannung in Abhängigkeit zur Entfernung
Anzeigen der Entfernung auf dem Bildschirm
Laden Sie nun bitte das Programm IR_Distanz_SerialOut (siehe Listing 7.6) herunter,
und übertragen Sie es mit der aufgebauten Schaltung auf Ihr Arduino-Board:
int ledPin = 13; // Der übliche LED-Pinint IRpin = A0; // Der Pin für den Infrarotsensorausgang
void setup()
0
0,0
10 40 5020 30 60 70
0,5
1,0
1,5
2,0
2,5
3,0
3,5
Abstand zum reflektierenden Objekt (in cm)
Spa
nn
un
g (
in V
)
80
7.2 Ist da jemand? – Kontakt mit der Außenwelt
211
pinMode(ledPin, OUTPUT); // LED-Pin ist ein AusgangpinMode(IRpin, INPUT); // IR-Pin als Eingang definieren
// Serielle Ausgabe auf dem Bildschirm startenSerial.begin(9600);
void loop()// Sensor (Pin) einlesenfloat spannungswert = analogRead(IRpin);
// umrechnen in cmfloat entfernung = (6787 / (spannungswert - 3)) - 4;
// Solange Distanz <= 80 cmif (entfernung <= 80)// Distanz ausgebenSerial.print("Messwert: ");Serial.print(spannungswert);Serial.print(" / Entfernung: ");Serial.print(entfernung);Serial.print("cm");
elseSerial.print("> 80 cm");
Serial.println();delay(500);
Listing 7.6 »IR_Distanz_SerialOut.ino« zum Anzeigen der Entfernung
Nach dem Übertragen der Software aktivieren Sie den in Abschnitt 6.14.2, »Der serielle
Port – Ausgabe von Text«, beschriebenen Seriellen Monitor in der Arduino-Software
über die Menüpunkte Werkzeuge Serieller Monitor. Halten Sie nun die Hand vor
den Sensor, und verändern Sie dabei die Entfernung. Die Ausgabe auf dem Bildschirm
zeigt die ungefähre Entfernung der Hand vom Sensor an. In Abbildung 7.24 sehen Sie
ein Beispiel.
7 Los geht’s! – Erste Praxis
212
Abbildung 7.24 Ausgabe der Entfernung auf dem Bildschirm
Wenn Sie den Code näher betrachten, werden Sie feststellen, dass die ganze Magie auf
zwei Zeilen beschränkt ist. Erst wird die analoge Spannung vom Sensor am Arduino-Pin
mittels analogRead eingelesen und gleichzeitig in der Variable entfernung gespeichert:
// Sensor (Pin) einlesenfloat spannungswert = analogRead(IRpin);
Gleich danach wird der eingelesene Spannungswert in die Entfernung in Zentimeter
umgerechnet. Die spezielle Formel13 ist hier an den verwendeten Sensor angepasst. Bei
einem anderen Sensor müssten Sie hier eine Anpassung vornehmen:
13 Siehe auch http://www.acroname.com/articles/linearizing-sharp-ranger.html.
7.2 Ist da jemand? – Kontakt mit der Außenwelt
213
// umrechnen in cmfloat entfernung = (6787 / (spannungswert - 3)) - 4;
Die Entfernung mittels LED signalisieren
Schauen Sie sich nun Listing 7.7 an, und übertragen Sie die Datei IR_Distanz_LED.ino auf
den Arduino. Nach dem Übertragen des Codes sollte die orange LED auf dem Arduino-
Board langsam im Sekundentakt blinken.
int ledPin = 13; // Der übliche LED-Pin
int IRpin = A0; // Der Pin für den Infrarotsensorausgang
void setup()
pinMode(ledPin, OUTPUT); // LED-Pin als Ausgang definieren
pinMode(IRpin, INPUT); // IR-Pin als Eingang definieren
void loop()
// Sensor (Pin) einlesen
float spannungswert = analogRead(IRpin);
// Umrechnen in cm
float entfernung = (6787 / (spannungswert - 3)) - 4;
// delay-Wert begrenzen
if (entfernung > 80)
entfernung = 80;
if (entfernung < 10)
entfernung = 10;
// Entfernung für delay umrechnen
int zeit = 0;
zeit = map(entfernung, 10, 80, 100, 1000);
// LED blinkt
digitalWrite(ledPin, HIGH);
delay(zeit);
7 Los geht’s! – Erste Praxis
214
digitalWrite(ledPin, LOW);
delay(zeit);
Listing 7.7 Blinkende LED in Abhängigkeit zur Entfernung der Hand
Je näher Sie nun die Hand in Richtung Sensor bewegen, desto schneller blinkt die LED.
Hilfreich – die Funktion »map«
Ein paar Worte zu der hier verwendeten map-Funktion: Diese ist äußerst hilfreich, um
Werte eines bestimmten Bereichs auf einen anderen abzubilden (zu »mappen«). Um es
etwas anschaulicher zu sagen: Wenn Sie zum Beispiel einen Temperatursensor haben,
der von –100 bis +100 Grad Celsius misst, und Sie die Helligkeit einer LED von 0 bis 255
in Abhängigkeit zur Temperatur einstellen wollen, dann geht das mit der map-Funktion
wie folgt:
helligkeitLED = map(temperatur, -100, 100, 0, 255);
Einfach, aber genial, oder? Sie finden die komplette (englische) Referenz zum map-Befehl
wie immer im Internet.14
Und wozu das Ganze?
Wie Sie sich bestimmt vorstellen können, sind die vorangegangenen Beispiele hilfreich,
wenn Sie später den Infrarotsensor auf Ihrem Roboter einsetzen werden. Denn schließ-
lich soll der Roboter ja rechtzeitig vor einem Hindernis ausweichen und nicht dumm
vor eine Wand fahren. Das bedeutet: Wenn in diesem Beispiel eine LED sehr schnell
blinkt, ein Hindernis also sehr nah ist, werden Sie den Roboter in Abschnitt 9.2, »Hinder-
nisvermeidung«, dazu bringen, nach links oder rechts auszuweichen.
Übung
Experimentieren Sie wieder etwas mit dem Code. Ändern Sie das Programm IR_Dis-
tanz_LED so, dass es die Helligkeit einer externen LED in Abhängigkeit von der Entfer-
nung der Hand zum Sensor ändert. Tipp: Schauen Sie sich dazu vielleicht noch einmal
Abschnitt 7.1.5 an. Übung macht den Meister!15
14 http://arduino.cc/en/Reference/Map
15 Ich will Ihnen die Lösung nicht vorenthalten: Sie finden sie als Download mit dem Dateinamen IR_
Distanz_LED_Helligkeit.ino.
7.2 Ist da jemand? – Kontakt mit der Außenwelt
215
7.2.5 Ultraschallsensoren
Gegenüber den in Abschnitt 7.2.4 vorgestellten Infrarotsensoren haben Ultraschallsen-
soren den Vorteil, dass sie gegen Sonnenlicht unempfindlich sind. Das heißt, wenn Sie
Ihren Roboter einmal im Garten fahren lassen wollen, eignen sich Ultraschallsensoren
besser – auch wenn diese draußen ebenfalls vor Nässe geschützt werden müssen. Ein
weiterer wesentlicher Vorteil ist die maximal messbare Entfernung: Die in Abbildung
7.25 gezeigten Sensoren SRF04/05 von Devantech können eine Entfernung bis sechs
Meter messen. Der Nachteil der Sensoren liegt in Ihrem Preis: Verglichen mit IR-Senso-
ren sind sie fast doppelt so teuer in der Anschaffung.
Abbildung 7.25 Der Ultraschallsensor »SRF04/05« von Devantech
Auch die Ansteuerung der Ultraschallsensoren ist komplexer: Dem Sensor muss erst
ein Start-Impuls gegeben werden, damit er eine Messung startet. Danach »antwortet« er
mit einem Impuls, dessen Länge der gemessenen Distanz entspricht.
Immer noch nicht genug? Arduino-Shields!
Das Arduino-Board wäre sicher nicht so erfolgreich, wenn es zum einen nicht so einfach
zu programmieren und zum anderen nicht so leicht erweiterbar wäre. Natürlich haben
sich die Entwickler etwas dabei gedacht, solche Buchsen auf die Oberseite zu montieren.
Denn sie ermöglichen es nicht nur, ein paar Drähte oder Bauteile (wie Widerstände)
»mal eben schnell« zu stecken. Sie ermöglichen auch die Erweiterung des Arduino-
Boards durch sogenannte Arduino-Shields. Diese werden einfach »huckepack« auf den
Arduino gesteckt und sind ohne Löten oder Schrauben sofort einsatzbereit. Es gibt wirk-
lich unzählige Shields und damit Erweiterungsmöglichkeiten. Um sich einen kleinen
Überblick über die Vielfalt an Arduino-Shields zu verschaffen, schauen Sie sich die nach-
folgenden Abbildungen an. Wenn Sie damit noch immer nicht genug Anregungen für
spätere Projekte erhalten, suchen Sie im Internet nach »Arduino Shield«. Sie werden
zahlreiche Ergebnisse für Inspirationen erhalten.
7 Los geht’s! – Erste Praxis
216
Abbildung 7.26 Das »Arduino Motor Shield«
Das Arduino Motor Shield aus Abbildung 7.26 dient zum leichten Anschluss und Betrieb
von Motoren und Servos am Arduino-Board. Dieses Shield werden Sie auf Ihrem Robo-
ter nutzen, und ich zeige Ihnen in Abschnitt 7.4, »Der Diener – Ansteuerung von Servos«,
bzw. Abschnitt 7.5, »Ich muss hier weg! – Ansteuerung von Motoren«, wie das funktio-
niert.
Abbildung 7.27 Das »Adafruit Data Logging Shield«
7.2 Ist da jemand? – Kontakt mit der Außenwelt
217
Sie wollen eine SD-Karte für Ihren Arduino nutzen, um dort zum Beispiel Daten zu pro-
tokollieren (siehe Abbildung 7.26)? Kein Problem: Das Adafruit Data Logging Shield aus
Abbildung 7.27 ist das Shield Ihrer Wahl. Insgesamt hat die Firma Adafruit16 eine großar-
tige Auswahl an Produkten, die stetig mit dazugehöriger Software und Dokumentation
weiterentwickelt werden und zudem in Deutschland gut verfügbar sind.
Wenn Sie Ihren Arduino Daten anzeigen lassen und ihn per Touchscreen steuern wol-
len, dann sollten Sie sich näher mit dem TFT Touch Shield aus Abbildung 7.28 beschäf-
tigen.
Abbildung 7.28 Das »TFT Touch Shield«17
Verbinden Sie Ihr Arduino-Projekt doch später einmal mit Ihrem heimischen Netzwerk
– per WLAN mit dem WIFI Shield aus Abbildung 7.29. Sie könnten zum Beispiel Ihr Pro-
jekt aus dem heimischen Netz twittern lassen oder vom Internet aus auf Ihr Arduino-
Board zugreifen. Und einen SD-Kartenleser hat dieses Shield auch noch mit dabei.
16 https://www.adafruit.com
17 Bild: http://www.adafruit.com/products/1651
7 Los geht’s! – Erste Praxis
218
Abbildung 7.29 Das »Arduino WIFI Shield«18
Abbildung 7.30 »Arduino GSM Shield« auf einem Arduino Uno19
18 Bild: http://arduino.cc, CC BY-SA 3.0
19 Bild: http://arduino.cc, CC BY-SA 3.0
7.2 Ist da jemand? – Kontakt mit der Außenwelt
219
Wenn Sie mal einen Roboter bauen wollen, der fast überall erreichbar ist, dann sollten
Sie sich mit dem GSM Shield aus Abbildung 7.30 vertraut machen. Es enthält alles, was
Sie zur Kommunikation über das Handynetz benötigen. Wenn Sie sich später noch
näher mit dem Thema GSM beschäftigen wollen, sollten Sie sich auch das Adafruit FONA
einmal näher anschauen.20
Abbildung 7.31 Das »Arduino Proto Shield«21
Immer noch nicht genug? Dann entwickeln Sie doch Ihr eigenes Arduino-Shield. Mit
dem Arduino Proto Shield aus Abbildung 7.31 haben Sie Platz für eigene Lötarbeiten oder
zur Entwicklung eines Prototyps für Ihr eigenes Shield.
7.2.6 Zwischenfazit
Wie Sie sehen, gibt es wirklich jede Menge Möglichkeiten, um Ihr kleines, aber feines
Arduino-Board zu erweitern oder mit dem Rest der Welt zu verbinden. Sie haben in die-
sem Kapitel als Erstes gelernt, wie Sie Schalter und Taster abfragen können. Danach habe
ich Ihnen erläutert, was Prellen in diesem Zusammenhang bedeutet. Anschließend haben
Sie einen Infrarotdistanzsensor ausgelesen und in Abhängigkeit von der Distanz zum
Sensor eine LED zum Blinken gebracht. Nach ein paar weiteren Übungen damit erhielten
Sie zum Schluss einen Einblick in die weite Welt der zahlreichen Arduino-Shields.
20 http://www.adafruit.com/product/1963
21 Bild: http://arduino.cc, CC BY-SA 3.0
Auf einen Blick
Auf einen Blick
1 Don’t panic! – Einleitung .......................................................................................... 15
2 Wir sind die Roboter ................................................................................................... 21
3 Arten der Programmierung ...................................................................................... 45
4 Die Arduino-Plattform ............................................................................................... 53
5 Die kleine Werkstatt ................................................................................................... 99
6 Programmiergrundlagen .......................................................................................... 131
7 Los geht’s! – Erste Praxis ........................................................................................... 179
8 Keine Schraube locker – Die Montage des eigenen Roboters ...................... 261
9 Drive me crazy? – Die erste Fahrstunde ............................................................... 333
10 Pimp My Robot! – Mögliche Erweiterungen ...................................................... 357
11 Der Roboter und der Rest der Welt ........................................................................ 399
5
Inhalt
Inhalt
Geleitwort des Fachgutachters ........................................................................................................... 13
1
1 Don’t panic! – Einleitung 15
1.1 Für wen ist dieses Buch geeignet? ................................................................................... 16
1.1.1 Programmierkenntnisse? .................................................................................... 16
1.1.2 Altersklassen ........................................................................................................... 16
1.1.3 Handwerkliches Geschick und Elektronikwissen? ...................................... 17
1.2 Wie sollte das Buch gelesen werden? ............................................................................ 17
1.3 Das Roboterkit zum Buch ..................................................................................................... 17
1.3.1 Welche Teile benötige ich zum Bau des Roboters? .................................... 18
1.4 Die Webseite zum Buch ........................................................................................................ 19
1.4.1 Robotiklabor – der Podcast rund um Robotikthemen ............................... 19
1.5 Danksagung ............................................................................................................................... 19
2
2 Wir sind die Roboter 21
2.1 Welche Arten von Robotern gibt es? .............................................................................. 21
2.1.1 Zweibeinige Roboter ............................................................................................ 22
2.1.2 Sechsbeinige Roboter ........................................................................................... 23
2.1.3 Zwei- und dreirädrige Roboter .......................................................................... 25
2.1.4 Vierrädrige Roboter ............................................................................................... 27
2.1.5 Sechsrädrige Roboter ........................................................................................... 29
2.1.6 Roboter mit Raupenantrieb ............................................................................... 30
2.1.7 Schlangenroboter .................................................................................................. 31
2.1.8 Tauchroboter .......................................................................................................... 32
2.1.9 Fazit ............................................................................................................................ 33
2.1.10 App-Empfehlung .................................................................................................... 34
2.2 Woraus besteht ein Roboter? ............................................................................................ 35
2.2.1 Grundsätzliches ..................................................................................................... 35
2.2.2 Sensoren ................................................................................................................... 35
2.2.3 Aktoren ...................................................................................................................... 36
Inhalt
6
2.3 Wie und womit »denkt« ein Roboter? ........................................................................... 38
2.4 Mikrocontroller allgemein .................................................................................................. 38
2.4.1 Alternativen zum Arduino-Board ..................................................................... 39
2.5 Fazit ............................................................................................................................................... 43
3
3 Arten der Programmierung 45
3.1 Grafische Programmierung ................................................................................................. 45
3.1.1 Grafische Programmierung mit »Scratch« ................................................... 46
3.2 Textbasierte Programmierung .......................................................................................... 49
4
4 Die Arduino-Plattform 53
4.1 Was ist Arduino? ...................................................................................................................... 53
4.1.1 Die Arduino-Projektwebseite ............................................................................ 54
4.1.2 Arduino, Genuino, Verwirrduino? .................................................................... 54
4.2 Die Arduino-Hardware .......................................................................................................... 55
4.2.1 Das Arduino-Board für den Roboter ................................................................ 55
4.2.2 Verschiedene Arduino-Boards ........................................................................... 65
4.2.3 Die Einzelteile für Ihren Roboter bzw. das Roboterkit .............................. 71
4.2.4 Treiberinstallation ................................................................................................. 79
4.3 Die Arduino-Software ............................................................................................................ 79
4.3.1 Download und Installation ................................................................................ 79
4.3.2 Start ............................................................................................................................ 93
4.4 Die Entwicklungsumgebung .............................................................................................. 94
4.5 Die Software im Detail .......................................................................................................... 94
4.5.1 Ändern der Sprache .............................................................................................. 94
4.5.2 Die grafische Oberfläche im Detail .................................................................. 95
4.5.3 Beispiele innerhalb der Software ..................................................................... 96
4.6 Fazit ............................................................................................................................................... 97
Inhalt
7
5
5 Die kleine Werkstatt 99
5.1 Fliegende Verdrahtung ......................................................................................................... 99
5.1.1 Vor- und Nachteile der fliegenden Verdrahtung ........................................ 100
5.2 Steckplatinen ............................................................................................................................ 101
5.2.1 Vor- und Nachteile der Steckplatinen ............................................................ 104
5.3 Werkzeuge ................................................................................................................................. 104
5.3.1 Sicherheitsbrille ..................................................................................................... 104
5.3.2 Seitenschneider ..................................................................................................... 105
5.3.3 Abisolierzange ........................................................................................................ 105
5.3.4 Lötkolben/Lötstation, Lötzinn und Schwamm ............................................ 107
5.3.5 Messgerät (optional) ............................................................................................ 110
5.3.6 Feuerzeug ................................................................................................................. 111
5.3.7 Schlitzschraubendreher, 2 bis 3 mm breit .................................................... 112
5.3.8 Sonstige Werkzeuge (optional) ........................................................................ 112
5.4 Kabel verbinden oder isolieren ......................................................................................... 115
5.4.1 Kabel verbinden ..................................................................................................... 115
5.5 Platinen ........................................................................................................................................ 117
5.6 Löten ............................................................................................................................................. 119
5.6.1 Was wird benötigt? .............................................................................................. 119
5.6.2 Wie geht es? ............................................................................................................ 120
5.6.3 Was sind kalte Lötstellen? .................................................................................. 130
5.7 Fazit ............................................................................................................................................... 130
6
6 Programmiergrundlagen 131
6.1 Stil .................................................................................................................................................. 131
6.1.1 Einrückung ............................................................................................................... 133
6.1.2 Eindeutigkeit/Sinnhaftigkeit ............................................................................. 133
6.1.3 Groß-/Kleinschreibung und Unterstriche ..................................................... 134
6.1.4 Muttersprache oder Englisch? .......................................................................... 134
6.1.5 Kommentieren und dokumentieren ............................................................... 135
6.1.6 Einheitlichkeit – Bleiben Sie Ihrem Stil treu! ................................................ 135
6.1.7 Zusammenfassung ............................................................................................... 135
Inhalt
8
6.2 Kommentare .............................................................................................................................. 136
6.3 Variablen ..................................................................................................................................... 136
6.3.1 Das Semikolon ........................................................................................................ 137
6.3.2 Das Leerzeichen ...................................................................................................... 137
6.3.3 Deklaration .............................................................................................................. 137
6.3.4 Datentypen .............................................................................................................. 137
6.4 Konstanten ................................................................................................................................. 142
6.4.1 Vordefinierte Konstanten ................................................................................... 142
6.5 #define (Präprozessor-Anweisung) ................................................................................. 143
6.6 Operatoren ................................................................................................................................. 144
6.7 Kontrollstrukturen .................................................................................................................. 145
6.7.1 Der Befehl »if« ........................................................................................................ 145
6.7.2 Der Befehl »if...else« ............................................................................................. 147
6.7.3 Die »switch«-Anweisung .................................................................................... 148
6.8 Schleifen ...................................................................................................................................... 150
6.8.1 Die »for«-Schleife .................................................................................................. 151
6.8.2 Die »while«-Schleife ............................................................................................. 152
6.8.3 Die »do...while«-Schleife ..................................................................................... 153
6.9 Funktionen ................................................................................................................................. 154
6.9.1 Parameter und Argumente ................................................................................ 157
6.9.2 Argumente ............................................................................................................... 158
6.9.3 Begrenzte Haltbarkeit – oder: der Gültigkeitsbereich von
Variablen .................................................................................................................. 159
6.10 Die »setup«-Funktion ............................................................................................................ 162
6.11 Die »loop«-Funktion .............................................................................................................. 163
6.11.1 Das kleinstmögliche Arduino-Programm ...................................................... 164
6.12 Verzögerungen und Zeitsteuerung ................................................................................. 164
6.13 Ein- und Ausgänge .................................................................................................................. 165
6.14 Fehlersuche/Debugging und die Anzeige von Werten .......................................... 166
6.14.1 Die LED als Mittel zur Fehlersuche .................................................................. 166
6.14.2 Der serielle Port – Ausgabe von Text .............................................................. 168
6.14.3 Ausgabe von Variablenwerten auf dem Seriellen Monitor ..................... 171
6.15 Bibliotheken (Libraries) ......................................................................................................... 176
6.16 Fazit ............................................................................................................................................... 177
Inhalt
9
7
7 Los geht’s! – Erste Praxis 179
7.1 Der erste Kontakt mit der Hardware .............................................................................. 179
7.1.1 »Blinky« – Ansteuerung einer LED ................................................................... 179
7.1.2 Übertragen der Software auf das Arduino-Board ...................................... 183
7.1.3 Fehlersuche ............................................................................................................. 186
7.1.4 Herr Ohm und sein Gesetz ................................................................................. 187
7.1.5 Wie dimme ich eine LED? ................................................................................... 190
7.1.6 Zwischenfazit ......................................................................................................... 196
7.2 Ist da jemand? – Kontakt mit der Außenwelt ............................................................ 196
7.2.1 Schalter abfragen .................................................................................................. 196
7.2.2 Taster abfragen ...................................................................................................... 200
7.2.3 Sensoren ................................................................................................................... 206
7.2.4 Infrarotsensor ......................................................................................................... 206
7.2.5 Ultraschallsensoren .............................................................................................. 215
7.2.6 Zwischenfazit ......................................................................................................... 219
7.3 Hört mich jemand? – Ausgabe von Signalen .............................................................. 220
7.3.1 Der Piezosignalgeber ........................................................................................... 220
7.3.2 Melodien programmieren .................................................................................. 224
7.3.3 Ein Musikinstrument ........................................................................................... 224
7.3.4 Zwischenfazit ......................................................................................................... 228
7.4 Der Diener – Ansteuerung von Servos ........................................................................... 229
7.4.1 Was sind Servos, und wie funktionieren sie? .............................................. 229
7.4.2 Wie werden Servos angesteuert? .................................................................... 231
7.5 Ich muss hier weg! – Ansteuerung von Motoren ...................................................... 238
7.5.1 Arten von Motoren ............................................................................................... 238
7.5.2 Wie werden Motoren angesteuert? ................................................................ 239
7.5.3 Motoransteuerung realisieren .......................................................................... 243
7.5.4 Ein Sensorventilator ............................................................................................. 253
7.6 Fazit ............................................................................................................................................... 259
7.6.1 Letzte Vorbereitung vor dem Zusammenbau des Roboters ................... 259
Inhalt
10
8
8 Keine Schraube locker – Die Montage des eigenen Roboters 261
8.1 Überblick ..................................................................................................................................... 261
8.1.1 Die Teile für den Arduino-Roboter ................................................................... 262
8.1.2 Die Werkzeuge für den Zusammenbau des Arduino-Roboters ............. 264
8.1.3 Arten der Montage ................................................................................................ 264
8.2 Los geht’s – Schritt für Schritt zum Bot ......................................................................... 268
8.2.1 Vorbereitung ........................................................................................................... 268
8.2.2 Die Grundplatte ..................................................................................................... 270
8.2.3 Der kleine Motorhalter ........................................................................................ 274
8.2.4 Der große Motorhalter ........................................................................................ 277
8.2.5 Löten der Drähte bzw. Litze an die Motoren ................................................ 280
8.2.6 Motoren mit Schrauben und Muttern versehen ........................................ 282
8.2.7 Montage des linken Motors ............................................................................... 284
8.2.8 Montage des rechten Motors ............................................................................ 287
8.2.9 Befestigung der beiden Motoren vorne ......................................................... 288
8.2.10 Montage der oberen Platte ................................................................................ 291
8.2.11 Der Batteriehalter bzw. Akkuhalter ................................................................. 295
8.2.12 Das Stützrad bzw. Kugellager ........................................................................... 297
8.2.13 Der Servo .................................................................................................................. 301
8.2.14 Das Servorad oder Servokreuz ........................................................................... 303
8.2.15 Das Arduino-Board ................................................................................................ 305
8.2.16 Das Roboter-Gesicht ............................................................................................. 307
8.2.17 Das Kabel zum Infrarotsensor ........................................................................... 309
8.2.18 Der Infrarotsensor – die »Augen« .................................................................... 313
8.2.19 Der Kopf .................................................................................................................... 315
8.2.20 Das Arduino Motor Shield .................................................................................. 316
8.2.21 Die Spannungsversorgung und Motorkabel ................................................ 318
8.2.22 Der Servostecker – mit Hack .............................................................................. 321
8.2.23 Der Sensorstecker .................................................................................................. 325
8.2.24 Finale: Die Räder .................................................................................................... 326
8.3 Alles bereit? – Ein paar Tests .............................................................................................. 328
8.3.1 Stromversorgungstest ......................................................................................... 328
8.3.2 Servotest ................................................................................................................... 329
8.3.3 Sensortest ................................................................................................................ 330
8.3.4 Motortest ................................................................................................................. 330
8.4 Fazit ............................................................................................................................................... 331
Inhalt
11
9
9 Drive me crazy? – Die erste Fahrstunde 333
9.1 Roboterchoreografie .............................................................................................................. 333
9.1.1 Grundrichtungen ................................................................................................... 333
9.1.2 Den Roboter im Zickzack fahren lassen ......................................................... 338
9.1.3 Den Roboter in einer Spirale fahren lassen .................................................. 341
9.2 Hindernisvermeidung ........................................................................................................... 344
9.2.1 Wie funktioniert Hindernisvermeidung? ...................................................... 344
9.2.2 Umsetzung in die Praxis ..................................................................................... 346
9.2.3 Der Roboter als Haustier ..................................................................................... 347
9.3 Fazit ............................................................................................................................................... 356
10
10 Pimp My Robot! – Mögliche Erweiterungen 357
10.1 Grundsätzliche Ansteuerung eines Displays ............................................................... 358
10.1.1 Installation der LCD-Shield-Library ................................................................. 358
10.1.2 Montage eines LCDs auf dem Roboter und Nutzung von
Shield-Adaptern ..................................................................................................... 363
10.1.3 Hindernisanzeige .................................................................................................. 365
10.1.4 Entfernungsanzeige auf dem LCD ................................................................... 370
10.1.5 Hinderniszählung und Anzeige auf dem LCD .............................................. 372
10.2 Press Any Key! – Interaktion per Tastatur ................................................................... 375
10.2.1 Abfragen der Tasten ............................................................................................. 376
10.2.2 Steuerung des Roboters über die Tasten ...................................................... 379
10.2.3 Die Geschwindigkeit über die Tasten einstellen ........................................ 383
10.3 Ich sehe was ... – weitere Sensoren ................................................................................. 388
10.3.1 Infrarotsensor zur Fernsteuerung ................................................................... 388
10.3.2 Treppen- und Tischkantenerkennung ............................................................ 388
10.3.3 Der Roboter zählt Personen ............................................................................... 389
10.3.4 Bring mich ins Licht – der Helligkeitssensor ................................................ 391
10.3.5 Reflexionssensor – Linienverfolgung ............................................................. 391
10.3.6 Farbsensor ............................................................................................................... 391
10.3.7 Bewegungssensor ................................................................................................. 392
10.4 Spannendes – Energiemanagement ............................................................................... 392
10.4.1 Spannungsanzeige ............................................................................................... 392
10.4.2 Akkuwarner mittels Spannungsteiler ............................................................ 394
10.5 Fazit ............................................................................................................................................... 396
Inhalt
12
11
11 Der Roboter und der Rest der Welt 399
11.1 Kommunikation per Infrarot .............................................................................................. 399
11.1.1 Coming home – Suchen einer Basisstation .................................................. 399
11.1.2 Und was machst du so? – Roboter kommunizieren .................................. 400
11.1.3 Alles im grünen Bereich? – Der Roboter als Gärtner ................................. 400
11.2 Kommunikation mittels Sprache ..................................................................................... 400
11.2.1 Hello world! – Sprachausgabe für den Roboter .......................................... 400
11.2.2 Simon befiehlt – Spracherkennung für den Roboter ................................. 401
11.3 Steuerung per Bluetooth ..................................................................................................... 401
11.4 Internet of Things – Das Internet der Dinge ................................................................ 401
11.5 Fazit ............................................................................................................................................... 402
Schlusswort ................................................................................................................................................ 403
Index ............................................................................................................................................................. 405
Index
405
Index
#define ......................................................................... 143
3,3V .................................................................................. 65
5V ..................................................................................... 64
A
Abisolierzange .......................................................... 105
Ablaufplan .................................................................... 46
Acryl .............................................................................. 267
Acrylglas ........................................................................ 78
Adafruit .............................................................. 358, 388
Adapter ........................................................................ 363
Akku ......................................................................... 69, 74
Akkuhalter .................................................................... 75
Akkuüberwachung .................................................. 396
Akkuwarner ............................................................... 394
Aktor ........................................................................ 35, 36
Aktuator Aktor
Aldebaran Robotics ................................................... 22
Allradantrieb ............................................................... 27
Alternativen zum Arduino .................................... 39
analogRead ................................................................. 392
Android .......................................................................... 34
Anregungen ............................................................... 399
Anzeige ........................................................................ 166
App .................................................................................. 34
Apple Remote Fernbedienung ........................... 388
Arbeitsgerät ................................................................. 99
Arduino
Benutzer-LED ........................................................... 58
Ein- und Ausgänge ................................................ 61
Ein-/Ausgänge ......................................................... 58
Hardwarereferenz .................................................. 57
I2C-Schnittstelle ..................................................... 62
ICSP-Stecker 1 .......................................................... 58
ICSP-Stecker 2 .......................................................... 58
Mikrocontroller ...................................................... 59
Montagepunkt ........................................................ 59
Power-LED ................................................................. 58
Reset-Taster .............................................................. 57
Stromversorgung ................................................... 60
Stromversorgungsbuchse ................................... 60
Übertragungs-LEDs (TX/RX) .............................. 59
USB-Buchse .............................................................. 60
Versionsnummer ................................................... 56
Arduino Create ............................................................ 80
Arduino Mega 2560 ................................................... 67
Arduino Micro ............................................................. 70
Arduino MKR1000 ........................................... 69, 401
Arduino Motor Shield ............................................ 216
Arduino Nano .............................................................. 70
Arduino Proto Shield ................................... 219, 391
Arduino Uno ................................................................. 55
Arduino WIFI Shield ............................................... 401
Arduino Wireless SD Shield ................................. 217
Arduino Zero ................................................................ 68
Arduino-Shield ......................................................... 215
Argument ................................................................... 158
Array ............................................................................. 151
ATmega ........................................................................... 38
ATmega16 ...................................................................... 79
Atmel ............................................................................... 38
Aufladung, statische .................................................. 55
Ausgang ....................................................................... 165
autonom ........................................................................ 21
B
Basisstation ................................................................ 399
Batterie ........................................................................... 74
Batteriehalter ............................................................... 75
Baud .............................................................................. 169
Bausatz ............................................................................ 18
BeagleBoard .................................................................. 41
BeagleBone Black ........................................................ 41
Beispiele ...................................................................... 399
Benutzerverzeichnis ................................................. 82
Betriebssystem ..................................................... 39, 79
Bewegungsmelder ................................................... 392
Bezeichner .................................................................. 137
Bibliotheken .............................................................. 176
Biegelehre ................................................................... 113
Bildschirm .................................................................. 166
Binärsystem ............................................................... 138
Bit ................................................................................... 138
Blinklicht ........................................................................ 36
Index
406
Blinky ............................................................................ 179
Block ........................................................... 145, 150, 162
Bluetooth .................................................................... 401
boolean ........................................................................ 141
Boolesche Operatoren ........................................... 146
Bootloader .................................................................... 59
Bounce ......................................................................... 203
Breadboard ................................................................. 101
break ............................................................................. 149
Browser .......................................................................... 80
Buchsenleiste ............................................................ 363
Bug ................................................................................. 166
Buzzer ........................................................................... 220
Byte ............................................................................... 138
byte ................................................................................ 137
C
C ............................................................................... 16, 131
C++ ................................................................................... 16
case ................................................................................ 149
Chassis ............................................................................ 78
Code .............................................................................. 131
Community ................................................................. 17
Compiler ............................................................... 94, 137
const ............................................................................. 142
CPU .................................................................................. 42
Curiosity ........................................................................ 29
D
Dashboard .................................................................... 92
Data Logging .............................................................. 217
Datentyp ..................................................................... 137
boolean ................................................................... 141
byte ........................................................................... 137
float .......................................................................... 141
int .............................................................................. 139
long ........................................................................... 141
Debugging .................................................................. 166
Deklaration ...................................................... 137, 151
delay .............................................................................. 164
Dezimalsystem ......................................................... 138
DFKI ................................................................................. 23
Display ......................................................................... 357
do...while ..................................................................... 153
Dokumentation ....................................................... 135
Download ............................................................... 19, 79
Doxygen ...................................................................... 135
Draht ............................................................................... 73
Drehrichtung ............................................................ 337
Drehzahl ......................................................................... 76
Dritte Hand ................................................................ 113
Dualsystem ................................................................ 138
Durchflussspannung ............................................. 190
Durchgangsprüfer ................................................... 330
Durchkontaktierung ..................................... 120, 128
E
Eclipse ............................................................................. 94
Ein-/Ausgänge, digitale ............................................ 63
Eingang ........................................................................ 165
analoger .......................................................... 64, 392
Einstiegsplattform ..................................................... 33
Elektromotor ................................................................ 36
else ................................................................................ 147
Endlosschleife ........................................................... 152
Energiemanagement ............................................. 392
Energieversorgung ................................................. 392
Entfernung ................................................................. 210
Entfernungsanzeige ............................................... 370
Entprellen ................................................................... 203
Entwicklungsumgebung ......................................... 94
F
Fahrtrichtung ............................................................ 337
false ............................................................................... 142
FAQ ................................................................................... 54
Farbsensor .................................................................. 391
Fehlermeldung ......................................................... 187
Fehlersuche ................................................................ 186
Tipps ........................................................................ 252
Fehlerursache ........................................................... 252
Fernbedienung ......................................................... 388
Feuerzeug ................................................................... 111
Finder .............................................................................. 88
Firmware ..................................................................... 183
Flachzange .................................................................. 112
Index
407
flashen .......................................................................... 183
float ............................................................................... 141
Flussmittel ........................................................ 108, 121
for ................................................................................... 151
Formatierung ............................................................ 383
FORMULOR ................................................................ 267
forward voltage ........................................................ 190
Fotowiderstand ........................................................ 391
Freiheitsgrad ................................................................ 23
Frequenz ...................................................................... 224
fritzing .......................................................................... 118
FTDI ................................................................................. 88
Funktion ............................................................ 154, 183
G
Ganzzahl ...................................................................... 139
Genuino ......................................................................... 54
Getriebe ................................................................ 76, 229
Getriebemotor ............................................................ 76
Gleichstrommotor ........................................... 76, 238
Gleichzeitigkeit ......................................................... 378
GND ........................................................................ 62, 319
GPIO ................................................................................ 42
GPU .................................................................................. 42
Grafische Oberfläche ................................................ 94
GSM Shield ................................................................. 219
GUI ................................................................................... 94
Gültigkeitsbereich ................................................... 159
H
Handynetz .................................................................. 219
HD-Kamera .................................................................. 23
HDMI ....................................................................... 41, 42
Heißkleber .................................................................. 266
Helfende Hand .......................................................... 113
Helligkeitssensor ..................................................... 391
HIGH ............................................................................. 143
Hindernisanzeige .................................................... 365
Hinderniszählung ................................................... 372
HiTEC ............................................................................ 363
H-Schaltung ............................................................... 240
Humanoid .................................................................... 22
I
I2C ........................................................................... 62, 358
IC Integrated Circuit
Icon .................................................................................. 95
ICSP .................................................................................. 58
IDE .................................................................................... 94
if ..................................................................................... 145
Infrarotdistanzmesser .................................... 76, 208
Infrarotdistanzsensor ........................................ 36, 75
Infrarotempfänger .................................................. 399
Infrarot-LED ............................................................... 206
Infrarotsender .......................................................... 399
Infrarotsensor ........................................................... 206
Infrarotsignal ............................................................ 388
Initialisierung ........................................ 138, 151, 169
INPUT .................................................................. 143, 165
INPUT_PULLUP ........................................................ 165
Installation .................................................................... 79
Installer .......................................................................... 80
int .................................................................................. 139
Integer .......................................................................... 139
Integrated Circuit ............................................. 38, 242
Integrierter Schaltkreis ......................................... 242
Interface ......................................................................... 62
Internet ................................................................ 69, 401
Internet of Things (IoT) ......................................... 401
iOS .................................................................................... 34
iPad ........................................................................ 34, 401
iPhone .......................................................................... 401
IR-Bake ......................................................................... 399
IR-Diode ...................................................................... 399
IR-LED ........................................................................... 206
IR-Sensor ..................................................................... 207
Isolierband ................................................................. 116
Isolierung ................................................................... 105
J
Jumper Wire ................................................ 73, 99, 102
K
Kabelbinder ............................................................... 116
Kabelmesser .............................................................. 106
Index
408
Kalte Lötstelle .................................................. 123, 130
Kamera ........................................................................... 35
Keypad ......................................................................... 358
Kinect-Kamera ............................................................ 35
Klasse ............................................................................ 168
Klebeband ................................................................... 265
Konstante ................................................................... 142
Kosten ............................................................................ 21
Krokoklemmen ........................................................ 103
Kugellager ..................................................................... 25
L
L298 ............................................................................... 242
LabView ......................................................................... 49
Ladegerät ....................................................................... 74
Laser .............................................................................. 267
Layer ............................................................................. 120
LCD ................................................................................ 357
LDR ................................................................................ 391
Legierung .................................................................... 121
LEGO Mindstorms ..................................................... 39
Leiterbahn .................................................................. 120
Libraries ....................................................................... 176
Lichtschranke ............................................................ 389
Lichtsensor ................................................................. 391
LilyPad Arduino USB ................................................ 70
Linienverfolgung ..................................................... 391
Linker ..................................................................... 94, 137
Linux ........................................................................ 41, 79
Litze ........................................................................ 73, 116
Lizenzbedingungen .................................................. 83
Lochrasterplatine .......................................... 117, 119
long ................................................................................ 141
loop() ............................................................................. 163
Lötauge ........................................................................ 120
Lötbrücke .................................................................... 118
Lötdauer ...................................................................... 129
Lötkolben .................................................................... 107
Lötpunkt ...................................................................... 120
Lötstation .......................................................... 107, 119
Lötstelle
kalte ............................................................................. 99
Lötstopplack .............................................................. 121
Lötvorgang ................................................................. 129
Lötzinn ......................................................................... 108
LOW .............................................................................. 143
Lupe .............................................................................. 114
Lüsterklemme ........................................................... 115
M
macOS ...................................................................... 79, 86
male ................................................................................. 73
Männlicher Steckverbinder ................................... 73
map() ............................................................................ 214
Marsroboter .................................................................. 29
Masse ............................................................................... 62
Mecanum-Rad ............................................................. 27
Melodie ........................................................................ 224
Menüsteuerung ....................................................... 383
Messgerät .......................................................... 110, 330
Microsoft Kinect ......................................................... 35
Mikrocontroller ................................................... 38, 45
Mikrofon ........................................................................ 35
Modellbau .................................................................. 229
modularisieren ......................................................... 154
Montage ...................................................................... 261
Motor ........................................................................... 238
Motor Shield ....................................................... 73, 241
Motoransteuerung ........................................ 238, 243
Motorwelle ................................................................. 238
Multilayer ................................................................... 120
Multitasking .............................................................. 378
Musikinstrument .................................................... 224
N
Nao ................................................................................... 22
NASA ................................................................................ 29
Netzteil ........................................................................... 60
Note .............................................................................. 224
O
Ohmsches Gesetz .................................................... 395
Open Source ................................................................. 40
Operator ............................................................. 144, 146
Opportunity ................................................................. 29
OUTPUT .............................................................. 143, 165
Index
409
P
Parameter ................................................................... 157
Parameterliste ........................................................... 158
Periodendauer .......................................................... 231
Piezo ........................................................... 141, 220, 225
Piezoschallwandler ................................................. 220
Piezosignalgeber ...................................................... 220
pinMode() ................................................................... 165
Pinzette ........................................................................ 113
PIR .................................................................................. 392
Platine
doppelseitige ......................................................... 120
einseitige ................................................................ 120
playTone ...................................................................... 223
Plexiglas ........................................................................ 78
Podcast ........................................................................... 19
Polymethylmethacrylat .......................................... 78
Potenziometer .......................................................... 230
Poti ...................................................................... 230, 364
Präprozessor .............................................................. 143
Preis ................................................................................. 21
Prellen .......................................................................... 203
print .............................................................................. 170
println .......................................................................... 170
Programmablaufplan .............................................. 45
Programmbeispiele, Download ........................... 19
Programmieren .......................................................... 45
Programmiersprache ............................................. 131
Programmierstil ....................................................... 131
Programmierumgebung ........................................ 49
Programmierung ....................................................... 45
grafische .................................................................... 45
Grundlagen ........................................................... 131
textbasierte .............................................................. 49
Programmoberfläche ............................................... 95
Programmschleife ................................................... 163
Projektwebseite .......................................................... 54
Protoboard ................................................................. 101
Prototyp ............................................................ 101, 219
Pull-down-Widerstand .......................................... 198
Pull-up-Widerstand ...................................... 165, 198
Pulsdauer .................................................................... 231
Pulsweitenmodulation ............ 190, 191, 231, 251
PWM ................................................. 191, 231, 251, 334
Q
QTR-8RC ...................................................................... 391
R
Rad .................................................................................... 77
aktives ........................................................................ 25
Mecanum .................................................................. 27
passives ...................................................................... 25
RAM .............................................................................. 139
Raspberry Pi .................................................................. 41
RasPi ................................................................................ 42
Raupenantrieb ............................................................. 30
Referenz ...................................................................... 163
Reihenschaltung ...................................................... 394
RESET ............................................................................ 375
Reset ......................................................................... 57, 65
Reset-Taster .................................................................. 55
RGB LCD Shield ........................................................... 18
RGB-LED ...................................................................... 392
RoboCup ........................................................................ 22
Roboter
Arduino-Roboter .................................................... 27
Arexx RP6 V2 ........................................................... 30
Arten ........................................................................... 21
Bestandteile ............................................................. 35
Crex ............................................................................. 23
Curiosity .................................................................... 29
direcs1 ........................................................................ 28
dreirädriger .............................................................. 25
Entwicklungskosten ............................................. 21
mit Raupenantrieb ................................................ 30
MURCS ....................................................................... 25
Nao .............................................................................. 22
OpenROV .................................................................. 33
Preis ............................................................................. 21
Schlangenroboter .................................................. 31
sechsbeiniger ........................................................... 23
sechsrädriger ........................................................... 29
Spirit ............................................................................ 29
Tauchroboter ........................................................... 32
Uncle Sam ................................................................. 31
vierrädriger .............................................................. 27
zweibeinige .............................................................. 22
zweirädriger ............................................................. 25
Index
410
Roboterkit ..................................................................... 17
ROBOTS-iPad-App ..................................................... 34
Routine ........................................................................ 158
Rückgabewert ............................................................ 154
Rundung ...................................................................... 172
RX ..................................................................................... 59
S
Schalter ........................................................................ 196
Schaltung
Prototyp .................................................................. 101
Schlangenroboter ...................................................... 31
Schleife ......................................................................... 150
do...while ................................................................. 153
for .............................................................................. 151
fußgesteuert .......................................................... 154
kopfgesteuert ........................................................ 152
while ......................................................................... 152
Schlitzschraubendreher ........................................ 112
Schnittstelle ................................................................. 62
Schrittmotor .............................................................. 239
Schrumpfschlauch .................................................... 78
Schwamm ................................................................... 109
Scratch ............................................................................ 46
SD-Karte ......................................................................... 41
SD-Kartenleser .......................................................... 217
Seele .............................................................................. 121
Seitenschneider ........................................................ 105
Semikolon ................................................................... 137
Sensor .................................................................... 35, 206
Infrarotdistanzsensor .......................................... 36
Stromsensor ............................................................. 36
Ultraschallsensor ................................................... 36
Sensortest ................................................................... 330
Serial ............................................................................. 168
Serial.begin() .............................................................. 169
Serieller Monitor ..................................... 64, 169, 394
Servo ............................................................... 36, 75, 229
Servoansteuerung ............................................ 96, 232
Servoarm ..................................................................... 229
Servotest ..................................................................... 329
Servowelle .................................................................. 229
setup ............................................................................. 162
Shadowing .................................................................. 162
Shield ..................................................................... 65, 176
Sicherheitsbrille ....................................................... 104
Sicherheitshinweis .................................................... 55
Signal ............................................................................ 220
Sketch ........................................................................... 131
Sketchbook ................................................................ 131
SMD .................................................................................. 66
Sn60Pb40 .................................................................... 121
SoC .................................................................................... 38
Spannung messen ................................................... 392
Spannungsanzeige .................................................. 392
Spannungsteiler ....................................................... 394
Spitzzange .................................................................. 112
Sprachausgabe ................................................... 23, 400
Spracherkennung .................................................... 401
Sprachreferenz ............................................................ 54
Stabilisierung ............................................................... 25
Steckbrücke .................................................................. 73
Steckplatine ............................................................... 101
Aufbau .................................................................... 101
Steckverbinder
female ......................................................................... 73
männlich ................................................................... 73
Stepper ......................................................................... 239
Stromsensor ................................................................. 36
Stromversorgung ........................................... 235, 322
Stromversorgungsbuchse ...................................... 60
Stromversorgungstest .......................................... 328
Stuhlbeinproblematik .................................. 237, 344
Stützrad ................................................................... 25, 77
Summer ....................................................................... 220
Supportforum .............................................................. 54
switch...case ............................................................... 149
Symbol ............................................................................ 95
Syntax .......................................................................... 155
System-on-a-Chip ....................................................... 38
T
Taster ................................................ 200, 358, 375, 390
Tauchroboter ............................................................... 32
Teileliste ...................................................................... 262
Temperatur ................................................................ 129
Testkabel ........................................................................ 73
Text-to-Speech ......................................................... 400
TFT Touch Shield ..................................................... 217
Thingiverse ................................................................ 267
TinyDuino ..................................................................... 70
Toleranz ...................................................................... 336
Index
411
Töne .............................................................................. 220
tone ............................................................................... 223
Touchscreen .............................................................. 217
Treiber ............................................................................ 79
Treiberinstallation ............................................. 79, 80
Trimmer ...................................................................... 364
Troubleshooting ...................................................... 186
true ................................................................................ 142
TSOP38238 ....................................................... 207, 388
TWI ................................................................................... 62
Twitter ................................................................ 217, 401
TX .............................................................................. 59, 63
U
Überlauf .................................................... 140, 176, 383
Überwachung ............................................................ 389
Ubuntu ........................................................................... 88
Ultraschallsensor .............................................. 36, 215
Unterprogramm ...................................................... 158
Untersetzung ............................................................... 76
Upload ............................................................................ 59
USB-Buchse ......................................................... 60, 168
USB-Schnittstelle, serielle .................................... 168
V
Variable
anzeigen ................................................................. 171
globale ..................................................................... 159
lokale ....................................................................... 159
Variablen ..................................................................... 136
Verdrahtung
feste ............................................................................. 99
fliegende .................................................................... 99
Vergleichsoperator ................................................. 146
Verkabelung ................................................................. 99
Verlöten ...................................................................... 116
Verzögerung .............................................................. 164
Video ............................................................................ 268
Vin ................................................................. 64, 318, 324
Visual Studio ................................................................ 94
void ...................................................................... 155, 338
W
Wasserdicht .................................................................. 33
Weiblicher Steckverbinder ..................................... 73
Werkstatt
Ausstattung ............................................................. 99
Werkzeug ....................................................................... 99
Werkzeugliste ........................................................... 264
while ............................................................................. 152
Widerstandswert ..................................................... 188
WIFI Shield ................................................................. 217
Windows ........................................................................ 79
Windows Installer ...................................................... 80
Windows 8 ..................................................................... 80
Wire .................................................................................. 62
WLAN .......................................... 40, 69, 217, 401, 402
X
Xcode ............................................................................... 94
Z
Zählen .......................................................................... 389
Zusammenbau ......................................................... 261
Zuweisung .................................................................. 136
Markus Knapp
Roboter bauen mit Arduino – Die Anleitung für Einsteiger411 Seiten, broschiert, in Farbe, 2. Auflage 2016 29,90 Euro, ISBN 978-3-8362-4351-3
www.rheinwerk-verlag.de/4242
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel- lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Markus Knapp arbeitet in der IT eines großen Unterneh-mens in Hannover und beschäftigt sich sich seit vielen Jah-ren privat leidenschaftlich mit Robotik und Software-Ent-wicklung. Seit 2011 betreibt er den sehr beliebten und erfolgreichen Podcast www.robotiklabor.de rund um die Entwicklung von Robotern. Darüber hinaus ist er gefragter Sprecher auf Veranstaltungen für Bastler.
Wissen, wie’s geht.