36
Leseprobe Mit 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 Einsteiger 411 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.

Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

Embed Size (px)

Citation preview

Page 1: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 2: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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!

Page 3: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 4: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 5: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 6: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 7: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 8: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 9: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 10: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 11: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 12: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 13: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 14: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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= )

Page 15: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 16: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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= )

Page 17: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

= )

Page 18: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 19: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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-

Page 20: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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= )

Page 21: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 22: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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);

Page 23: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.

Page 24: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 25: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 26: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 27: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 28: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 29: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 30: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 31: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 32: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 33: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 34: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 35: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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

Page 36: Roboter bauen mit Arduino – Die Anleitung für Einsteiger · 15 Kapitel 1 Don t panic! Einleitung »Als der Pflug erfunden wurde, haben eini ge gesagt, das ist schlecht. Dasselbe

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.