Sie sind auf Seite 1von 65

Wissen, wies geht.

Leseprobe
In dieser Leseprobe erfahren Sie alles zur Arduino-Plattform und
knnen sofort Ihr erstes Arduino-Projekt verwirklichen. Auerdem
knnen Sie einen Blick in das vollstndige Inhalts- und Stichwort-
verzeichnis des Buches werfen.

Die Arduino-Plattform
Los gehts Erste Praxis

Inhalt

Index

Der Autor

Leseprobe weiterempfehlen

Markus Knapp
Roboter bauen mit Arduino
Die Anleitung fr Einsteiger
409 Seiten, broschiert, in Farbe, Oktober 2014
24,90 Euro, ISBN 978-3-8362-2941-8

www.galileo-press.de/3642
Kapitel 4
Die Arduino-Plattform
In diesem Kapitel erfahren Sie unter anderem, was es mit der berhmten Arduino-Platt-
form auf sich hat. Auerdem werden Sie die Software installieren und kennenlernen.

Zunchst werden Sie sehen, was Arduino berhaupt ist. In Abschnitt 4.2 erlutere ich
Ihnen dann die Bestandteile der Arduino-Hardware und gebe Ihnen eine Einfhrung in
die Arduino-Software. Ich werde Ihnen das Roboterkit zu diesem Buch erlutern und
aufzeigen, in welchem Kapitel Sie spter die Einzelteile verwenden. Im Anschluss wer-
den Sie in Abschnitt 4.3 die Arduino-Software und Treiber auf Ihrem Computer installie-
ren. Dadurch werden Sie am Ende dieses Kapitels die Grundlagen kennen, die Sie
bentigen, um in Kapitel 7, Los gehts! Erste Praxis, Ihr erstes Arduino-Programm zu
schreiben und auf dem Arduino-Board zum Leben zu erwecken.

4.1 Was ist Arduino?


Wenn ich den Slogan der Projektwebseite1 frei bersetze, ist Arduino eine Open-Source-
Elektronikplattform zum Erstellen von Prototypen, die auf flexibler, einfach zu benutzen-
der Hard- und Software basiert. Sie ist fr Knstler, Designer, Bastler und jeden gedacht,
der daran interessiert ist, interaktive Objekte oder Umgebungen zu erstellen.

Das erste Arduino-Board wurde bereits 2005 entwickelt und ist einer Legende zufolge
nach einer Kneipe benannt. Das Arduino-Board war ursprnglich fr Schulen gedacht,
und es entwickelte sich schnell eine groe Anhngerschaft, da sowohl die eigens dafr
entwickelte Software als auch die Hardware hervorragend fr Einsteiger geeignet sind.
Allein in den ersten drei Jahren wurden circa 50.000 Arduino-Boards verkauft ein
uerst erfolgreiches Open-Source-Projekt. Beim Arduino-Projekt sind sowohl die
Hardware als auch die Software Open Source.

4.1.1 Die Arduino-Projektwebseite


Auch wenn die meisten Texte auf der Website des Arduino-Projekts in englischer Spra-
che abgefasst sind, sollte sie spter Ihre erste Anlaufstelle sein. Warum? Auch wenn Sie

1 http://arduino.cc

53
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

in Kapitel 6, Programmiergrundlagen, mehr ber die Arduino-Programmierspra- wurde. Es gibt neben diesem Board viele weitere Arduino-Boards, die ich Ihnen in
che gelernt haben werden, knnen immer mal wieder Fragen auftauchen. Neben der Abschnitt 4.2.3 vorstellen werde. Zunchst will ich aber die einzelnen Bestandteile des
vollstndigen Sprachreferenz2 finden Sie auf der Webseite unzhlige fertige Beispiele Arduino Uno erlutern. Schauen Sie sich dazu Abbildung 4.1 genauer an.
mit ausfhrlichen Beschreibungen. Zustzlich gibt es eine FAQ (eine Liste hufig gestell-
ter Fragen) und ein Supportforum. Auerdem finden Sie dort eine bersicht ber die
vielen verschiedenen Arduino-Boards, die immer auf dem aktuellsten Stand gehalten
wird. Speichern Sie sich also gleich den Link der Projektseite, um ihn immer griffbereit
zu haben.

4.2 Die Arduino-Hardware


Nach dieser Einleitung werde ich nun nher auf die Arduino-Hardware eingehen. Zuerst
aber ein wichtiger Sicherheitshinweis.

Achtung: Elektrostatische Aufladung zerstrt den Arduino!


Bevor Sie elektrische Bauteile oder Platinen wie Ihren Arduino berhren, sollten Sie sich
zur Sicherheit immer entladen!
Entladen? Sicherlich haben Sie schon mal einen gewischt bekommen, als Sie auf Abbildung 4.1 Der Arduino Uno und seine wichtigsten Bestandteile
einem Teppichboden mit Schuhen mit Gummisohle herumgelaufen sind und dann
einen leitenden Gegenstand oder einen anderen Menschen berhrt haben. Die Ursache
Wenn Sie sich bereits mit Elektronik beschftigt haben, wird Ihnen das eine oder andere
dafr ist statische Aufladung, die leicht mehrere 10.000 Volt erreichen kann. Bauteil auf der Platine vielleicht bekannt vorkommen. In diesem Fall knnen Sie die fol-
genden Beschreibungen gegebenenfalls berspringen. Falls Sie ein Einsteiger sind,
Da elektronische Bauteile und damit auch Ihr Arduino-Board verhltnismig empfind-
dann lassen Sie sich von den neuen Abkrzungen und Begriffen, die Sie in Abbildung 4.1
lich gegen diese hohen Spannungen sind, sollten Sie elektrische Aufladung sicher los-
sehen, nicht abschrecken. Ich erklre sie nun der Reihe nach. Ich beginne in der Abbil-
werden. Dies knnen Sie ganz einfach tun, indem Sie sich kurz vor dem Berhren einer
dung beim Reset-Taster links oben und gehe dann im Uhrzeigersinn weiter.
Platine ber die Erde (Masse) entladen. In einer Wohnung oder einem Haus geht das am
einfachsten, indem Sie kurz einen Wasserhahn, eine nicht lackierte Stelle Ihres Compu-
Arduino Uno R3 die Version zhlt!
ters oder eines Heizkrpers berhren, denn diese sind immer geerdet. Als zustzliche
Vorsichtsmanahme sollten Sie Platinen immer nur am Rand anfassen und die Bauteile Obwohl das Arduino-Board schon eine Weile existiert, gibt es gelegentlich doch noch
oder Stecker nicht direkt an ihren Pins berhren. So erkennt man Sie gleich als Experten kleine Vernderungen, um es weiter zu verbessern. Um festzustellen, ob Sie die aktuelle
und das wollen Sie doch so schnell wie mglich werden, oder? Version haben, hilft ein kurzer Blick auf die Unterseite des Boards. Die Versionsnummer
finden Sie dort, wie in Abbildung 4.2: gezeigt. Entwickler sprechen bei einer neuen Ver-
sion oft auch von einem Release. Darum beginnt die Versionsnummer hier mit einem
R. Aktuelle Informationen ber die Releases finden Sie jederzeit in der offiziellen
4.2.1 Das Arduino-Board fr den Roboter Arduino-Hardwarereferenz3. Alle Angaben in diesem Buch beziehen sich auf die derzeit
Das Board, das Sie spter auf Ihrem Roboter verwenden, heit Arduino Uno. Uno ist aktuelle Version Arduino Uno R3.
Italienisch und bedeutet Eins. Denn es war das erste Arduino-Board, das je entwickelt

2 http://arduino.cc/en/Reference/HomePage 3 http://arduino.cc/en/Main/ArduinoBoardUno

54 55
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

bene Software auf Fehler analysieren und wrden zweifellos auf die fehlerhafte Anwei-
sung delay(4000000000) stoen und sie korrigieren.

Denglisch
Das Wort Reset ist in der deutschen Sprache heutzutage sehr gebruchlich, obwohl es
ein englisches Wort ist. Wenn Sie den Reset-Taster bettigen, hiee es korrekt einen
Reset durchfhren oder ausfhren. Viele sagen aber auch einfach den Arduino
resetten. Das klingt vielleicht ungewohnt. Aber Download und downloaden klangen
auch einmal seltsam oder Kidnapping und gekidnappt. Benutzt werden diese Begriffe
aber mittlerweile alle und im Duden stehen sie auch.

Der ICSP-Stecker 2
Lassen Sie sich nicht dadurch verwirren, dass die Beschreibung hier mit dem ICSP-Ste-
Abbildung 4.2 Die Versionsnummer auf der Rckseite des Boards
cker Nummer 2 beginnt. ICSP steht fr In-Circuit Serial Programming und bedeutet so
viel wie Programmieren in der Platine.

Der Reset-Taster In der Vergangenheit mussten Mikrocontroller zum bertragen neuer Software stets
Das englische Wort Reset bedeutet zurcksetzen oder in Grundstellung bringen. aus der Platine entfernt werden. Sie wurden dazu in eine spezielle zustzliche Hardware
Wenn Sie den Reset-Taster auf dem Arduino-Board bettigen, startet sich das Board wie gesteckt und dann neu programmiert. Das bedeutete durch das stndige Entfernen und
ein Computer neu und beginnt mit der Abarbeitung der im Mikrocontroller gespeicher- Stecken der Bauteile eine hohe mechanische Belastung, und es wurde zustzliche Hard-
ten Software. Vermutlich werden Sie den Reset-Taster selten bentigen. Denn in dem ware zum Programmieren bentigt.
Moment, in dem Sie das Board mit Strom versorgen, ist es immer in Grundstellung. Um Mit der Einfhrung des ICSP-Steckers konnte zumindest direkt auf das zu programmie-
aber an einen definierten Startpunkt zu gelangen, wenn das Arduino-Board scheinbar rende Bauteil zugegriffen werden, ohne es zu entfernen externe Hardware zum Pro-
nicht mehr reagiert, ist der Reset sehr hilfreich. grammieren ist weiterhin notwendig. Der ICSP-Stecker 2 wird zum Programmieren des
Ein Beispiel dazu: Sie wollen Ihren Roboter knftig durch die Gegend fahren lassen, und zweiten Mikrocontrollers auf dem Arduino-Board verwendet. Er ist nur zur internen
wenn er ein Hindernis erkennt, soll eine LED alle vier Sekunden blinken (siehe Kapitel 7, Verwendung, denn er regelt die bertragung zwischen USB-Anschluss und dem
Los gehts! Erste Praxis). Dazu werden Sie spter die Anweisung delay verwenden, Arduino-Board. Fr alle in diesem Buch beschriebenen Projekte bentigen Sie keinen
die den Arduino schlicht und einfach warten lsst (siehe Abschnitt 6.12, Verzgerun- der ICSP-Stecker.
gen und Zeitsteuerung). Wenn der Arduino vier Sekunden lang nichts tun soll, wre
die Anweisung dazu delay(4000). Wenn Sie jedoch in Ihrem Programm versehentlich Ein-/Ausgnge (oben und unten)
die Anweisung delay(4000000000) einfgen, weil Sie auf der Taste (0) (Null) eingeschla- Dies sind nach der Stromversorgung die wichtigsten Stecker auf einem Arduino-Board.
fen sind, so wrde der Arduino 4.000.000 Sekunden warten und scheinbar nicht mehr Ich gehe auf die einzelnen Pins der Ein-/Ausgangsbuchsen in Abschnitt 4.2.2 ein.
reagieren. 4.000.000 Sekunden entsprechen nmlich ungefhr 46 Tagen.
Hier kme nun der Reset-Taster ins Spiel: Anstatt mhsam die Stromversorgung vom Benutzer-LED
Roboter zu trennen und wiederherzustellen, knnen Sie einfach den Reset-Taster ein- Die mit L beschriftete LED auf dem Arduino ist sehr hilfreich, da sie hervorragend zu
mal kurz bettigen, und das Programm startet von vorne. Um bei dem Roboter-Hinder- Kontrollzwecken oder zur Fehlersuche eingesetzt werden kann. Die LED leuchtet auf,
nis-Beispiel zu bleiben: Ihr Roboter wrde wieder losfahren und erst beim nchsten wenn sie mit dem passenden Befehl auf HIGH gesetzt wird, und erlischt bei LOW. Wie
Hindernis stehen bleiben und dort lange Zeit warten. Sie knnten dann Ihre geschrie- das genau funktioniert, erfahren Sie in Kapitel 7, Los gehts! Erste Praxis. Wie Sie die

56 57
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

LED zur Fehlersuche nutzen knnen, erklre ich Ihnen in Abschnitt 6.14, Fehlersuche/ Ihrem Computer und der USB-Buchse des Arduino-Boards. Dabei kommunizieren Ihr
Debugging und die Anzeige von Werten. Computer und der Arduino miteinander, tauschen also Daten aus. Wenn der Computer
dabei Daten an den Arduino sendet, leuchtet zur Besttigung des Empfangs auf dem
Power-LED Arduino kurz die RX-LED (Rx, englisch abgekrzt fr Receiver = Empfnger). Sendet der
Die Power-LED (engl. Power. dt. Energie) zeigt durch Leuchten an, dass das Arduino- Arduino etwas zum Computer, leuchtet kurz die TX-LED auf dem Board (Tx, englisch
Board mit einer Stromversorgung verbunden ist. abgekrzt fr Transmitter = Sender). Solange beide bertragungs-LEDs whrend der
Datenbertragung blinken, knnen Sie davon ausgehen, dass alles funktioniert und die
ICSP-Stecker 1 Kommunikation zwischen Computer und Arduino einwandfrei luft.
Wie der ICSP-Stecker 2 wird auch der Stecker Nummer 1 fr eine besondere Art der Soft-
warebertragung auf Ihr Arduino-Board verwendet. In Ihrem Arduino ist nmlich Stromversorgungsbuchse
neben der normalen Software auch noch ein sogenannter Bootloader enthalten. Die- Um Ihr Arduino-Board mit Strom zu versorgen, haben Sie zwei Mglichkeiten: die
ser Bootloader ermglicht die Aktualisierung der Software im Mikrocontroller direkt Stromversorgungsbuchse oder die USB-Buchse. Wenn Sie spter in Kapitel 7 Ihr Board
per USB (Upload) und ohne spezielle zustzliche Hardware. Fr spezielle Anwendun- mit einem USB-Kabel mit Ihrem Computer verbinden, werden Sie feststellen, dass
gen kann es notwendig sein, diesen Bootloader zu umgehen. Und in diesem Fall wrden sofort die Power-LED leuchtet und alles auf dem Board mit Energie versorgt wird. Egal,
Sie den ICSP-Stecker 1 bentigen. Sie knnen ihn aber vorerst ignorieren, da Sie Ihr ob Sie das Arduino-Board per USB- oder ber die Stromversorgungsbuchse anschlieen,
Board hier ausschlielich ber die USB-Buchse programmieren werden. das Board erkennt die Quelle automatisch.

Zur Nutzung der Stromversorgungsbuchse bentigen Sie einen Hohlstecker mit 2,1 mm
Mikrocontroller
Innendurchmesser (siehe Abbildung 4.3). Der Pluspol liegt dabei in der Mitte des Ste-
Der Mikrocontroller ist das Herz und das Gehirn des Arduino-Boards. Er wurde bereits ckers und die Masse (Minus) entsprechend auen. Der Stromverbrauch des Arduino
in Abschnitt 2.3, Wie und womit denkt ein Roboter?, beschrieben. Uno liegt bei einer Eingangsspannung von 7 Volt bei ca. 0,29 Watt (290 mW).

Montagepunkt
Stromversorgung Mindest- und Maximalwerte
Die vier Montagepunkte dienen zur Befestigung des Arduino-Boards auf Ihrem Robo-
Wenn Sie die Stromversorgungsbuchse mit einem externen Netzteil oder Akku verwen-
ter. Sie sollten unbedingt nur diese Lcher nutzen, da auf der Ober- und der Unterseite
den, achten Sie unbedingt darauf, dass dabei die Grenzwerte nicht lange berschritten
Leiterbahnen verlaufen, die die einzelnen Bauteile miteinander verbinden. Wrden Sie werden! Das Netzteil muss auerdem eine Gleichspannung (DC = Direct Current Vol-
diese durchbohren, wre das Board danach unbrauchbar! tage) liefern.
Empfohlene Eingangsspannung: 712 Volt
Tipp
Kurzzeitig erlaubte Grenzwerte: 620 Volt
Wenn Sie Ihr Arduino-Board spter irgendwo mit Schrauben befestigen wollen, verwen-
den Sie Schrauben aus Kunststoff (Polyamid). Sie vermeiden damit Kurzschlsse durch
leitende Metallschrauben, da einige Bauteile sehr dicht an den Montagelchern verl-
tet sind.

bertragungs-LEDs (TX/RX)
Wenn Sie spter in Kapitel 7, Los gehts! Erste Praxis Ihr erstes selbst geschriebenes
Programm auf den Arduino bertragen, geschieht dies ber eine Verbindung zwischen
Abbildung 4.3 Ein typischer Hohlstecker von einem Netzteil

58 59
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

USB-Buchse Roboter standardmig keine Verwendung findet, gehe ich hier nicht weiter auf seine
Die USB-Buchse auf dem Arduino-Board hat drei verschiedene Funktionen: Details ein. Ein Tipp aber noch: Die beiden I2C-Pins SDA und SDL sind auf der Unterseite
des Boards beschriftet! Auf der Oberseite war wegen des ICSP-Steckers 2 kein Platz mehr.
Stromversorgung des Arduino
brigens: Aus rechtlichen Grnden wurde die I2C-Schnittstelle frher TWI-Interface
Schnittstelle zum bertragen der Software auf das Arduino-Board genannt (Two-Wire-Interface, englisch fr Zweidraht-Schnittstelle), denn der Hersteller
allgemeiner Datenaustausch zwischen Arduino und Computer Philips hatte lange Zeit die Rechte an dem Namen I2C. Sie finden die Bezeichnung TWI
daher oft noch in lteren Datenblttern. Auch die Software-Bibliothek des Arduino-Pro-
Wenn Sie ein Arduino-Board per USB-Kabel mit Ihrem Computer verbinden, erhlt es
jektes zur Nutzung der I2C-Pins heit bis heute noch Wire4.
darber Strom. Sie brauchen also, wie ich in der Beschreibung der Stromversorgungs-
buchse erlutert habe, keine separate Energiezufuhr. Die zweite Funktion ist das ber-
tragen Ihrer geschriebenen Software auf das Arduino-Board (siehe Kapitel 7, Los
gehts! Erste Praxis). Die Software wird spter das Verhalten Ihres Roboters ausma-
chen. Drittens kann Ihr Arduino-Board Daten an Ihren Computer senden. So werden Sie
zum Beispiel in Abschnitt 7.2.3 einen Infrarotdistanzsensor ansteuern und auf dem
Bildschirm Text sehen, den Ihnen Ihr Arduino ber den USB-Anschluss sendet: Sie
bekommen die gemessene Entfernung auf dem Bildschirm live angezeigt. Dies ist,
neben der LED, fr die Fehlersuche ebenfalls sehr hilfreich.

Wichtig: Erst installieren dann anschlieen!


Bevor Sie Ihr Arduino-Board per USB-Kabel an den Computer anschlieen, mssen Sie
bei einigen Betriebssystemen einen sogenannten Treiber installieren. Wie das geht,
erklre ich Ihnen in Abschnitt 4.2.5. Diese Reihenfolge sollten Sie unbedingt einhalten,
da ansonsten der Arduino mglicherweise nicht einwandfrei von Ihrem Computer
erkannt wird!

Abbildung 4.4 Die Ein- und Ausgnge des Arduino Uno


4.2.2 Die Ein- und Ausgnge des Arduino-Boards im Detail
AREF
Kommen wir nun zu den wichtigsten Anschlssen auf Ihrem Arduino-Board: den Ein-
Dieser Pin ist ein Eingang, an dem eine beliebige Spannung zwischen 0 und 5 Volt ange-
und Ausgngen des Arduino Uno. In Abbildung 4.4 sind die einzelnen Pins der breiten
legt werden kann. Er kann nur in Verbindung mit den analogen Eingngen A0 bis A5
Buchsen beschriftet, und ich werde diese im Folgenden der Reihe nach erlutern.
(ANALOG IN) genutzt werden und dient diesen als Referenz (AREF = Analoge Refe-
renzspannung). Nheres dazu wird spter unter Analoge Eingnge beschrieben.
SCL und SDA
Diese beiden Pins sind fr die sogenannte I2C-Schnittstelle (Aussprache: I-Quadrat-C).
Masse (GND)
Vielfach wird diese auch I2C-Schnittstelle genannt (Aussprache: I-Zwei-C). Generell
Der Masse-Pin (englisch Ground, abgekrzt GND) ist der Bezugspunkt fr alle Spannun-
dient eine Schnittstelle (englisch Interface) dazu, unterschiedliche Schaltungen oder
gen auf dem Arduino-Board. Er ist zugleich der Minuspol der Stromversorgung und ent-
Teile von ihnen miteinander zu verbinden. Aber auch ganze Gerte werden ber
spricht damit auch 0 Volt.
Schnittstellen verbunden. So sind zum Beispiel USB-Stecker am Eingang oder Ausgang
eines Gertes Bestandteil der USB-Schnittstelle. Da das I2C-Interface bei Ihrem Arduino- 4 http://arduino.cc/en/Reference/Wire

60 61
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Digitale Ein-/Ausgnge bertragung mit anderen Bauteilen durchfhren. Da der Arduino Uno aber nur ber
Die Pins 2 bis 13 dienen als Eingang oder Ausgang. Das heit, eine Spannung kann an eine serielle Schnittstelle verfgt, die auf der Platine intern bereits mit dem USB-
einen Pin angelegt werden (Eingang) oder der Arduino kann eine Spannung ausgeben Anschluss verbunden ist, sollten Sie diese Pins nicht verwenden. Denn immer, wenn Sie
(Ausgang). ein Programm auf den Arduino bertragen oder spter den Serial Monitor (siehe
Abschnitt 7.2.3) verwenden, werden dabei die Daten auch ber diese beiden Pins laufen.
Strungen wren also vorprogrammiert. Fr den in diesem Buch beschriebenen Robo-
Vorsicht!
ter werden diese Pins nicht verwendet.
Spannungen unter 0 oder ber 5 Volt an einem der Pins zerstren Ihr Arduino-Board!
Analoge Eingnge
Da es sich um digitale Ein-/Ausgnge handelt, verstehen diese Pins wie ein Computer Im Gegensatz zu den digitalen Eingngen knnen Sie an die Eingnge A0 bis A5 eine
nur zwei Zustnde: 0 oder 1. In der Elektronik Ihres Arduino Uno entspricht das 0 Volt beliebige Spannung zwischen 0 und 5 Volt anlegen. Analog bedeutet, dass die Span-
oder 5 Volt bzw. allgemein LOW oder HIGH. nung wirklich jeden Wert dazwischen haben darf. Das Einlesen eines dieser Eingnge
geschieht mit dem Befehl analogRead. Sie werden diesen Befehl in Abschnitt 7.2.3 ken-
Expertenwissen zum Angeben: Logikpegel im Detail nenlernen, wenn Sie einen Sensor auslesen, der eine analoge Spannung ausgibt. Beim
Wie so oft im Leben ist nicht alles schwarz-wei, so auch bei den Logikpegeln. Tatsch- Einlesen einer analogen Spannung vergleicht der Arduino die an einem der Pins A0 bis
lich mssen es nicht exakt 0 Volt oder 5 Volt sein. Je nach verwendetem Bauteil gibt es A5 anliegende Spannung standardmig mit 5 Volt. So erhalten Sie zum Beispiel beim
unterschiedliche Ober- oder Untergrenzen. Bei dem auf dem Arduino-Board verwende- Anlegen von 0 Volt eine 0 als Zahlenwert in der Software; bei 2,5 Volt ist der Zahlenwert
ten Mikrocontroller sind es die folgenden: 128, und bei 5 Volt betrgt er 2556. Mchten Sie eine Spannung mit einem geringeren
Maximalwert als 5 Volt einlesen (zum Beispiel 3,14 Volt) und dennoch Werte in der Soft-
Eingang Ausgang ware von 0 bis 255 erhalten, so kommt der Pin AREF ins Spiel. Sie werden diese Funktion
vermutlich nicht so hufig bentigen, und sie wird auch in diesem Buch nicht verwen-
LOW 0,001,50 V 0,000,50 V
det. Fr weitere Informationen sei daher an dieser Stelle wieder einmal auf die Arduino-
HIGH 3,505,00 V 4,445,00 V Referenz7 und den dort beschriebenen Befehl analogReference verwiesen.

Das bedeutet zum Beispiel, dass alle Spannungen zwischen 0,00 und 1,50 Volt an einem Vin
Eingang als LOW erkannt werden oder dass alle Spannungen zwischen 4,44 und 5,00 Dieser Pin gehrt zu den Stromversorgungspins und kann sowohl als Eingang als auch
Volt an einem Ausgang als HIGH gelten. Die Bereiche zwischen den hier aufgelisteten als Ausgang genutzt werden. An diesen Pin knnen 712 Volt angelegt werden, die dann
sogenannten Logikpegeln gelten schlichtweg als undefiniert. Das heit, es ist nicht vor- das Arduino-Board mit Energie versorgen (falls Sie nicht die USB-Verbindung oder die
hersagbar, wie sich der Arduino hier verhlt. Stromversorgungsbuchse dafr benutzen wollen). Wenn Sie aber das Board per USB-
oder Hohlstecker mit Strom versorgen, dann liegen an diesem Pin 5 Volt an.
Warum einige der Pins mit einer Tilde (~) gekennzeichnet sind und was die Beschriftung
PWM~ auf der Platine bedeutet, erfahren Sie in Abschnitt 7.4.2). Ich will es ja auch etwas Masse (GND)
spannend fr Sie machen. (siehe vorige Beschreibung)

TX/RX 5V
Wie Sie bereits im Abschnitt 4.2.1 unter bertragungs-LEDs (TX/RX) erfahren haben, Dieser Pin dient nur als Ausgang. Sobald das Arduino-Board per USB- oder Stromversor-
geht es hier um Datenbertragung. Sie knnten ber diese Pins eine serielle5 Daten- gungsbuchse mit Strom versorgt wird, kommen an diesem Pin geregelte 5 Volt Span-

5 Seriell bedeutet, dass die Daten Bit fr Bit hintereinander bertragen werden (siehe auch http:// 6 Warum der Wert von 0 bis 255 geht, erfahren Sie in Abschnitt 6.3.4.
de.wikipedia.org/wiki/Serielle_Datenbertragung) 7 http://arduino.cc/en/Reference/AnalogReference

62 63
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

nung heraus. Diese knnen Sie zur Stromversorgung weiterer kleinerer Bauteile, z. B. Arduino-Board mit mehr Leistung zu versehen. Ein anderes Mal ging es nicht um mehr
von Sensoren, verwenden. Geben Sie niemals eine Spannung an diesen Ausgang, da sie Geschwindigkeit oder Speicher, sondern um mehr Ein- und Ausgnge (Pins). Oftmals
das Arduino-Board zerstren kann! wurde aber auch nur die Form verndert oder die Gre der Arduino-Platine reduziert.

3,3V SMD-Bauteile
An diesem Pin liefert das Arduino-Board eine Spannung von 3,3 Volt. Bitte beachten Sie, Um die Gre einiger Arduino-Boards zu verringern und auch um die Kosten zu sen-
dass hier nur ein maximaler Strom von 50 mA geliefert wird. Geben Sie niemals eine ken, wurde auf Bauteile zurckgegriffen, die sich SMD-Bauteile nennen. SMD ist die eng-
Spannung an diesen Ausgang, da sie das Arduino-Board zerstren kann! lische Abkrzung fr Surface-Mounted Device, was so viel wie auf der Oberflche
montiertes Bauteil bedeutet. Denn im Unterschied zu dem Arduino-Mikrocontroller,
Reset dessen Pins in eine Fassung gesteckt sind und deren Beinchen wiederum durch die
Dieser Pin dient zum Anschluss eines eigenen Reset-Tasters. Sobald dieser Pin mit Platine hindurch gehen, gibt es auf dem Board auch einen Mikrocontroller, der auf der
Masse (GND) verbunden wird, wird ein Reset des Arduino-Boards ausgelst. Wenn Sie Oberflche montiert (aufgeltet) ist. Und glauben Sie mir, die kleinen SMD-Bauteile
Ihr Arduino-Board mit Shields (siehe Abschnitt 7.2.7) erweitern, kann es sein, dass diese stehen den groen in nichts nach. Denn den meisten Platz bei den groen Bauteilen
den Reset-Taster auf dem Board blockieren. Dafr ist dann dieser Pin ntzlich. nehmen mittlerweile nur die groen Anschlusspins ein.

In Abbildung 4.5 sehen Sie deutlich den Unterschied der beiden Bauteiltypen auf Ihrem
IOREF Arduino-Board:
Dieser Pin liefert eine Referenzspannung, mit der der Mikrocontroller auf dem Arduino- Oben 1 finden Sie den Mikrocontroller als SMD-Bauteil,
Board arbeitet. Der Pin kann intern von Shields genutzt werden, mit denen das Board unten 2 einen Mikrocontroller in alter Bauweise.
erweitert werden kann (siehe Abschnitt 7.2.7).

Fehlt da nicht etwas? Was ist mit dem freien Pin?


Wie Ihnen vielleicht aufgefallen ist, ist in Abbildung 4.4, links neben dem Pin IOREF, ein
Pin nicht beschriftet. Der Grund hierfr ist ganz simpel: Er ist nicht in Verwendung.
Mglicherweise kitzeln die Entwickler des Boards spter noch einmal neue Funktio-
nen aus dem Arduino Uno heraus. Dann wird dieser Pin vielleicht noch belegt. Aktuell
ist das jedoch nicht der Fall. Aber seien Sie gewiss: Sie haben bereits so unzhlige Mg-
lichkeiten mit Ihrem Arduino-Board!

4.2.3 Verschiedene Arduino-Boards


Das Arduino-Board wre vermutlich nicht so erfolgreich, wenn es nicht vollstndig
Open Source wre. Dieses Konzept ermglichte die Entwicklung vieler Arduino-Boards,
die nicht vom Arduino-Projekt selbst stammen, aber offiziell mit dem Arduino-Logo
versehen sind, weil sie dem Projektstandard8 entsprechen. Viele Arduino-Boards wur-
den bereits entwickelt und verffentlicht. Manchmal geschah dies, um das schlanke

8 http://arduino.cc/en/Main/Policy Abbildung 4.5 SMD-Bauteil im Vergleich zur alten Bauweise

64 65
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Die herkmmliche Bauweise hat aber auch Vorteile. Wie Sie sehen, ist der groe Mikro- Ein Nachteil bei diesem Board ist der verwendete 3,3-Volt-Logikpegel, da viele Shields
controller in eine Fassung gesteckt und kann bei einem Defekt leicht ausgetauscht wer- mit einem 5-Volt-Logikpegel arbeiten und damit an diesem Board nicht ohne Weite-
den. Das ist bei SMD-Teilen sehr schwierig, denn diese mssen mit speziellen res eingesetzt werden knnen (siehe auch in Abschnitt 4.2.2 unter Digitale Ein-/Aus-
Werkzeugen aus- und wieder eingeltet werden. Dies ist bei einigen Bauteilen mit der gnge).
Hand bereits nicht mehr mglich, da diese die Pins sogar an der Unterseite des Bauteils
haben, wo kein Ltkolben hinkommt. So bleibt dann leider oft nur Entsorgen und Neu- Arduino-Roboter
kaufen, eine Entwicklung, die fr unsere Umwelt alles andere als frderlich ist. Dafr hat Ein Arduino-Roboter? Wieso erfahre ich erst jetzt davon? Richtig, es gibt auch einen
die SMD-Technik immer preiswertere Gerte ermglicht, da die Bauteile immer kleiner Roboter der Arduino-Community. Und er hat sogar ein Display auf seiner Oberseite. Der
und damit gnstiger werden nur eben leider nicht, was Reparaturen angeht. Nachteil dieses Roboters ist sein Preis: Er kostet ber 200 EUR.
Nun aber zu der versprochenen Auflistung verschiedener Arduino-Boards. Obwohl es
sich nur um eine kleine Auswahl handelt, sollte sie Ihnen einen guten berblick geben.
Und vielleicht entwickeln Sie ja eines Tages Ihr eigenes offizielles Arduino-Board?

Arduino Due
Der Arduino Due ist im Vergleich zum Arduino Uno ein leistungsfhigeres Board. Sein
wesentlicher Vorteil sind zweifelsohne die unzhligen Ein- und Ausgnge, sein groer
Speicher fr Software und sein USB-Port, an den sogar eine Maus, Tastatur oder ein
Smartphone angeschlossen werden knnen.

Abbildung 4.7 Die Ober- (links) und Unterseite (rechts) des offiziellen Arduino-Roboters10

Arduino Esplora
Im Gegensatz zu den normalen Arduino-Boards stellt der Arduino Esplora auf seiner
Platine eine Vielzahl von Sensoren und Aktoren (siehe Abschnitt 2.2.2 und 2.2.3) zur Ver-
fgung. Unter anderem finden Sie auf dem Board: LEDs, einen Mini-Joystick, einen
Temperatursensor, ein Mikrofon, einen Piezo (siehe Abschnitt 7.3.1), einen Beschleuni-
gungssensor, einen Lichtsensor und vieles mehr. Lassen Sie sich nicht durch die
Bauform tuschen: Das Board sieht vielleicht wie ein Gamepad aus, ist aber ein vollwer-
tiges Arduino-Board mit Mikrocontroller.
Abbildung 4.6 Der Arduino Due mit mehr als 54 Ein- und Ausgngen9

9 Bild: http://arduino.cc, CC BY-SA 3.0 10 Bild: http://arduino.cc, CC BY-SA 3.0

66 67
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Arduino Micro
Der Arduino Uno ist Ihnen zu gro? Dann greifen Sie doch zu einem Arduino Micro.
Dank SMD-Technik ist die Platine auf beiden Seiten eng mit Bauteilen bestckt. So wird
jeder Millimeter ausgenutzt. Und ein USB-Anschluss zum bertragen der Software hat
auch noch auf das Board gepasst.

Abbildung 4.8 Der Arduino Esplora sieht wie ein Gamepad aus.11

LilyPad Arduino USB


Abbildung 4.10 Der kleine Arduino Micro (Mae: 5,0 1,3 cm)13
Wie bereits erwhnt, gibt es fr alle mglichen Zwecke einen Arduino. Warum also nicht
die eigene Kleidung um ein Mikrocontroller-Board aus der Arduino-Familie ergnzen?
Kein Problem mit dem kleinen LilyPad Arduino USB. Mit ihm lsst sich zum Beispiel ein Arduino Nano
Lauflicht als Anstecker realisieren. Es geht noch kleiner auch wenn Abbildung 4.11 es nicht so deutlich zeigt, da der direkte
Vergleich fehlt. Der Arduino Nano ist noch einmal geschrumpft und bietet dennoch
unter anderem 14 digitale Ein- und Ausgnge, eine LED und eine I2C-Schnittstelle auf
kleinstem Raum. Es geht brigens noch kleiner: Der TinyDuino14 hat eine Gre von
lediglich 2 2 cm.

Abbildung 4.11 Der Arduino Nano (Mae: 4,3 1,8 cm)15

Abbildung 4.9 Arduino als Anstecker? Der LilyPad Arduino USB12

13 Bild: http://arduino.cc, CC BY-SA 3.0


11 Bild: http://arduino.cc, CC BY-SA 3.0 14 http://tiny-circuits.com/products/tinyduino/
12 Bild: http://arduino.cc, CC BY-SA 3.0 15 Bild: http://arduino.cc, CC BY-SA 3.0

68 69
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Wer die Wahl hat Ein USB-Kabel (A-Stecker auf B-Stecker)


Sie sehen, die Auswahl an Arduino-Boards ist sehr gro. Lassen Sie sich dadurch nicht Das passende Kabel, um Ihr Arduino-Board mit dem Computer zu verbinden, sehen Sie
abschrecken. Bleiben Sie als Einsteiger zunchst bei Ihrem Arduino Uno. Sobald Sie die- in Abbildung 4.13.
sen verstanden haben und beherrschen, macht vielleicht spter ein Wechsel auf ein
anderes Board Sinn.

4.2.4 Die Einzelteile fr Ihren Roboter bzw. das Roboterkit


Bevor es im folgenden Abschnitt um die Installation des Treibers fr das Arduino-Board
auf Ihrem Computer geht, mchte ich Ihnen die Teile Ihres knftigen Arduino-Roboters
vorstellen. Wie ich bereits in Abschnitt 1.3, Das Roboterkit zum Buch, beschrieben
habe, entstand der Roboter durch die Community Bot Makers16. Damit Sie sich die nach-
folgenden Teile nicht alle selbst zusammensuchen mssen, gibt es sie als fertiges Star-
terKit beim Elektronikversand watterott17.
Abbildung 4.13 USB-Kabel mit A- und B-Stecker

Ein Arduino Uno-Board, R3


Ein Arduino-Motor Shield
Den Arduino Uno haben Sie in diesem Kapitel bereits recht ausfhrlich kennengelernt.
In Kapitel 7, Los gehts! Erste Praxis, werden Sie Ihr erstes selbst geschriebenes Pro- In Abschnitt 7.5, Ich muss hier weg! Ansteuerung von Motoren, werden Sie lernen,
gramm auf das Board bertragen und ihn damit zum Leben erwecken. Fr den Robo- wie Sie die Motoren fr Ihren Roboter ansteuern. Dazu werden Sie dieses Motor Shield
ter bentigen Sie genau ein Arduino-Board. benutzen. Sie bentigen genau eins fr Ihren Roboter.

Abbildung 4.12 Der Arduino Uno R3

Abbildung 4.14 Das Arduino-Motor Shield


16 http://www.botmakers.de
17 http://www.watterott.com/de/StarterKit-Roboter

70 71
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Fnf Jumper Wires/Testkabel/Steckbrcken (10 cm, Female-Female)


Mit diesen Testkabeln (auch Jumper Wires oder Steckbrcken genannt) knnen Sie ohne
Lten verschiedene Pins schnell und unkompliziert miteinander verbinden. Fr den
Bau Ihres Roboters bentigen Sie fnf dieser Kabel mit einer Lnge von jeweils 10 cm.
Die Kabel sollten an beiden Enden Buchsen haben. Im technischen Bereich hat sich fr
Stecker mit einem Pin der Begriff mnnlich (englisch male) durchgesetzt. Bei Buchsen
ist es entsprechend ein weiblicher Steckverbinder (englisch female). Daher haben die
Jumper Wires in Abbildung 4.15 die Bezeichnung female-female (Buchsen an beiden
Enden).
Abbildung 4.16 Etwas Draht/Litze mit einem Querschnitt von 0,25 mm2

Vier 1,2-Volt-Akkus oder 1,5-Volt-Batterien, Gre AA


Um Ihren Roboter mit Energie zu versorgen, sind Akkus am besten geeignet. Akkus sind
wiederaufladbar und darum aus Umweltschutzgrnden Einwegbatterien immer vorzu-
ziehen. Die Akkus werden bei Ihrem Roboter in den Akkuhalter aus Abbildung 4.18
eingesetzt. Fr Ihren Roboter bentigen Sie vier 1,2-Volt-Akkus der Gre AA und
ein Ladegert zum Aufladen der Akkus. Die Akkus sind brigens nicht im Roboterkit
enthalten!

Abbildung 4.15 Sogenannte Jumper Wires

30 cm Litze/Draht (0,25 mm2)


Um die Motoren in Abschnitt 7.5 anzusteuern, werden Sie diese mit etwas Draht oder
Abbildung 4.17 1,2-Volt-Akkus
Litze mit dem Motor Shield verbinden. Der Kupferkern des Drahtes sollte einen Quer-
schnitt von 0,25 mm2 haben. Sie bentigen ca. 30 cm davon. Etwas mehr kann nie scha-
den, falls Sie sich mal vermessen und den Draht zu kurz abschneiden. Welches Tipp
Werkzeug Sie im brigen bentigen, zeige ich Ihnen in Kapitel 5, Die kleine Werkstatt, Am besten besorgen Sie sich gleich acht Akkus, so haben Sie immer ein Set im Roboter
und der Zusammenbau wird Schritt fr Schritt in Kapitel 8, Keine Schraube locker und ein Set im Ladegert. Dann knnen Sie diese sofort austauschen, wenn die Akkus
Die Montage des eigenen Roboters, beschrieben. im Roboter leer sind, und mssen nicht erst warten, bis wieder welche aufgeladen sind.

72 73
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Ein Batteriehalter/Akkuhalter Ein Infrarotdistanzsensor


Zum Set gehrt auch ein Akkuhalter oder Batteriehalter fr Ihren Roboter. Sie bentigen Damit Ihr Roboter spter nirgendwo anstt, bentigt er Augen, die Hindernisse
zum Bau des Roboters nur einen. erkennen. Das Auge besteht in diesem Fall aus einem Infrarotdistanzsensor (auch Infra-
rotdistanzmesser genannt). Wie dieser funktioniert und angesteuert wird, lernen Sie in
Abschnitt 7.2.4. Und obwohl ein Mensch zwei Augen hat, bentigt Ihr Roboter nur einen
Sensor. Warum das so ist, erfahren Sie ebenfalls in dem zuvor genannten Abschnitt.

Abbildung 4.20 Der Sharp-Infrarotdistanzsensor GP2Y0A21YK0F

Abbildung 4.18 Der Halter fr die Batterien bzw. Akkus


Zwei Getriebemotoren
Natrlich soll sich Ihr Roboter auch fortbewegen knnen. Dazu erhlt er zwei Gleich-
Ein Servo
strommotoren mit jeweils einem Getriebe. Das Getriebe beinhaltet mehrere Zahnrder,
Dieser Servo wird spter einen Sensor hin und her bewegen und somit das Auge Ihres
die durch eine sogenannte Untersetzung18 die Drehzahl reduzieren und damit mehr
Roboters darstellen. Was ein Servo ist und wie er angesteuert wird, lernen Sie in
Kraft auf die Rder des Roboters bertragen. Da jeder Motor ein Rad Ihres Roboters
Abschnitt 7.4, Der Diener Ansteuerung von Servos.
antreiben wird, bentigen Sie zwei Motoren. Die Ansteuerung der Motoren zeige ich
Ihnen ausfhrlich in Abschnitt 7.5.

Abbildung 4.21 Zwei Motoren mit einem weien Getriebe

18 Genau genommen ist der Begriff Untersetzung nur umgangssprachlich korrekt. Wenn Sie es genau
wissen wollen, empfiehlt sich wie so oft ein Blick in die Wikipedia: http://de.wikipedia.org/wiki/
Abbildung 4.19 Ein Standardservo, wie er im Modellbau verwendet wird
bersetzung_(Technik)

74 75
4 Die Arduino-Plattform 4.2 Die Arduino-Hardware

Zwei Rder Schlumpfschlauch genannt (siehe Abbildung 4.24). Ein Schrumpfschlauch hat die
Wie zuvor erwhnt, bekommt jeder der zwei Motoren Ihres Roboters ein Rad. Sie ben- Eigenschaft, dass bei hoher Hitze sein Durchmesser abnimmt. Wenn Sie zum Beispiel
tigen daher ebenfalls zwei Rder. von zwei Drhten die Isolierung (Ummantelung) entfernt und die Drhte miteinander
verbunden haben, knnen Sie diese mit dem Schrumpfschlauch neu ummanteln.
Wie das genau geht, erfahren Sie in Kapitel 8, Keine Schraube locker Die Montage des
eigenen Roboters, beim Zusammenbau Ihres Roboters.

Abbildung 4.22 Zwei Rder fr Ihren Roboter Abbildung 4.24 Schrumpfschlauch

Ein Sttzrad Ein Chassis aus gelaserten Acrylteilen


Da der Roboter auf zwei Rdern nicht sehr stabil ist, wird noch ein drittes Rad bentigt, Um einen einfachen, aber stabilen Aufbau Ihres Roboters zu ermglichen, enthlt das
das als Sttzrad dient. Kit alle Teile fr ein Chassis aus lasergeschnittenem Polymethylmethacrylat (umgangs-
sprachlich auch Acrylglas oder Plexiglas genannt).

Abbildung 4.25 Gelaserte Acrylteile fr ein Chassis


Abbildung 4.23 Das Sttzrad mit der Stahlkugel

Ein Stck Schrumpfschlauch (4 mm Durchmesser) Ein wenig Werkzeug


Natrlich geht der Zusammenbau nicht ohne Werkzeug. In Kapitel 5, Die kleine
Frher wurde zum Isolieren meistens Isolierband verwendet. Heutzutage bietet sich fr
die meisten Anwendungsflle ein Schrumpfschlauch an im Scherz auch gerne mal Werkstatt, erfahren Sie daher, welches Werkzeug Sie fr die Montage unbedingt ben-
tigen und welches hilfreich, aber nicht zwingend notwendig ist.

76 77
4 Die Arduino-Plattform 4.3 Die Arduino-Software

Und der Zusammenbau? IDE finden Sie den Link Windows Installer, wie in Abbildung 4.26 dargestellt. Der
Sie haben jetzt einen guten berblick ber alle Bestandteile Ihres spteren Arduino- Installer ist der einfachste Weg, um die Software direkt zu installieren. Dabei ist es egal,
Roboters bekommen. In Kapitel 8, Keine Schraube locker Die Montage des eigenen ob Sie die Software unter Windows 7 oder Windows 8 installieren wollen es ist derselbe
Roboters, zeige ich Ihnen, wie Sie alle Teile zu einem Roboter zusammenfgen. Zuvor Download. Folgen Sie nun den Anweisungen anhand der nachfolgenden Abbildungen.
erhalten Sie noch das ntige Wissen ber die Arduino-Plattform und deren Program-
mierung.

4.2.5 Treiberinstallation
Damit ein Computer das Arduino-Board und damit Ihren spteren Roboter einwandfrei
erkennt, bentigen einige Betriebssysteme einen Treiber. Ein Treiber ist eine Software,
die sicherstellt, dass der Computer das Arduino-Board betreiben kann und mit ihm
ber den USB-Port kommuniziert. Die Kommunikation erfolgt dabei ber einen Mikro-
controller des Herstellers Atmel (ATmega16). Der Treiber fr diesen Chip ist in der
Arduino-Software oder dem Betriebssystem Ihres Computers enthalten. Wie Sie die
Arduino-Software einschlielich Treiber fr die verschiedenen Betriebssysteme Win-
dows, Mac OS und Linux installieren, zeige ich Ihnen jetzt.

4.3 Die Arduino-Software


Jetzt geht es um die Installation der Arduino-Software auf Ihrem Computer. Sie werden
feststellen, dass die Installation kinderleicht ist und Sie danach sofort loslegen knnen,
ohne noch viel auf Ihrem System extra einrichten oder konfigurieren zu mssen.

Abbildung 4.26 Klicken Sie auf den Link Windows Installer.


4.3.1 Download und Installation
Die Arduino-Software ist auf der Arduino-Projektseite19 frei zum Download verfgbar.
Das Programm ist Open Source und fr Windows, Mac OS und Linux sowie als Source-
code im Download verfgbar. Fr die Betriebssysteme Windows und Mac OS ist ein
Download ber die Webseite notwendig, unter Linux wird die Software mit Mitteln des
Betriebssystems installiert. Im Folgenden zeige ich Ihnen fr jedes einzelne System die
notwendigen Schritte einschlielich Treiberinstallation.

Windows Abbildung 4.27 Whlen Sie die Option Datei speichern.


Um die Arduino-Software unter Windows zu installieren, besuchen Sie die Arduino-Pro-
jektseite. Navigieren Sie dort zur Seite Download. Unterhalb des Punktes Arduino Standardmig speichert Windows heruntergeladene Dateien in Ihrem Benutzerver-
zeichnis unter Downloads (siehe Abbildung 4.28). Um die Installation der Arduino-Soft-
19 http://arduino.cc ware zu starten, klicken Sie doppelt auf die Datei.

78 79
4 Die Arduino-Plattform 4.3 Die Arduino-Software

Abbildung 4.30 Die Lizenzvereinbarung der Arduino-Software

Lassen Sie im Dialog aus Abbildung 4.31 alle Optionen so, wie sie sind, und klicken Sie
auf Next, um zum nchsten Schritt zu gelangen.

Abbildung 4.28 Die heruntergeladene Installationsdatei im Explorer

Wenn das Fenster aus Abbildung 4.29 erscheint, besttigen Sie die Frage durch Klick
auf Ja.

Abbildung 4.31 Die unterschiedlichen Installationsoptionen

Besttigen Sie das Zielverzeichnis, in dem die Software installiert werden soll (siehe
Abbildung 4.32), durch Klicken auf Install.

Abbildung 4.29 Windows warnt vor nderungen am Computer.

Damit die Software installiert werden kann, mssen Sie die Lizenzbedingungen durch
Klicken auf I Agree akzeptieren.

Abbildung 4.32 Gleich startet die Installation!

80 81
4 Die Arduino-Plattform 4.3 Die Arduino-Software

Der Fortschritt des Installationsvorgangs ist in Abbildung 4.33 dargestellt. Besttigen Sie die Sicherheitswarnung aus Abbildung 4.35 durch einen Klick auf In-
stallieren.

Abbildung 4.35 Sicherheitswarnung beim Hinzufgen des Treibers


Abbildung 4.33 Die Installation im vollen Gange
Wenn die Installation wie in Abbildung 4.36 beendet ist, klicken Sie abschlieend auf
Kurz vor Ende des Installationsvorgangs der Arduino-Software startet automatisch die Close.
Installation des Treibers (Gertesoftware) fr Ihr Arduino-Board (siehe Abbildung 4.34).

Abbildung 4.36 Die Installation ist fertig!

Glckwunsch! Sie haben erfolgreich die Arduino-Software und den Treiber installiert. In
Abschnitt 4.3.2 geht es fr Sie nun weiter mit dem Start der Arduino-Software und der
Erluterung ihrer einzelnen Elemente.

Mac OS X
Unter Apples Betriebssystem Mac OS ist die Installation der Arduino-Software simpel.
Um sie herunterzuladen, besuchen Sie die Arduino-Projektseite.20 Navigieren Sie dort

Abbildung 4.34 Hier soll der Treiber installiert werden. 20 http://arduino.cc

82 83
4 Die Arduino-Plattform 4.3 Die Arduino-Software

zur Seite Download. Unterhalb des Punktes Arduino IDE finden Sie den Link Mac OS X,
den Sie anklicken (siehe Abbildung 4.37).

Abbildung 4.38 Die heruntergeladene Software im Finder

Abbildung 4.37 Download der Arduino-Software fr Mac OS

Der Download besteht in der Regel aus einer ZIP-Datei. Diese wird in Ihrem Benutzer-
verzeichnis im Ordner Download gespeichert und in der Regel automatisch entpackt
(siehe Abbildung 4.38).
Abbildung 4.39 Installation der Software per Drag & Drop
Die Installation unter Mac OS ist kinderleicht: Ziehen Sie im Finder das Programm
Arduino vom Downloads-Ordner in das Programme-Verzeichnis (siehe Abbildung 4.39).
Glckwunsch! Sie haben erfolgreich die Arduino-Software installiert. In Abschnitt 4.3.2
Ein extra Treiber wird unter Mac OS nicht bentigt.
geht es fr Sie nun weiter mit dem Start der Arduino-Software und der Erluterung ihrer
einzelnen Elemente.

84 85
4 Die Arduino-Plattform 4.3 Die Arduino-Software

Linux
Die nachfolgende Beschreibung ist fr das Linux-Betriebssystem Ubuntu Version 14
gedacht. Ubuntu ist derzeit eines der einsteigerfreundlichsten Linux-Betriebssysteme.
Falls Sie ein anderes Linux verwenden, schauen Sie auf der Webseite des Arduino-Pro-
jektes21 nach, welche Anleitung fr Ihr Betriebssystem die passende ist.

Unter Ubuntu erfolgt die Installation der Arduino-Software wie nachfolgend beschrie-
ben ein Download von der Arduino-Projektseite ist nicht erforderlich! Starten Sie als
Erstes, wie in Abbildung 4.40 gezeigt, das Ubuntu Software-Center.

Abbildung 4.41 Geben Sie in diesem Suchfeld Arduino ein.

Abbildung 4.40 Die Ubuntu-Oberflche mit dem Software-Center

Nachdem das Software-Center gestartet ist, klicken Sie in das Suchfeld und geben dort
Arduino (ohne Anfhrungszeichen) ein, um nach der Software zu suchen (siehe
Abbildung 4.41).

Sobald die Arduino-Software im Software-Center gefunden wurde, wird sie, wie in Abbil-
dung 4.42 dargestellt, angezeigt. Klicken Sie auf Installieren, um die Installation der
Software zu starten.

21 http://arduino.cc Abbildung 4.42 Ein Klick auf Installieren startet die Installation.

86 87
4 Die Arduino-Plattform 4.3 Die Arduino-Software

Wenn Sie unter Linux Software installieren wollen, mssen Sie Ihr Anmeldepasswort
eingeben, um sich zu legitimieren (siehe Abbildung 4.43).

Abbildung 4.43 Geben Sie hier Ihr Anmeldepasswort ein.

In Abbildung 4.44 ist der Installationsvorgang dargestellt. Sie bekommen nichts weiter
davon mit alles passiert unsichtbar im Hintergrund.

Abbildung 4.45 Geschafft! Die Installation ist abgeschlossen.

Wenn alles geklappt hat, finden Sie die Arduino-Software als Symbol auf dem Desktop
(siehe Abbildung 4.46).

Abbildung 4.44 Der Installationsvorgang luft.

Sie erkennen die erfolgreiche Installation an dem kleinen grnen Pfeil am Arduino-
Symbol (siehe Abbildung 4.45). Schlieen Sie jetzt das Software-Center wieder. Abbildung 4.46 Die installierte Arduino-Software (IDE)

88 89
4 Die Arduino-Plattform 4.4 Die Entwicklungsumgebung

Falls das Symbol dort nicht erscheinen sollte, klicken Sie, wie in Abbildung 4.47 gezeigt, 4.6.1, wie die Arduino-Software Sie beim Erstellen Ihrer eigenen Programme fr den
auf das Ubuntu-Dashboard-Symbol und suchen nach der Software. Sie wird nach Ein- Roboter untersttzt. Denn sie enthlt bereits viele fertige Beispiele, die per Mausklick
gabe der ersten Buchstaben von Arduino sofort angezeigt und kann spter von dort hinzugefgt werden knnen. Aber dazu spter mehr.
gestartet werden.

Abbildung 4.48 Die Arduino-Software beim ersten Start

4.4 Die Entwicklungsumgebung


Noch eine Anmerkung zu den hier knftig verwendeten Begrifflichkeiten: Dieses Fens-
Abbildung 4.47 Die Arduino-Software im Ubuntu-Dashboard
ter der Entwicklungsumgebung wird auch grafische Oberflche oder allgemein GUI
(Graphical User Interface = grafische Benutzer-Schnittstelle) genannt. Sie haben viel-
Jetzt haben Sie es fast geschafft. Damit Ihr Computer Ihr Arduino-Board spter richtig
leicht auch schon einmal die Abkrzung IDE gelesen. IDE steht fr Integrated Develop-
erkennt, wurde mit der Software im Hintergrund ein Treiber installiert. Dieser bentigt
ment Environment, also fr integrierte Entwicklungsumgebung. Das bedeutet, dass
jedoch unbedingt einen Neustart Ihres Computers, damit er funktioniert! Starten Sie
die Arduino-Software bereits alles enthlt, was Sie zum Erstellen der Roboter-Software
daher jetzt Ihren Computer neu.
bentigen sprich: Alle Bestandteile sind integriert.
Glckwunsch! Sie haben erfolgreich die Arduino-Software und den Treiber installiert. In
Sie haben vielleicht schon einmal von anderen IDEs gehrt, wie zum Beispiel Visual Stu-
Abschnitt 4.3.2 geht es fr Sie nun weiter mit dem Start der Arduino-Software und der
dio, Xcode oder Eclipse. Dies sind alles IDEs fr verschiedene Programmiersprachen und
Erluterung ihrer einzelnen Elemente.
Anwendungen. Die Arduino-Software hat den Vorteil, dass sie auf jedem gngigen
Betriebssystem luft und dort identisch aussieht und bedient wird.
4.3.2 Start
Experten-Wissen
Nachdem das Programm installiert und gestartet wurde, sieht es so aus wie in Abbil-
dung 4.48. Wenn Sie schon einmal programmiert haben, werden Ihnen Begriffe wie Linker und
Compiler sicher etwas sagen. Diese sind in der Arduino-Software vollstndig integriert.
Das ist also die Software, mit der Sie das Gehirn des knftigen Roboters mit Leben fl-
Sie mssen also nicht extra spezielle Compiler installieren und Pfade setzen. Das macht
len werden! Keine Angst, dass noch alles so leer aussieht: Ich zeige Ihnen in Abschnitt die Software alles fr Sie unsichtbar im Hintergrund.

90 91
4 Die Arduino-Plattform 4.6 Die grafische Oberflche im Detail

4.5 Die Software im Detail berprfen 1: berprft den Programmcode auf Fehler
Upload 2: bertrgt das fertige Programm auf die Hardware
Hier erhalten Sie noch ein paar Hinweise, wie die Arduino-Software aufgebaut ist und
Neu 3: Erzeugt ein neues, leeres Programm
was die einzelnen Menpunkte bedeuten. Sie erfahren auerdem, wie Sie die Software
mit fertigen Beispielen untersttzt. ffnen 4: ffnet bestehende Programme
Speichern 5: Speichert das aktuelle Programm
4.5.1 ndern der Sprache 6: Anzeige des Namens des aktuellen Programms
Sollte die Arduino-Software auf Ihrem Computer nicht auf Deutsch starten, knnen Sie 7: Die installierte Version der Arduino-Software
die Sprache in den Einstellungen (englisch: Preferences) leicht ndern. Die Software wurde 8: Aktiviert den seriellen Monitor
in ber 30 Sprachen bersetzt. Unter Windows und Linux ist der Menpunkt fr die Ein- 9: Funktionen zur Nutzung der Tabs/Karteireiter
stellungen unter File zu finden, unter Mac OS X unterhalb des Punktes Arduino.
j: Bereich zum Editieren
k: Bereich zur Anzeige von Statusmeldungen
l: Zeigt die Zeile an, in der sich der Cursor befindet
m: Zeigt das Arduino-Board und den aktuellen Anschluss an

Abbildung 4.49 ndern der Spracheinstellungen der Arduino-Software

Damit diese nderungen bernommen werden, muss die Arduino-Software einmal


beendet und neu gestartet werden.

4.6 Die grafische Oberflche im Detail


Nun ein paar Erluterungen zur Programmoberflche. Abbildung 4.50 zeigt das kom-
Abbildung 4.50 Die einzelnen Elemente der GUI im berblick
plette Fenster mit allen Symbolen (englisch: Icons). Konkret haben die Symbole und
Bereiche des Fensters folgende Bedeutung:

92 93
4 Die Arduino-Plattform 4.7 Fazit

Hinweis 4.7 Fazit


Standardmig ffnet die Arduino-Software beim Start immer das zuletzt verwendete In diesem Kapitel haben Sie gelernt, wo Sie die Arduino-Software bekommen und wie
Programm. Beim Schlieen der letzten noch offenen Datei beendet sich das Programm Sie diese einschlielich Treiber fr Ihr Arduino-Board installieren. Sie wissen jetzt
aber davor warnt die Software Sie vorher. auerdem, wo Sie die Sprache der Software ndern knnen. Danach habe ich Ihnen die
einzelnen Elemente der grafischen Programmieroberflche (IDE) vorgestellt. Abschlie-
end haben Sie erfahren, wo Sie viele fertige Beispiele finden. Damit haben Sie die wich-
4.6.1 Beispiele innerhalb der Software tigsten Grundlagen, um in Kapitel 7, Los gehts! Erste Praxis, Ihr erstes Programm zu
schreiben.
Wie ich bereits erwhnt habe, enthlt die Arduino-Software zahlreiche fertige Programm-
beispiele zur freien Verwendung. Diese sind nach unterschiedlichen Anforderungen
gruppiert. In Abbildung 4.51 ist die Auswahl eines Programms zur Servoansteuerung dar-
gestellt. Alle Beispiele sind in englischer Sprache kommentiert. Fr dieses Buch benti-
gen Sie keines der Beispielprogramme. Wenn Sie jedoch spter einmal etwas selbst
programmieren, werfen Sie vielleicht als Erstes einen Blick in diese Beispiele, denn hier
ist schon vieles als Grundlage vorhanden und Sie mssen ja das Rad nicht immer neu
erfinden. Falls Sie bereits etwas Erfahrung im Programmieren haben, knnen Sie sich
natrlich auch jetzt die einzelnen Beispiele genauer ansehen.

Abbildung 4.51 Die Arduino-Software enthlt zahlreiche Beispiele.

94 95
Kapitel 7
Los gehts! Erste Praxis
Sie 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 fr den Arduino erstellen und das Ergebnis auf
dem Board sehen knnen.

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 dafr einprgsam.

7.1.1 Blinky Ansteuerung einer LED


Fr Ihr erstes Experiment bentigen Sie folgende Teile:

Checkliste
ein Arduino-Board
ein passendes USB-Kabel

Schlieen 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.

179
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

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 verndern knnen. In Listing 7.1 sehen Sie
das vollstndige 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 luft einmal zu Beginn.


void setup()
Abbildung 7.1 USB-B-Stecker (links) und USB-A-Stecker (rechts) {
// Den digitalen PIN zur Ausgabe (Output) festlegen.
Wenn Sie den Arduino so, wie er ab Werk geliefert wird, mit Ihrem Computer verbin- pinMode(led, OUTPUT);
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
// Die loop-Routine luft immer wieder - unendlich:
(siehe Abbildung 7.2).
void loop()
{
// schalte die LED an (HIGH)
digitalWrite(led, HIGH);

// warte eine halbe Sekunde


delay(500);

// schalte die LED aus (LOW)


digitalWrite(led, LOW);

// warte eine halbe Sekunde


delay(500);
}

Listing 7.1 Ihr erstes Arduino-Programm: Blinky


Abbildung 7.2 Die orange leuchtende LED L
Wie Sie sehen, besteht das Programm aus nur wenigen Zeilen, wovon die meisten nur
Sollte auf Ihrer Platine nur die grne ON-LED leuchten, die orange LED aber nicht, aus Kommentaren bestehen. Zur Erinnerung: Kommentare, die sich auf eine Zeile
machen Sie sich keine Sorgen. Denn Sie erstellen jetzt ja Ihr erstes Programm, das die beschrnken, beginnen jeweils mit zwei Schrgstrichen. Dabei ist es unerheblich, ob sie
am Anfang oder Ende einer Zeile stehen:

180 181
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

// Dies ist ein Kommentar. // warte eine halbe Sekunde


x = 1; // Das ist noch ein Kommentar. delay(500);
}
Nun aber zur Erklrung der Software im Detail. Variablen haben Sie bereits in Abschnitt
6.3, Variablen, kennengelernt. Die erste Anweisung im Listing definiert die Variable Zur Erinnerung: Die loop-Funktion wird automatisch abgearbeitet, nachdem das setup
led und gibt ihr den Wert 13: beendet ist. Zum Schalten einer Spannung auf einen der Ausgnge dient der Befehl1 digi-
talWrite. Wie Sie sehen, wird die LED als Erstes mit HIGH eingeschaltet. Danach wartet der
int led = 13; Arduino fr eine halbe Sekunde, bevor er den nchsten Befehl ausfhrt. Dazu dient die
Anweisung delay(500). Denn der Wert fr delay wird in Millisekunden angegeben, und
Auf den meisten Arduino-Platinen ist Pin 13 des Steckers intern mit einer LED und 500 Millisekunden entsprechen 0,5 Sekunden. Nachdem der Arduino gewartet hat, wird
einem Widerstand verdrahtet. Das ist sehr praktisch, denn die LED kann so leicht zu die LED mit LOW ausgeschaltet. Und wieder wartet das Board danach fr 500 Millisekunden
Kontrollzwecken verwendet werden oder um einen bestimmten Status zu signalisieren. durch den zweiten delay(500)-Befehl. Wenn das Ende der loop-Funktion bei der schlie-
Warum eine LED einen Widerstand bentigt, erklre ich Ihnen spter in Abschnitt 7.1.4, enden geschweiften Klammer } erreicht ist, beginnt die Schleife von vorne und schaltet
denn nun soll zunchst die Praxis im Vordergrund stehen. Darum gehen wir jetzt die LED mit HIGH wieder an. Und so weiter. Ganz einfach, oder? Jetzt, wo Sie wissen, wie das
schnell zu den weiteren Programmanweisungen im Code: Programm funktioniert, wollen Sie es natrlich endlich in Aktion sehen.

void setup()
{ 7.1.2 bertragen der Software auf das Arduino-Board
// Den digitalen PIN als Ausgabe (Output) festlegen. Das bertragen der Software auf das Arduino-Board wird brigens auch flashen
pinMode(led, OUTPUT);
genannt, weil hier ein sogenannter Flash-Speicher mit Daten beschrieben wird.
}

Immer, wenn Sie den Arduino einschalten, werden die Zeilen der setup-Funktion ein- Experten-Wissen zum Angeben
malig ausgefhrt. Dies kann durch Anschluss an einen Computer per USB-Kabel oder Die Software, die Sie auf das Arduino-Board bertragen, wird auch Firmware genannt.
ber die Stromversorgungsbuchse oder nach Drcken des Tasters Reset geschehen. Wie Sie haben davon vielleicht schon einmal gehrt. Eine Firmware besteht aus dem Pro-
bereits in Abschnitt 4.2.1 erlutert, knnen die Pins des Arduino-Boards als Eingang grammcode und allen darin gespeicherten Daten und bleibt beim Ausschalten des
(INPUT) oder Ausgang (OUTPUT) betrieben werden. Das heit, es wird entweder eine Gertes dauerhaft bestehen. Dauerhaft deshalb, weil sie nicht so einfach gelscht
Spannung erwartet (Eingang) oder eine Spannung am Pin ausgegeben (Ausgang). Da Sie werden kann auer eben mit einem Computer und der passenden Software (hier der
in diesem Fall eine LED einschalten wollen, bentigt diese eine Spannung. Dementspre- Arduino-Software). Alle Gerte, die einen Mikrocontroller enthalten, haben auch eine
chend wird der Pin des Arduino als Ausgang geschaltet (OUTPUT), um eine Spannung Firmware im Speicher, die beim Einschalten ausgefhrt wird zum Beispiel Ihre Wasch-
per HIGH auszugeben. Nun zum Hauptprogramm: maschine, die verschiedene Waschprogramme ausfhren kann, eine Verkehrsampel,
die ein Tages- oder Nachtprogramm ausfhren kann, oder vielleicht Ihr Anzeigeinstru-
void loop() ment im Auto, das live den Benzinverbrauch ausrechnen und anzeigen kann.
{
// schalte die LED an (HIGH)
digitalWrite(led, HIGH);
ffnen der Datei
// warte eine halbe Sekunde Um die Software nun endlich zu bertragen, laden Sie die Datei Blinky.ino herunter und
delay(500); starten die Arduino-Software. ffnen Sie die heruntergeladene Datei Blinky.ino im
Men ber Datei ffnen (siehe Abbildung 7.3).
// schalte die LED aus (LOW)
digitalWrite(led, LOW);
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!

182 183
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

Auswahl des Arduino-Boards


Damit die Arduino-Software wei, auf welchen Typ Arduino-Board das Programm ber-
tragen werden soll, whlen Sie einmalig im Men Tools Board den Punkt Arduino
Uno aus (siehe Abbildung 7.5).

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.5 Auswahl des passenden Arduino-Boards

Auswahl des USB-Anschlusses


Nun mssen Sie noch den passenden USB-Anschluss Ihres Computers auswhlen. Dies
geschieht wieder unter dem Menpunkt Tools und dann durch den Unterpunkt Seri-
eller Port. Unter Mac OS heien die USB-Ports /dev/tty.usbxxx. Je nach Board ist der
letzte Teil des Namens mit xxx immer unterschiedlich und knnte zum Beispiel /dev/
tty.usbmodemfa1411 oder auch /dev/tty.usbserial-A5005BPZ lauten. Wenn Sie sich bei
der Auswahl des richtigen Anschlusses nicht sicher sind, beenden Sie die Arduino-Soft-
ware, ziehen alle nicht bentigten USB-Gerte von Ihrem Computer ab und lassen nur
das Arduino-Board verbunden. Dann starten Sie die Arduino-Software erneut und
schauen, was an Anschlssen zur Auswahl steht. Unter Windows heien die Anschlsse
fr 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 Compu-
ters verwenden, mssen Sie diese Einstellung nur einmal durchfhren. Ihr Arduino-
Abbildung 7.4 Das geladene Programm Blinky in der GUI Board wird dann automatisch erkannt.

184 185
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

bertragen der Software erfolgreich programmiert und damit die Grundlage fr alle weiteren Schritte auf dem
Der einfachste Teil ist nun das bertragen der Software auf das Board. Klicken Sie hierzu Weg zu Ihrem eigenen Roboter gelegt! Weiter gehts.
einfach auf die Upload-Schaltflche in der Arduino-Software. Der Rest geht automa-
tisch: Die Software prft den geschriebenen Programmcode vor dem bertragen noch
7.1.3 Fehlersuche
einmal auf Fehler, wandelt ihn in ein fr den Mikrocontroller verstndliches Format um
(kompiliert und linkt) und bertrgt das Ergebnis auf das Arduino-Board (flasht). Abbil- Falls Sie eine Fehlermeldung erhalten haben, schauen Sie auf die Arduino-Projektseite.
dung 7.6 zeigt die GUI, wenn der Vorgang erfolgreich abgeschlossen wurde: In der Dort gibt es einen ausfhrlichen Troubleshooting-Bereich.2 Die dort beschriebenen
Statuszeile unten steht dann Upload abgeschlossen.. Lsungen 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 knnen davon ausgehen, dass bereits vor Ihnen jemand dieses Problem
hatte und eine Lsung 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 genderten Code auf das Arduino-Board, und schauen Sie sich die Auswirkun-
gen sofort an. Sie bekommen so ein Gefhl dafr, 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 erwhnt 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 Widerstnden schon einmal vom ohm-
schen Gesetz3 gehrt.

Das ohmsche Gesetz


Das ohmsche Gesetz beschreibt, wie sich der durch ein Objekt flieende Strom in seiner
Strke verndert, wenn eine elektrische Spannung an ein Objekt anlegt und diese Span-
nung verndert wird.
Anders formuliert: Die Strke des elektrischen Stroms, der durch ein Objekt fliet, ver-
ndert sich im gleichen Verhltnis (proportional) wie die elektrische Spannung am
Abbildung 7.6 Das bertragen der Arduino-Software (Upload) ist beendet. Objekt. Das bedeutet automatisch, dass der Widerstand des Objekts gleich bleibt (kon-
stant), egal wie sich Spannung und Strom ndern. Dieser Zusammenhang kann in einer
Hat alles funktioniert, blinkt die LED auf dem Arduino-Board nun in einem Rhythmus
von 0,5 Sekunden. Herzlichen Glckwunsch! Sie haben nun das erste Mal Ihren Arduino 2 http://arduino.cc/en/Guide/Troubleshooting
3 Benannt nach Georg Simon Ohm

186 187
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

die LED nur 20 mA an Strom I flieen drfen, haben Sie alle Werte zusammen, die Sie
einfachen Formel beschrieben werden. Wird die Stromstrke mit I, die Spannung mit U
zur Berechnung des bentigten Widerstandes bentigen:
und der Widerstand mit R bezeichnet, lautet sie:
U = 2,8 V
bzw.: bzw.: I = 0,02 A
R=?

Eingefgt in die Formel des ohmschen Gesetzes sieht das so aus:


Praktische Anwendung des ohmschen Gesetzes
Und wozu brauchen Sie das nun? Ganz einfach. Eine LED zum Beispiel ist ein verhltnis-
mig empfindliches Bauteil (auch wenn LEDs heutzutage an jeder Stelle eingesetzt
werden). Denn eine LED vertrgt nur eine geringe maximale elektrische Spannung U Sie bentigen somit einen Widerstand von mindestens 140 Ohm (140 ), damit die LED
und eine maximale Stromstrke I. beim Anschluss an eine Spannung von 5 Volt sprich: an einem der Ausgnge des
Arduino-Boards nicht zerstrt wird. Da Widerstnde nicht mit allen Werten produ-
Vorsicht! ziert werden, sondern nur in bestimmten Reihen5 erhltlich sind, ist der nchsthhere
Wert hier 150 . In der Praxis macht das fr die Helligkeit der LED keinen Unterschied.
Fliet 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 Wichtig!
bitte sehr vorsichtig, und schauen Sie in das Datenblatt des Herstellers der LED, welche Bitte denken Sie immer daran, dass jede LED andere Spannungen und Strme vertrgt.
Spannungen und Strme die LED maximal vertrgt! 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).
Vorwiderstnde
Um den Strom zu begrenzen, der durch eine LED fliet, wird ein Widerstand R bentigt,
der vor die LED geschaltet wird (Vorwiderstand). Und um die Hhe des Widerstandes zu Widerstandsberechnung fr LEDs vollautomatisch
berechnen, wird berraschung! das ohmsche Gesetz mit obigen Formeln benutzt. Falls Sie sich nicht die Mhe machen mchten, LED-Vorwiderstnde jedes Mal von
Die Einheit des Widerstandes lautet brigens Ohm (). Wie praktisch, was? Hand zu berechnen, so finden Sie im Internet passende Widerstandsrechner6.

Eine orange Standard-LED wird typischerweise mit einer Spannung von 2,2 Volt (V) und
Anschluss weiterer LEDs
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 anschlieen, der ja 5 Mchten Sie auf dem Arduino-Board eine weitere LED an einen anderen der Pins
Volt Spannung liefert (siehe Abschnitt 4.2.1), bentigen Sie einen Widerstand, um den anschlieen, she das auf einer Steckplatine so wie in Abbildung 7.7 aus.
Strom und die Spannung an der LED zu begrenzen. Welchen Widerstandswert muss der
Widerstand haben? Nun, wenn am Ausgang des Arduino 5 Volt herauskommen, die Widerstnde und ihre Farbcodierung
LED aber nur 2,2 Volt als Spannung bentigt, bleibt ein Unterschied von 5 V 2,2 V = 2,8 Der Wert von Widerstnden ist nicht als Zahlenwert auf sie aufgedruckt, sondern
V brig, der am Widerstand R verbraucht4 werden muss. Da Sie jetzt wissen, dass durch anhand von farbigen Ringen kodiert. Eine Erluterung dazu finden Sie im Internet.7 Fr
den Aufbau des Roboters ist das in diesem Buch nicht relevant.
4 Tatschlich 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 Wrme
statt, die jedoch so gering ist, dass sie nicht sprbar ist. Umgangssprachlich spricht dennoch jeder 5 http://de.wikipedia.org/wiki/Widerstandsreihe
vom Energieverbrauch. 6 Zum Beispiel http://www.leds.de/Widerstandsrechner/
7 http://de.wikipedia.org/wiki/Widerstand_(Bauelement)#Farbkodierung_auf_Widerst.C3.A4nden

188 189
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

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 vollstndig hell

10

15

20

25

30
(HIGH), und wenn sie ausgeschaltet ist, ist es dunkel (LOW). Und nun der Trick: Wenn
1

5
J

J
I

I
Sie die Taschenlampe nun so schnell Sie knnen hintereinander ein- und wieder aus-
F G H

F G H
schalten, so werden Sie feststellen, dass es aussieht, was wre sie gedimmt. Offenbar
erhellt sie den Raum nur noch halb so stark, als wenn sie die ganze Zeit leuchtet. Das
A B C D E

A B C D E
liegt daran, dass das menschliche Auge nur sehr trge auf die schnellen Helligkeitsnde-
rungen reagieren kann. Es nimmt daher insgesamt nur eine halbe Helligkeit wahr.
10

15

20

25

30
1

Das knnen 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.
GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
TX0
RESET
DIGITAL (PWM= )
ICSP2
L

TX ON
TM
RX Arduino
1
ICSP

100%

0% t/s

0 1 2 3 4 5 6 7 8
RESET

POWER ANALOG IN
IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5

t1

Abbildung 7.7 Eine weitere LED mit Widerstand am Arduino-Board8 Abbildung 7.8 Pulsweitenmodulation

In dem Diagramm ist die Taschenlampe innerhalb einer Zeitdauer t von insgesamt
7.1.5 Wie dimme ich eine LED?
acht Sekunden viermal fr eine Sekunde ausgeschaltet und viermal fr eine Sekunde
In diesem Abschnitt lernen Sie, wie Sie eine LED dimmen knnen und warum das wich- eingeschaltet. In der Dauer von acht Sekunden war sie also 50 % der Zeit an- und 50 %
tig fr die Ansteuerung Ihres Roboters sein wird. Generell kennt ein digitaler Arduino- ausgeschaltet. Natrlich wrde das Auge einen so langsamem Wechsel deutlich wahr-
Ausgang nur zwei Zustnde: HIGH (5 Volt) und LOW (0 Volt). Damit knnte eine LED nur nehmen. Das Beispiel in Abbildung 7.8 dient nur zur einfacheren Berechnung der 50 %
ein- oder ausgeschaltet sein. Was also tun Sie, wenn Sie die LED in der Helligkeit regeln sprich der halben Helligkeit.
wollen? Knnten Sie nicht einfach eine geringere Spannung anlegen, damit die LED
Der Name Pulsweitenmodulation (PWM) kommt daher, dass die Lnge der Impulse,
dunkler leuchtet? Nein. Denn anders als bei Glhlampen ist der Spannungsbereich, in
also die Weite im Diagramm, verndert (moduliert) wird.9 Es muss ja kompliziert klin-
dem eine LED arbeitet (leuchtet), sehr eng begrenzt. Die LED bentigt je nach Typ eine
gen, denn Sie sind nun schon fast ein Arduino-Fachmann, und da brauchen Sie auch ein
sogenannte Durchflussspannung (englisch forward voltage), ab der sie berhaupt erst
paar Fachausdrcke zum Angeben.
anfngt zu leuchten. Ein typischer Spannungsbereich fr eine LED liegt bei 2 bis 2,4 Volt,
und in diesem Bereich leuchtet sie dann in voller Strke. Aber es gibt einen Trick: Puls-
weitenmodulation (PWU). Und die kann Ihr Arduino auch!

8 Abbildung erstellt mit Fritzing 9 Die Pulsweitenmodulation (PWM) wird brigens auch Pulsdauermodulation (PDM) genannt.

190 191
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

Hintergrund abarbeiten kann! Auerdem ist es nicht sehr einfach, mittels delay die Ein-
Ganz formell schaltdauer exakt zu definieren. Weitere Details dazu finden Sie im Internet im Artikel
In einer Formel wrde die Berechnung der Helligkeit aus dem Diagramm oben so ausse- The secrets of Arduino PWM.10
hen:


PWM fr Profis: analogWrite
Praktischerweise haben die Entwickler auch hier vorgesorgt und PWM gleich mitgelie-
Man spricht hierbei auch von einem duty cycle von 50 %. Duty cycle bedeutet so viel wie fert. Anstatt mittels delay einen Pin in einem bestimmten Rhythmus zwischen HIGH
Einschaltdauer oder Tastverhltnis. und LOW wechseln zu lassen, gibt es folgenden Befehl:
Wenn die Lampe innerhalb einer Sekunde nur 0,1 Sekunden lang an wre, ergbe das
analogWrite(Pin, Wert)
einen Helligkeitswert (duty cycle) von 10 %:

 Der Befehl bentigt zwei Parameter: Der erste ist der anzusteuernde Pin, der zweite eine
Zahl von 0 (= immer aus) bis 255 (= immer an).

Beispiel:

Pulsweitenmodulation nachgebildet Der Befehl analogWrite(5, 128) schaltet den Pin 5 auf 50 % des maximalen Wertes von 5
Um die Pulsweitenmodulation auf dem Arduino nachzubilden, bentigen Sie wieder Volt, also 2,5 Volt (255 = 100 % = 5 Volt, 128 = 50 % = 2,5 Volt). Natrlich liegen fr einen
den Code Blinky.ino aus Listing 7.1. Tragen Sie fr die delay-Anweisungen folgende neue Teil der Zeit immer noch 5 Volt am Ausgang des Ports an, denn dieser wechselt ja wie
Werte in die Klammern ein: beim Taschenlampenlicht immer noch sehr schnell zwischen 0 und 5 Volt. Wenn Sie
aber mit einem trgen Messgert die Spannung am Pin berprfen, so werden Sie effek-
digitalWrite(led, HIGH); // schalte die LED an (HIGH) tiv nur 2,5 Volt messen (Mittelwert).
delay(100); // warte 0,1 Sekunden
digitalWrite(led, LOW); // schalte die LED aus (LOW)
Und wenn Sie nun mittels analogWrite(5, 64) effektiv nur ca. 1,25 Volt messen wrden,
delay(900); // warte 0,9 Sekunden warum leuchtet die LED dann immer noch, obwohl sie ja, wie in Abschnitt 7.1.4 beschrie-
ben, eine Spannung grer als 2 Volt bentigt, um zu leuchten? Ganz einfach: Die einfa-
Wenn Sie nun den genderten Code auf Ihren Arduino hochladen, werden Sie sehen, chen Messgerte sind zu trge, um die schnellen Wechsel in der Gleichspannung
dass die LED nur halb so hell erscheint wie in dem Beispiel mit der Taschenlampe. messen zu knnen. An einem sehr przisen und vor allem schnellen Oszilloskop sind
Sie haben nmlich die LED nur noch fr 100 Millisekunden an- und dann fr 900 Mil- die Wechsel zwischen 0 und 5 Volt gut zu sehen. In Abbildung 7.9 sehen Sie so eine Mes-
lisekunden wieder ausgeschaltet. Dieses schnelle Flackern wird von Ihrem Auge so sung mit dem Oszilloskop. Hier ist deutlich der gemessene Mittelwert Mean mit 1,28
wahrgenommen, als wre die LED viel dunkler geworden. Spielen Sie ruhig mit den Volt zu erkennen, aber eben auch der Maximalwert Maximum mit 5,28 Volt.11
zwei Werten fr die delay-Anweisung, und versuchen Sie, weitere Helligkeitsstufen zu Da unsere LED die bei 5,28 Volt entstehenden hheren Strme nicht dauerhaft vertrgt,
bilden.
muss eben auch bei den effektiv gemessenen 1,28 Volt ein Vorwiderstand verwendet
werden.
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 spter eine feinere 10 http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
Auflsung bentigen, ginge das mit delay nicht. Der wesentliche Nachteil von delay ist 11 Eigentlich sollten das hier genau 5,0 Volt sein. Aber so spielt das Leben: Offenbar lagen zum
jedoch, dass whrend der Ausfhrung dieses Befehls der Arduino nichts anderes im Zeitpunkt des Experiments an meinem Board 5,28 Volt an.

192 193
7 Los gehts! Erste Praxis 7.1 Der erste Kontakt mit der Hardware

Warum ist PWM so wichtig?


Wichtig!
Die Pulsweitenmodulation ist nicht nur praktisch, um LEDs zu dimmen. Wenn Sie
Der Arduino Uno kann nicht auf jedem Pin ein PWM-Signal ausgeben! Es sind genau
spter in Abschnitt 7.5, Ich muss hier weg! Ansteuerung von Motoren, die Motoren
sechs Pins, die diese Funktion nutzen knnen. Damit Sie sich diese nicht merken ms-
Ihres Roboters ansteuern, werden Sie PWM verwenden, um den Motor nicht nur mit
sen, sind sie auf der Platine mit einer Tilde (~) vor der jeweiligen Pin-Nummer gekenn-
maximaler Geschwindigkeit (100 % = HIGH), sondern auch langsamer (zum Beispiel
zeichnet.
mit 25 %) drehen zu lassen.

brigens: HIGH ist nicht gleich HIGH oder: 3,3 Volt vs. 5 Volt
Viele neue Bauteile nutzen als HIGH-Zustand statt 5 Volt oft nur noch 3,3 Volt, weil
damit insgesamt in einer Schaltung Energie gespart wird. Um eine andere Schaltung
mit 3,3-Volt-Logik am Arduino Uno anzuschlieen, werden spezielle Wandler bentigt,
die die Spannungen automatisch von 3,3 nach 5 Volt und umgekehrt wandeln. Im Inter-
net finden Sie diese zum Beispiel unter der englischen Bezeichnung Voltage Level Trans-
lator. Sie kosten nur wenige Euro.

bung
Erstellen Sie jetzt bitte ein Programm, das eine LED auf 25 % Helligkeit herunterregelt
(dimmt). Schlieen Sie dazu eine LED mit Vorwiderstand an Pin 5 an. Wenn Sie sich
nicht mehr sicher sind, wie die LED angeschlossen wird, blttern Sie dazu kurz zu Abbil-
dung 7.7 zurck. Das Programm besteht aus sehr wenigen Zeilen und sollte am Ende so
wie PWM_LED.ino in Listing 7.2 aussehen:

Abbildung 7.9 Schneller Wechsel der Pegel zwischen 0 und 5 Volt // An Pin 5 ist eine LED mit Widerstand angeschlossen.
int led = 5;
In Abbildung 7.10 sehen Sie die markierten PWM-fhigen Pins 3, 5, 6, 9, 10 und 11.
void setup()
{
// Den Pin zur Ausgabe festlegen.
pinMode(led, OUTPUT);
}

void loop()
{
// 64 entspricht ca. 25 % von 255.
// Die LED leuchtet nun mit 25 % Helligkeit.
analogWrite(led, 64);
}
Abbildung 7.10 Die PWM-Pins sind mit einer Tilde (~) gekennzeichnet.
Listing 7.2 Das Programm PWM_LED.ino dimmt eine LED auf 25 %.

194 195
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

7.1.6 Zwischenfazit
Der erste Praxisteil ist geschafft, und ich hoffe, es hat Ihnen bis hierher Spa gemacht.

GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
TX0
RESET
Sie haben erfolgreich die Grundlagen fr die nachfolgenden Kapitel auf dem Weg zu ICSP2
DIGITAL (PWM= )

Ihrem eigenen Arduino-Roboter gelernt. Als Erstes haben Sie die orange LED zum Blin- TX ON
TM
RX Arduino
ken gebracht, indem Sie zum ersten Mal Software auf Ihr Arduino-Board bertragen 1

haben. Nach etwas Theorie ber das ohmsche Gesetz lernten Sie im Anschluss, warum

ICSP
LEDs immer Vorwiderstnde bentigen. Als Letztes haben Sie anhand einer Taschen-
lampe gelernt, was Pulsweitenmodulation (PWM) ist und dass Sie diese spter zur
Motorsteuerung auf Ihrem Roboter bentigen werden.

RESET
POWER ANALOG IN

IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5
7.2 Ist da jemand? Kontakt mit der Auenwelt
In Abschnitt 7.1.1 haben Sie gelernt, wie Sie mit dem Arduino-Board mittels LED etwas

10

15

20

25

30
1

5
signalisieren knnen. Was tun Sie aber, wenn Ihr Arduino-Board etwas von der Auen-

J
I

I
welt mitbekommen soll? Das zeige ich Ihnen in den folgenden Abschnitten. Und es wird

F G H

F G H
viel einfacher als das PWM-Thema aus Abschnitt 7.1.5.

A B C D E

A B C D E
7.2.1 Schalter abfragen
Das einfachste Element, das Sie an einem Arduino-Pin einlesen knnen, ist ein simp-

10

15

20

25

30
1

5
ler Schalter. Diese Teile bentigen Sie fr den nachfolgenden Aufbau:

Abbildung 7.11 Eine einfache Schaltung mit Schalter12

Checkliste Wie Sie sehen, ist Pin 5 des Arduino ber die gelbe Leitung mit einem Widerstand von 10
ein Arduino-Board k und mit einem Kontakt des Schalters verbunden. Das andere Ende des Widerstandes
ein passendes USB-Kabel R1 ist ber die schwarze Leitung mit der Masse (GND) verbunden. Der mittlere Kontakt
des Schalters S1 ist ber die rote Leitung mit 5V verbunden. Zur Verdeutlichung zeigt
Abbildung 7.12 den dazu passenden Schaltplan.
Um einen Arduino-Pin einzulesen, muss natrlich ein Signal auf den Pin gegeben wer-
den, das der Arduino versteht. Wie Sie sich bestimmt schon gedacht haben, ist das Warum ist eine so umstndliche Verkabelung mit einem extra Widerstand notwendig,
einfachste Signal ein HIGH oder LOW. Dazu wird gleich ein Pin des Arduino-Boards mit wenn Sie doch nur einen simplen Schalter einlesen wollen? Noch einmal: Wrde der
der Masse (GND = LOW-Signal) und mit 5 Volt (HIGH-Signal) verbunden. Wenn Sie nm- Widerstand weggelassen werden und wre der Schalter geffnet bzw. in die eine Rich-
lich den Wert eines Arduino-Eingangs einfach einlesen wrden, ohne dass etwas mit tung geschoben, so wrden Sie beim Einlesen des Arduino-Pins einen willkrlichen
dem Pin verbunden ist dieser also quasi in der Luft hngt , dann bekommen Sie Wert als Ergebnis zurckbekommen, weil der Pin in der Luft hngen wrde und
jedes Mal ein nicht vorhersagbares Ergebnis. Bauen Sie nun das Experiment mit dem
Schalter so wie in Abbildung 7.11 dargestellt auf. 12 Abbildung erstellt mit Fritzing

196 197
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

dadurch keinen definierten Zustand wie HIGH oder LOW hat. Wenn aber ein Wider- Der Befehl zum Einlesen eines digitalen Arduino-Pins lautet:
stand gegen die Masse (GND) geschaltet wird, so wird der Pin auf Masse gezogen. Ein
digitalRead(Pin);
Auslesen des Pins ergibt somit den definierten Wert LOW. Schieben Sie den Schalter in
die andere Richtung, liegen am Pin des Arduino 5 Volt an. Sie haben also ein definiertes
Der Befehl bentigt beim Aufruf nur den Parameter Pin, also die Nummer des digitalen
HIGH-Signal.
Pins, der eingelesen werden soll. Als Ergebnis liefert der Befehl den Wert HIGH oder
LOW zurck. 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-
VIN tung aus Abbildung 7.11 ausprobieren.
3V3

int ledPin = 13; // LED verbunden mit Digital-Pin 13


5V

RESET D0/RX int inPin = 5; // Schalter verbunden mit Digital-Pin 5


RESET2 D1/TX int zustand = LOW; // Diese Variable speichert den Schalterzustand
AREF D2
ioref D3 PWM 3 void setup()
D4 2 {
A0 D5 PWM 1
S1 pinMode(ledPin, OUTPUT); // Digital-Pin 13 als Ausgang definieren
A1 D6 PWM
Arduino pinMode(inPin, INPUT); // Digital-Pin 7 als Eingang definieren
A2 Uno D7
(Rev3) }
A3 D8
A4/SDA D9 PWM
A5/SCL D10 PWM/SS void loop()
D11 PWM/MOSI {
D12/MISO zustand = digitalRead(inPin); // Schalterzustand (Pin) einlesen
1

D13/SCK
R1 digitalWrite(ledPin, zustand); // LED gem Schalterzustand schalten
10k }
N/C
2

Listing 7.3 Einlesen eines Schalters und Ausgabe mittels LED


GND

Arduino Uno Wie erwartet sollte nun der Schalter die LED des Arduino-Boards ein- und ausschalten.

Warum einfach, wenn es auch umstndlich geht?


Abbildung 7.12 Der Schaltplan zu Abbildung 7.1113
Haben Sie sich beim Lesen des Programmcodes gefragt, warum es so viele Zeilen sind
bzw., genauer gesagt, warum eine Variable verwendet wird? Natrlich htte der Code
Expertenwissen zum Angeben auch wie in Listing 7.4 wesentlich krzer geschrieben werden knnen.
Ein Widerstand, der einen Pin wie beschrieben herunter auf Masse zieht, wird bri-
void setup()
gens Pull-down-Widerstand genannt. Das Gleiche gibt es auch Richtung HIGH: Ein
{
Widerstand vom Pin zur positiven Versorgungsspannung heit Pull-up-Widerstand.
// Digital-Pin 13 als Ausgang definieren
pinMode(13, OUTPUT);
13 Abbildung erstellt mit Fritzing

198 199
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

// Digital-Pin 7 als Eingang definieren


pinMode(7, INPUT);
}
Checkliste
void loop() einen Taster
{ einen Widerstand, 10 k
// Schalter einlesen und LED sofort ein-/ausschalten ein paar Leitungen (Jumper Wire)
digitalWrite(13, digitalRead(7));
eine Steckplatine
}
den Arduino Uno
Listing 7.4 Einlesen eines Schalters kurz, aber unvorteilhaft

Auf den ersten Blick erscheint Ihnen das Programm sicher einfacher und bersichtli- Im Unterschied zu einem Schalter, der seine Position dauerhaft beibehlt, verbindet ein
cher. Schauen Sie sich die Unterschiede in Ruhe an. Sie werden feststellen, dass in Lis- Taster seine Kontakte nur, solange er gedrckt wird zumindest bei einem Taster, der
ting 7.4 vollstndig auf die Verwendung von Variablen verzichtet und der Code dadurch die Kontakte beim Bettigen schliet. Es gibt nmlich auch Taster, die beim Bettigen
sehr schlank wird. Das kann natrlich so gemacht werden insbesondere dann, wenn es die Kontakte ffnen. Der Aufbau der Schaltung ist genau der gleiche wie beim Schalter,
sich um ein so einfaches Programm handelt. Stellen Sie sich aber nun vor, Sie bauen die wie Sie anhand Abbildung 7.13 leicht feststellen werden.
Schaltung einmal um und schlieen den Schalter statt an Pin 7 an Pin 11 an. Vielleicht
schlieen Sie auch noch eine grne LED statt der eingebauten an und wollen diese an

GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11
Pin 10 stecken.

RX0
TX0
RESET
DIGITAL (PWM= )
ICSP2
L

Was mssten Sie dazu nun im Programmcode verndern? Richtig: An jeder Stelle mss- TX
RX Arduino
TM
ON

1
ten Sie fr den Schalter die 7 auf 11 ndern und fr die LED die 13 auf 10. Verwenden Sie

ICSP
stattdessen den Code mit den Variablen, mssten Sie lediglich die zwei Zeilen mit led-
Pin und inPin aktualisieren. Die lange Codevariante ist auf den ersten Blick vielleicht
umstndlicher, aber wesentlich leichter zu warten. Denken Sie nur daran, an wie vielen

RESET
POWER ANALOG IN

IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5
Stellen Sie Pin-Nummern aktualisieren mssten, sollten Sie spter einmal ein Pro-
gramm mit hundert Zeilen haben. Nicht zuletzt wre dieses Vorgehen auch noch deut-
lich fehleranflliger.

10

15

20

25

30
In diesem Abschnitt haben Sie gelernt, wie Sie einen Schalter anschlieen, diesen ausle-

5
J

J
I

I
sen und warum hierzu ein Widerstand notwendig ist. Des Weiteren haben Sie erfahren,

F G H

F G H
warum es sich meistens lohnt, Variablen in Programmen zu verwenden, statt sie so kurz
wie mglich zu schreiben.

A B C D E

A B C D E
10

15

20

25

30
1

5
7.2.2 Taster abfragen
Was mit einem Schalter geht, geht mit einem Taster genauso einfach. Und das testen Sie
jetzt. Sie bentigen fr den nachfolgenden Aufbau: Abbildung 7.13 Schaltung zum Auslesen eines Tasters14

14 Abbildung erstellt mit Fritzing

200 201
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Den dazugehrigen Schaltplan sehen Sie in Abbildung 7.14: Nur das Symbol fr den Tas- Denn der Pin wird standardmig immer Richtung +5 Volt gezogen. Das bedeutet:
ter S2 hat sich verndert. Wenn der Taster in Abbildung 7.15 nicht gedrckt ist, ist der Pin HIGH. Wird der Taster
gedrckt, wird der Pin mit GND verbunden und ist damit LOW. Aber dafr sparen Sie sich
ein extra Bauteil.
3V3

VIN
5V

RESET
RESET D0/RX
RESET2 D1/TX S2

1
AREF D2

ICSP2
ioref D3 PWM

10

15

20

25

30
1

5
J

J
AREF

TX
RX
D4

L
GND

I
F G H

F G H
13
A0 D5 PWM IOREF
12
RESET
A1 D6 PWM 11

Arduino
3V3
Arduino 5V
10

A2 Uno D7 GND
9

A B C D E

A B C D E
8

TM
(Rev3)

POWER
GND
A3 D8

DIGITAL
VIN 7

A4/SDA D9 PWM 6
A0 5

(PWM=
A5/SCL D10 PWM/SS A1 4

10

15

20

25

30
1

5
A2 3

ANALOG IN
D11 PWM/MOSI A3 2

)
A4 TX0 1
ICSP

ON
1
D12/MISO A5 RX0 0
1

D13/SCK
R1
10k
N/C Abbildung 7.15 Versuch mit Taster und internem Pull-up-Widerstand16
2
GND

Arduino Uno Prellende Taster und Schalter


Taster und Schalter haben eine Eigenschaft, die Prellen (engl. bounce) genannt wird. Das
bedeutet. Wenn ein Schalter oder Taster bettigt wird, werden die Kontakte in der Regel
Abbildung 7.14 Schaltplan zu Abbildung 7.1315 nicht einfach geschlossen, sondern im winzigen Millimeterbereich mehrfach hinterein-
ander kurz geschlossen und wieder geffnet. Das kann man sich wie einen Handball
Vorwiderstand ohne Widerstand oder: Der interne Pull-up-Widerstand vorstellen, der auf den Boden fllt und dabei ein paarmal springt, bis er endgltig liegen
Sie knnen den Aufbau aus Abbildung 7.13 durch Aktivieren einer besonderen Funktion bleibt. Dieses Verhalten ist technisch bedingt und unerwnscht. Beim Schalten einer
Ihres Arduino auch ohne extra Widerstand aufbauen. Dazu nutzen Sie den internen LED ist dieses Prellen nicht weiter tragisch und auch nicht wahrnehmbar.
Pull-up-Widerstand. Intern? Richtig. Der auf Ihrem Arduino-Board verbaute Mikrocont-
Wenn Sie aber zum Beispiel jede Bettigung eines Tasters zhlen wollen, so nimmt der
roller besitzt an seinen digitalen Pins interne Pull-up-Widerstnde, die Sie per Software
Arduino diese Mehrfachbettigungen durch das Prellen aufgrund mehrerer schneller
aktivieren knnen. Dies geschieht mit folgendem Befehl:
Messungen whrend des Tastendrucks wahr. Ein scheinbar einmaliger Druck auf den
pinMode(Pin, INPUT_PULLUP); Taster wird dann zum Beispiel als fnfmal bettigt gezhlt. Das kann dann bei Aus-
wertungen in einer Software zu einem Problem werden. In Abbildung 7.16 sehen Sie, wie
Damit ersparen Sie sich einen separaten Widerstand beim Abfragen von Tastern oder ein Taster mehrfach zwischen AUS und EIN wechselt, bis er am Ende eingeschaltet
Schaltern. Beachten Sie aber, dass sich die Logik beim Auslesen des Pins umkehrt. bleibt.

15 Abbildung erstellt mit Fritzing 16 Abbildung erstellt mit Fritzing

202 203
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

pinMode(TASTER_PIN, INPUT);

// Internen Pull-up-Widerstand aktivieren


pinMode(TASTER_PIN, INPUT_PULLUP);
// Entprellfunktion aktivieren
entpreller.attach(TASTER_PIN);
entpreller.interval(5);

// LED-Pin als Ausgang definieren


pinMode(LED_PIN,OUTPUT);
}

void loop()
{
Abbildung 7.16 Ein prellender Schalter beim Einschalten
// Entpreller (entpreller) aktualisieren
entpreller.update();
Wie kann dieses Prellproblem gelst werden? Zum einen gibt es spezielle sogenannte
entprellte Taster. Diese sind mechanisch so konstruiert, dass sie nicht prellen knnen.
// "Korrigierten" Wert des Tasters lesen
Zum anderen ist das aber auch per Software lsbar. Es gibt eine fertige Lsung, da sich
int wert = entpreller.read();
bereits andere ausgiebig zu diesem Problem Gedanken gemacht haben: die sogenannte
Bounce-Bibliothek17. Diese sorgt dafr, dass ein prellender Schalter oder Taster wie // LED ein- oder ausschalten
gewnscht abgefragt werden kann, und filtert die Strungen automatisch fr Sie her- // (LOW = EIN, weil Pull-up-Widerstand!)
aus. Ein Beispiel dazu sehen Sie in Listing 7.5. Den Code zum Download finden Sie in der if (wert == LOW)
Datei Taster_entprellt.ino. Der Aufbau der Testschaltung dazu ist in Abbildung 7.15 dar- {
gestellt. Denken Sie daran, dass Sie fr die Verwendung der Bibliothek diese erst in Ihre // LED an
Arduino-Software importieren mssen (siehe Abschnitt 6.15). digitalWrite(LED_PIN, HIGH);
}
#include <Bounce2.h> else
{
#define TASTER_PIN 2 // Pin fr den Taster (gegen GND) // LED aus
#define LED_PIN 13 // Die bliche Arduino-LED digitalWrite(LED_PIN, LOW);
}
// Erstelle ein Bounce-Objekt, das das Entprellen regelt. }
Bounce entpreller = Bounce();
Listing 7.5 Taster einlesen und automatisch entprellen
void setup()
{ Die meisten Zeilen drften fr Sie nicht mehr neu sein. Spannend ist lediglich die Zeile
// Taster-Pin als Eingang definieren zu Beginn:

Bounce entpreller = Bounce();


17 http://playground.arduino.cc/code/bounce

204 205
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Hier wird ein Objekt namens entpreller erstellt, das die ganze Magie fr Sie regelt. Fernseher oder eine Stereoanlage mit Fernbedienung besitzen, denn die gngigen Fern-
Beachten Sie weiterhin die in der setup-Funktion enthaltene Anweisung pinMode(TAS- bedienungen haben alle eine Infrarot-LED (IR-LED), die Signale an das zu steuernde
TER_PIN, INPUT_PULLUP), die den internen Pull-up-Widerstand im Arduino fr den Tas- Gert bertrgt. Mit vielen Digitalkameras oder Webcams knnen Sie die Infrarotstrah-
ter-Pin aktiviert (siehe Abschnitt 7.1.4). Wie die Entprellfunktion intern genau arbeitet, lung sogar sichtbar machen: Halten Sie doch einmal in sehr dunkler Umgebung Ihre
knnen Sie auf der Website des Entwicklers nachlesen.18 Wichtig sind an dieser Stelle Fernseherfernbedienung vor eine Kamera, bettigen eine der Tasten und schauen Sie
zum einen die folgenden Zeilen in der setup-Funktion: auf das Bild. Es drfte ungefhr wie in Abbildung 7.17 aussehen. Der nun sichtbar leucht-
ende Punkt ist die Infrarot-LED.
// Entprellfunktion aktivieren
entpreller.attach(TASTER_PIN);
entpreller.interval(5);

sowie die folgenden Zeilen spter in der loop-Funktion:

// Entpreller (entpreller) aktualisieren


entpreller.update();

// "Korrigierten" Wert des Tasters lesen


int wert = entpreller.read();

Das ist auch schon alles, was Sie dazu wissen mssen. Wahrscheinlich werden Sie die Abbildung 7.17 Infrarotlicht, mit einer Webcam sichtbar gemacht
Bounce-Bibliothek in der Praxis nicht sehr oft bentigen. Aber falls einmal die exakte
Auswertung von Tastern oder Schaltern notwendig ist, kennen Sie nun diese hilfreiche Natrlich hat Ihr Fernseher oder das entsprechende empfangende Gert auch einen Inf-
Bibliothek. rarotsensor, um dieses Licht zu erkennen und mittels weiterer Elektronik zu dekodie-
ren. Dekodieren bedeutet in diesem Fall, die bertragenen Signale zu entschlsseln.
Schlielich wre es ziemlich hilfreich, wenn beim Drcken der Taste 4 auf der Fernbe-
7.2.3 Sensoren dienung eine andere Information als bei Taste 2 an das zu steuernde Gert bertragen
Aber nun zu etwas Spannenderem als simplen Tastern und Schaltern: Sensoren. Ein Sen- wird. In Abbildung 7.18 sehen Sie einen Infrarotsensor (IR-Sensor).
sor ist so etwas wie ein Fhler, der bestimmte Eigenschaften seiner Umgebung erken-
nen kann. Er nimmt Messungen vor und stellt die Ergebnisse an seinen Anschlssen zum
Auslesen an elektrischen Schaltungen, wie dem Arduino, zur Verfgung. In den folgenden
Abschitten will ich Ihnen drei Sensoren vorstellen, die in der Robotik hufig Anwendung
finden. Einen davon werden Sie selbst spter an Ihrem Arduino-Roboter nutzen!

7.2.4 Infrarotsensor
Es gibt verschiedenste Sensoren, die sich mit der Messung von Infrarotlicht beschfti-
gen. Infrarotlicht ist Licht im fr den Menschen unsichtbaren Bereich. Dabei sind wir
stndig davon umgeben, sogar in unserem Wohnzimmer zumindest, wenn Sie einen
Abbildung 7.18 Der Infrarotsensor (IR-Sensor) TSOP38238
18 https://github.com/thomasfredericks/Bounce-Arduino-Wiring/wiki

206 207
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Der Vorteil der Infrarotsensoren ist, dass sie relativ gnstig sind. Sie haben aber auch Fr das nachfolgende Experiment bentigen Sie folgende Teile:
einen Nachteil: Da die Sonne ebenfalls einen sehr hohen Anteil an Infrarotlicht aussen-
det, funktionieren viele IR-Sensoren im Auenbereich nicht sehr zuverlssig. Denn
neben dem Infrarotlicht der Fernbedienung empfangen sie zustzlich das IR-Licht der
Sonne und knnen das Signal somit nicht immer eindeutig erkennen. Fr Innenberei- Checkliste
che knnen sie also gut eingesetzt werden, whrend drauen andere Sensoren besser einen Infrarotdistanzsensor
geeignet sind. den Arduino Uno

Der Infrarotsensor Ihres Roboters


Stecken Sie das Anschlusskabel an den Sensor und schlieen Sie dann den Sensor wie in
Der Infrarotsensor, der spter auf Ihrem Arduino-Roboter zum Einsatz kommen wird,
Abbildung 7.20 an Ihren Arduino an. Das weie Sensorkabel entspricht in der Abbil-
ist eine Kombination aus Infrarotsender und -empfnger: der Sharp-Infrarotdistanz-
dung der gelben Leitung.
messer mit dem kurzen und leicht zu merkenden Namen GP2Y0A21YK0F. Dieser Sensor,
den Sie in Abbildung 7.19 sehen, enthlt eine Infrarotdiode (IR-Diode) und einen IR-
Empfnger. Die IR-Diode sendet Infrarotlicht aus, das von einem Objekt reflektiert und

GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
RESET

TX0
vom IR-Empfnger wieder eingelesen wird. In Abhngigkeit von der Entfernung des ICSP2
DIGITAL (PWM= )

Objekts gibt dieser Sensor an einem seiner Pins eine Spannung aus. Diese Spannung TX ON
TM
RX Arduino
knnen Sie mit dem Arduino einlesen. 1

ICSP
RESET
POWER ANALOG IN

IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5
Abbildung 7.19 Der Sharp-Infrarotdistanzmesser GP2Y0A21YK0F
Abbildung 7.20 Der Infrarotdistanzsensor, angeschlossen am Arduino19
Der Sensor ist denkbar einfach an einem Arduino-Board anzuschlieen, denn er hat
lediglich drei Leitungen an seinem Anschlusskabel:
Vorsicht, empfindliche Buchse am Sensor!
Farbe Belegung Beachten Sie, dass der weie 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
Rot +5 Volt kleinen Steg in der Mitte, der in die passende Fhrung des Sensors gesteckt werden
Schwarz Masse (GND) muss. Sollten Sie den Stecker falsch herum stecken und den Sensor anschlieen, wird
mindestens der Sensor dauerhaft Schaden nehmen!
Wei Signal

19 Abbildung erstellt mit Fritzing


Tabelle 7.1 Die Belegung des Sensor-Anschlusskabels

208 209
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Wie Sie sehen, handelt es sich um eine analoge Spannung, die alle Werte zwischen 0 bis
ungefhr 3,1 Volt annehmen kann. Daraus folgt das nchste Experiment mit dem
Arduino und einer neuen Funktion: das Einlesen einer analogen Spannung mit diesem
Befehl:

analogRead(pin);

Anzeigen der Entfernung auf dem Bildschirm


Laden Sie nun bitte das Programm IR_Distanz_SerialOut (siehe Listing 7.6) herunter,
Abbildung 7.21 Der Stecker des Sensors hat einen Steg in der Mitte.
und bertragen Sie es mit der aufgebauten Schaltung auf Ihr Arduino-Board:

int ledPin = 13; // Der bliche LED-Pin


Dieser Sharp-Sensor kann Distanzen zu einem Objekt in ca. 10 bis 80 cm Entfernung int IRpin = A0; // Der Pin fr den Infrarotsensorausgang
messen und gibt entsprechend zu den Entfernungen einen analogen Spannungswert
auf der weien Signalleitung aus. Beispielsweise: void setup()
{
ca. 2,3 Volt bei 10 cm Entfernung
pinMode(ledPin, OUTPUT); // LED-Pin ist ein Ausgang
ca. 1,0 Volt bei 29 cm Entfernung pinMode(IRpin, INPUT); // IR-Pin als Eingang definieren
ca. 0,4 Volt bei 80 cm Entfernung
// Serielle Ausgabe auf dem Bildschirm starten
In Abbildung 7.22 sehen Sie ein Diagramm aus dem Datenblatt des Sensors, das die Serial.begin(9600);
jeweilige Spannung in Abhngigkeit zur Entfernung eines Objekts vom Sensor zeigt. }

void loop()
{
3,5 // Sensor (Pin) einlesen
float spannungswert = analogRead(IRpin);
3,0

2,5
// umrechnen in cm
Spannung (in V)

float entfernung = (6787 / (spannungswert - 3)) - 4;


2,0
// Solange Distanz <= 80 cm
1,5 if (entfernung <= 80)
{
1,0
// Distanz ausgeben
Serial.print("Messwert: ");
0,5
Serial.print(spannungswert);
0,0 Serial.print(" / Entfernung: ");
0 10 20 30 40 50 60 70 80
Serial.print(entfernung);
Serial.print("cm");
Abstand zum reflektierenden Objekt (in cm)
}
else
Abbildung 7.22 Die Ausgangsspannung in Abhngigkeit zur Entfernung

210 211
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

{ Nach dem bertragen der Software aktivieren Sie den in Abschnitt 6.14.2 beschriebenen
Serial.print("> 80 cm"); Serial Monitor in der Arduino-Software ber die Menpunkte Tools Serial Monitor.
} Halten Sie nun die Hand vor den Sensor, und verndern Sie dabei die Entfernung. Die
Ausgabe auf dem Bildschirm zeigt die ungefhre Entfernung der Hand vom Sensor an.
Serial.println();
In Abbildung 7.23 sehen Sie ein Beispiel.
delay(500);
} Wenn Sie den Code einmal nher betrachten, werden Sie feststellen, dass die ganze
Listing 7.6 IR_Distanz_SerialOut.ino zum Anzeigen der Entfernung Magie auf zwei Zeilen beschrnkt ist. Erst wird die analoge Spannung vom Sensor am
Arduino-Pin mittels analogRead eingelesen und gleichzeitig in der Variable entfernung
gespeichert:

// Sensor (Pin) einlesen


float spannungswert = analogRead(IRpin);

Gleich danach wird der eingelesene Spannungswert in die Entfernung in Zentimeter


umgerechnet. Die spezielle Formel20 ist hier an den verwendeten Sensor angepasst. Bei
einem anderen Sensor mssten Sie hier eine Anpassung vornehmen:

// umrechnen in cm
float 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 fr 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);
Abbildung 7.23 Ausgabe der Entfernung auf dem Bildschirm
20 Siehe auch http://www.acroname.com/articles/linearizing-sharp-ranger.html

212 213
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Und wozu das Ganze?


// Umrechnen in cm Wie Sie sich bestimmt vorstellen knnen, sind die vorangegangenen Beispiele hilfreich,
float entfernung = (6787 / (spannungswert - 3)) - 4; wenn Sie spter den Infrarotsensor auf Ihrem Roboter einsetzen werden. Denn schlie-
lich soll der Roboter ja rechtzeitig vor einem Hindernis ausweichen und nicht dumm
// delay-Wert begrenzen
vor eine Wand fahren. Das bedeutet: Wenn in diesem Beispiel eine LED schnell sehr
if (entfernung > 80)
blinkt, ein Hindernis also sehr nah ist, werden Sie den Roboter in Abschnitt 9.2,
entfernung = 80;
Hindernisvermeidung, dazu bringen, nach links oder rechts auszuweichen.

if (entfernung < 10)


entfernung = 10; bung
Experimentieren Sie wieder etwas mit dem Code. ndern Sie das Programm IR_Dis-
// Entfernung fr delay umrechnen tanz_LED so, dass es die Helligkeit einer externen LED in Abhngigkeit von der Entfer-
int zeit = 0; nung der Hand zum Sensor ndert. Tipp: Schauen Sie sich dazu vielleicht noch einmal
zeit = map(entfernung, 10, 80, 100, 1000); Abschnitt 7.1.5 an. bung macht den Meister!22

// LED blinkt
digitalWrite(ledPin, HIGH); 7.2.5 Ultraschallsensoren
delay(zeit); Gegenber den in Abschnitt 7.2.4 vorgestellten Infrarotsensoren haben Ultraschallsen-
digitalWrite(ledPin, LOW); soren den Vorteil, dass sie gegen Sonnenlicht unempfindlich sind. Das heit, wenn Sie
delay(zeit);
Ihren Roboter einmal im Garten fahren lassen wollen, eignen sich Ultraschallsensoren
}
besser auch wenn diese drauen ebenfalls vor Nsse geschtzt werden mssen. Ein
Listing 7.7 Blinkende LED in Abhngigkeit zur Entfernung der Hand weiterer wesentlicher Vorteil ist die maximal messbare Entfernung: Die in Abbildung
7.24 gezeigten Sensoren SRF04/05 von Devantech knnen eine Entfernung bis sechs
Je nher Sie nun die Hand in Richtung Sensor bewegen, desto schneller blinkt die LED. Meter messen. Der Nachteil der Sensoren liegt in Ihrem Preis: Verglichen mit IR-Senso-
ren sind sie fast doppelt so teuer in der Anschaffung.
Hilfreich die Funktion map
Ein paar Worte zu der hier verwendeten map-Funktion: Diese ist uerst 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 Celsius misst, und Sie die Helligkeit einer LED von 0 bis 255 in
Abhngigkeit 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.21
Abbildung 7.24 Der Ultraschallsensor SRF04/05 von Devantech

21 http://arduino.cc/en/Reference/Map 22 Ich will Ihnen die Lsung nicht vorenthalten: Sie finden sie als Download mit dem Dateinamen
IR_Distanz_LED_Helligkeit.ino.

214 215
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Auch die Ansteuerung der Ultraschallsensoren ist komplexer: Dem Sensor muss erst ter nutzen, und ich zeige Ihnen in Abschnitt 7.4, Der Diener Ansteuerung von Ser-
ein Start-Impuls gegeben werden, damit er eine Messung startet. Danach antwortet er vos. bzw. Abschnitt 7.5, Ich muss hier weg! Ansteuerung von Motoren, wie das
mit einem Impuls, dessen Lnge der gemessenen Distanz entspricht. funktioniert.

7.2.6 Immer noch nicht genug? Arduino-Shields!


Das Arduino-Board wre sicher nicht so erfolgreich, wenn es zum einen nicht so einfach
zu programmieren und zum anderen nicht so leicht erweiterbar wre. Natrlich haben
sich die Entwickler etwas dabei gedacht, solche Buchsen auf die Oberseite zu montieren.
Denn sie ermglichen es nicht nur, ein paar Drhte oder Bauteile (wie Widerstnde)
mal eben schnell zu stecken. Sie ermglichen auch die Erweiterung des Arduino-
Boards durch sogenannte Arduino-Shields. Diese werden einfach huckepack auf den
Arduino gesteckt und sind ohne Lten oder Schrauben sofort einsatzbereit. Es gibt wirk-
lich unzhlige Shields und damit Erweiterungsmglichkeiten. 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 fr
sptere Projekte erhalten, suchen Sie im Internet nach Arduino Shield. Sie werden
zahlreiche Ergebnisse fr Inspirationen erhalten.

Abbildung 7.26 Das Arduino Wireless SD Shield23

Sie wollen eine SD-Karte fr Ihren Arduino nutzen, um dort zum Beispiel Daten zu pro-
tokollieren oder ihn mit einem XBee Funkmodul (siehe Abbildung 7.27) erweitern? Kein
Problem: Das Arduino Wireless SD Shield aus Abbildung 7.26 ist das Shield Ihrer Wahl.

Abbildung 7.25 Das Arduino Motor Shield


Abbildung 7.27 Spezielle XBee-Funkmodule zur Funkdatenbertragung24

Das Arduino Motor Shield aus Abbildung 7.25 dient zum leichten Anschluss und Betrieb
23 Bild: http://arduino.cc, CC BY-SA 3.0
von Motoren und Servos am Arduino-Board. Dieses Shield werden Sie auf Ihrem Robo- 24 Bild: Mark Fickett, CC BY-SA 3.0

216 217
7 Los gehts! Erste Praxis 7.2 Ist da jemand? Kontakt mit der Auenwelt

Wenn Sie Ihren Arduino Daten anzeigen lassen und ihn per Touchscreen steuern wol- Wenn Sie mal einen Roboter bauen wollen, der fast berall erreichbar ist, dann sollten
len, dann sollten Sie sich nher mit dem TFT Touch Shield aus Abbildung 7.28 beschf- Sie sich mit dem GSM Shield aus Abbildung 7.30 vertraut machen. Es enthlt alles, was
tigen. Sie zur Kommunikation ber das Handynetz bentigen. Wenn Sie sich spter noch
nher mit dem Thema GSM beschftigen wollen, sollten Sie sich auch das Adafruit FONA
einmal nher anschauen.27

Abbildung 7.28 Das TFT Touch Shield25

Verbinden Sie Ihr Arduino-Projekt doch spter einmal mit Ihrem heimischen Netzwerk
per WLAN mit dem WIFI Shield aus Abbildung 7.29. Sie knnten 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.

Abbildung 7.30 Arduino GSM Shield auf einem Arduino Uno28

Immer noch nicht genug? Dann entwickeln Sie doch Ihr eigenes Arduino-Shield. Mit
dem Arduino Proto Shield aus Abbildung 7.31 haben Sie Platz fr eigene Ltarbeiten oder
zur Entwicklung eines Prototyps fr Ihr eigenes Shield.

Abbildung 7.29 Das Arduino WIFI Shield26


27 http://www.adafruit.com/product/1963
25 Bild: http://www.adafruit.com/products/1651
28 Bild: http://arduino.cc, CC BY-SA 3.0
26 Bild: http://arduino.cc, CC BY-SA 3.0

218 219
7 Los gehts! Erste Praxis 7.3 Hrt mich jemand? Ausgabe von Signalen

Tnen ist fr Roboter in der Praxis sehr hilfreich. Denken Sie einmal an die Stromver-
sorgung Ihres spteren Roboters, der durch Akkus seine Energie erhlt. Es wre doch
sinnvoll, wenn der Roboter dann durch Tne signalisieren knnte, dass die Akkus bald
leer werden.

Auch wre es denkbar, dass Ihr Roboter spter laut piept, wenn er sich in eine ausweg-
lose Situation verfahren hat und vor lauter Hindernissen keinen Weg mehr aus einer
Ecke in Ihrer Wohnung findet. Schauen Sie sich also jetzt an, wie die Ausgabe von Tnen
funktioniert.

7.3.1 Der Piezosignalgeber


Das einfachste und gnstigste Bauteil, mit dem man dem Arduino ein paar Tne entlo-
cken kann, ist der sogenannte Piezosignalgeber, auch Piezoschallwandler, Summer, Buz-
zer oder kurz Piezo genannt. Der Begriff Piezo (altgriechisch drcken) rhrt daher,
dass bestimmte Kristalle bei Druck eine Spannung erzeugen, beim Anlegen einer Span-
nung sich aber auch verformen. Und genau Letzteres wird beim Piezosignalgeber
genutzt. Piezos kosten heutzutage unter einem Euro, und es gibt sie in verschiedensten
Abbildung 7.31 Das Arduino Proto Shield29 Ausfhrungen. Eine gngige, recht laute und sehr unempfindliche Bauform sehen Sie in
Abbildung 7.32.
7.2.7 Zwischenfazit
Wie Sie sehen, gibt es wirklich jede Menge Mglichkeiten, 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 knnen. Danach
habe ich Ihnen erlutert, was Prellen in diesem Zusammenhang bedeutet.

Anschlieend haben Sie einen Infrarotdistanzsensor ausgelesen und in Abhngigkeit


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 zahlrei-
chen Arduino-Shields.

7.3 Hrt mich jemand? Ausgabe von Signalen Abbildung 7.32 Ein Piezosignalgeber

In diesem Abschnitt zeige ich Ihnen, wie Sie mit dem Arduino-Board und nur einem Neben dem gnstigen Preis ist auch ein Vorteil, dass Piezosignalgeber ohne weitere
einzigen weiteren Bauteil Tne erzeugen knnen. Denn schlielich soll sich Ihr Robo- Bauteile direkt am Arduino-Board angeschlossen werden knnen. Tun Sie nun genau
ter spter bestimmt einmal bemerkbar machen knnen. Eine Signalisierung mittels das, und verbinden Sie bitte einen Piezo gem Abbildung 7.33 mit Ihrem Board. Sie
bentigen dazu:
29 Bild: http://arduino.cc, CC BY-SA 3.0

220 221
7 Los gehts! Erste Praxis 7.3 Hrt mich jemand? Ausgabe von Signalen

Wie funktioniert das?


Schauen Sie sich kurz den dazugehrigen Quellcode (Sourcecode) in Listing 7.8 an.

Checkliste // An Pin 5 ist der Piezo angeschlossen.


einen Piezo int piezo = 5;
zwei Jumper Wires
// Die On-board-LED.
das Arduino-Board
int led = 13;

void setup()
Laden Sie sich anschlieend das Programm Piezo_Pieps.ino herunter, und bertragen
{
Sie es auf das Arduino-Board.
// Die Pins zur Ausgabe festlegen.
pinMode(piezo, OUTPUT);
pinMode(led, OUTPUT);
}

void loop()
{
// LED zur Kontrolle einschalten.
digitalWrite(led, HIGH);

// Ton mit 1000 Hz fr 200 ms spielen.


playTone(1000, 200);
GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
TX0

RESET
DIGITAL (PWM= )
ICSP2
L
// LED ausschalten.
TX ON
RX Arduino
TM
digitalWrite(led, LOW);
1
ICSP

// Eine Sekunde warten.


delay(1000);
}
RESET

POWER ANALOG IN
IOREF

// Frequenz in Hertz (Hz)


GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5

// Dauer in Millisekunden (ms)


void playTone(float frequenz, long dauer)
{
Abbildung 7.33 Piezosignalgeber am Arduino-Board30 // Dauer umrechnen in Sekunden
dauer *= 1000;
Sie sollten nun im Abstand von einer Sekunde einen Ton von ca. 0,2 Sekunden Dauer
// Umrechnen von Frequenz in Periodendauer31
(200 ms) hren. Zustzlich geht die orange LED auf dem Arduino-Board an, whrend der
float periode = (1.0 / frequenz) * 1000000;
Piezo piept.
long laufzeit = 0;

30 Abbildung erstellt mit Fritzing 31 http://www.elektrotechnik-fachwissen.de/wechselstrom/periodendauer-frequenz.php

222 223
7 Los gehts! Erste Praxis 7.3 Hrt mich jemand? Ausgabe von Signalen

while (laufzeit < dauer) hilft ein Blick in das Datenblatt des Piezos, das Sie meist auf den Internetseiten des Bau-
{ teilherstellers oder in Online-Shops gngiger Elektronikfachhndler finden.
digitalWrite(piezo,HIGH);
delayMicroseconds(periode * 0.5);
7.3.2 Melodien programmieren
digitalWrite(piezo, LOW);
Sie knnen mit Ihrem Arduino-Board und der Funktion playTone auch richtige Noten
delayMicroseconds(periode * 0.5);
spielen. Sie mssen nur die passenden Frequenzen und damit die Tonhhen kennen.
laufzeit += periode; Auch hier hilft das Internet weiter und ermglicht Ihnen zum Beispiel unter der Seite
} http://rechneronline.de/note/, auf einer Klaviatur fr jede Taste die entsprechende Fre-
} quenz anzuzeigen. Die Tne einer Oktave habe ich Ihnen in Tabelle 7.2 aufgefhrt.

Listing 7.8 Das Programm Piezo_Pieps erzeugt jede Sekunde einen Ton.
Ton-Nr. Note Frequenz in Hertz

Wie Sie sehen, enthalten sowohl die setup-Funktion als auch die loop-Funktion nur sehr 28 c 130,813
wenige Anweisungen. Entscheidend fr die Tonausgabe ist die Anweisung play-
30 d 146,832
Tone(1000, 200). Sie lsst den Piezo einen Ton von 1000 Hz fr eine Dauer von 200 ms
erzeugen. Es gibt zwar eine hnliche Arduino-Funktion namens tone32, aber um zu zei- 32 e 164,814
gen, wie das Prinzip der Piezo-Ansteuerung funktioniert, habe ich in Listing 7.8 eine
33 f 174,614
eigene Umsetzung verwendet. Bestimmt haben Sie schon erkannt, dass der Piezo in der
Funktion playTone durch einen simplen regelmigen Wechsel zwischen HIGH und 35 g 195,998
LOW zum Piepen gebracht wird:
37 a 220,000
digitalWrite(piezo,HIGH);
39 h 246,942
delayMicroseconds(periode * 0.5);
40 c 261,626
digitalWrite(piezo, LOW);
delayMicroseconds(periode * 0.5); Tabelle 7.2 Beispielnoten und ihre Frequenz (Tonhhe)

Die restlichen Zeilen der Funktion playTone dienen lediglich dazu, den Ton in der Stellen Sie sich vor, Ihr Roboter fhrt eines Tages durch die Wohnung und spielt beim
gewnschten Frequenz (Tonhhe) und Lnge abzuspielen. Um den Ton zu stoppen, Auftreffen auf ein Hindernis Zum Geburtstag viel Glck. Lassen Sie Ihrer Fantasie
setzen Sie einfach den Piezo-Pin auf LOW: freien Lauf, und bringen Sie Ihren Arduino dazu, eine Melodie zu spielen. Zu langweilig?
Im folgenden Abschnitt 7.3.3 zeige ich Ihnen, wie Sie mit dem Infrarotsensor und dem
digitalWrite(piezo, LOW); Piezo eine Art Musikinstrument nachbauen.

Ausprobieren!
7.3.3 Ein Musikinstrument
Experimentieren Sie auch hier wieder mit verschiedenen Werten im Aufruf der Funk-
tion playTone. ndern Sie die Tondauer, ndern Sie die Tonhhe. Sie werden merken, Jetzt zeige ich Ihnen, wie Sie ein sehr spezielles Musikinstrument nachahmen knnen:
dass Ihr Piezo nicht bei allen Werten (Frequenzen) einen Ton von sich gibt. Es hngt das Theremin33. Vielleicht kennen Sie den Film Mars Attacks!34 von Tim Burton. In die-
immer vom jeweiligen Bauteil ab, mit welchen Frequenzen es funktioniert. Auch hier
33 http://de.wikipedia.org/wiki/Theremin
34 http://de.wikipedia.org/wiki/Mars_Attacks!
32 http://arduino.cc/de/Reference/Tone

224 225
7 Los gehts! Erste Praxis 7.3 Hrt mich jemand? Ausgabe von Signalen

sem Film wird der Klang des Theremins als schaurige, fast nervige Musikuntermalung Laden Sie anschlieend das Programm Musikinstrument.ino (siehe Listing 7.9) herunter,
genutzt. Es ist auerdem das einzige weit verbreitete Musikinstrument, das berh- und bertragen Sie es auf Ihren Arduino. Wenn alles geklappt hat, sollten Sie aus dem
rungslos gespielt wird. Berhrungslos? Das knnen Sie auch! Nehmen Sie dazu den Piezo in kurzen Abstnden einen tiefen Ton hren.
Versuchsaufbau aus der Abbildung 7.33 zur Hand, und erweitern Sie ihn um den
Bewegen Sie nun Ihre Hand vor den Infrarotsensor, und verndern Sie den Abstand zu
Infrarotdistanzsensor aus Abschnitt 7.2.4. Sie bentigen die folgenden Teile:
ihm mal nher, mal weiter weg. Je nher die Hand dem Sensor kommt, umso hher
wird der Piepton aus dem Piezoschallwandler.

int ledPin = 13; // Der bliche LED-Pin


Checkliste int IRpin = A0; // Der Pin fr den Infrarotsensor
einen Piezo int piezo = 5; // An Pin 5 ist der Piezo angeschlossen.
zwei Jumper Wires
void setup()
einen Infrarotdistanzsensor
{
das Arduino-Board
pinMode(ledPin, OUTPUT); // LED-Pin als Ausgang definieren
pinMode(IRpin, INPUT); // IR-Pin als Eingang definieren
Das Ganze sollte aufgebaut so wie in Abbildung 7.34 aussehen. pinMode(piezo, OUTPUT); // Piezo-Pin als Ausgang
}

void loop()
{
// Sensor (Pin) einlesen
float spannungswert = analogRead(IRpin);

// Umrechnen in cm
float entfernung = (6787 / (spannungswert - 3)) - 4;
GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
TX0

RESET
DIGITAL (PWM= )
ICSP2
L

TX
RX Arduino
TM
ON
// Den delay-Wert begrenzen
1

if (entfernung > 80)


ICSP

entfernung = 80;
if (entfernung < 10)
entfernung = 10;
RESET

POWER
IOREF

ANALOG IN
GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5

// Entfernung auf Tonhhe mappen


int tonhoehe = 0;
tonhoehe = map(entfernung, 10, 80, 1000, 100);

// LED an
Abbildung 7.34 Der Arduino als Theremin35
digitalWrite(ledPin, HIGH);

35 Abbildung erstellt mit Fritzing

226 227
7 Los gehts! Erste Praxis 7.3 Hrt mich jemand? Ausgabe von Signalen

// Spiele Ton mit "tonhoehe" Hz fr 100 ms ab. // Entfernung auf Tonhhe mappen
playTone(tonhoehe, 100); int tonhoehe = 0;
tonhoehe = map(entfernung, 10, 80, 1000, 100);
// LED aus
digitalWrite(ledPin, LOW); Genauer gesagt: Die gemessene Entfernung wird von 10 cm bis 80 cm auf Tonhhen
von 1000 Hz bis 100 Hz gemappt (abgebildet).
// 0,05 Sekunden Pause zwischen den Tnen
delay(50); bung 1
}
Verndern Sie den Code so, dass der Ton tiefer wird, je nher Sie die Hand zum Sensor
bewegen, bzw. hher, je weiter Sie sie entfernen.
// Frequenz in Hertz (Hz)
// Dauer in Millisekunden (ms)
void playTone(int frequenz, long dauer) bung 2
{ Verndern Sie den Code so, dass bei nderung des Sensorabstands nicht die Tonhhe,
dauer *= 1000; sondern die Geschwindigkeit des Piepsens verndert wird je nher Sie die Hand zum
float periode = (1.0 / frequenz) * 1000000; Sensor bewegen, desto schneller soll es piepsen.
long laufzeit = 0;
bung 3
while (laufzeit < dauer)
Verndern Sie den Code so, dass bei nderung des Sensorabstands nicht die Tonhhe,
{
sondern die Dauer des Tons verndert wird (Tonlnge).
digitalWrite(piezo,HIGH);
delayMicroseconds(periode * 0.5);
Verloren? Nichts funktioniert mehr?
digitalWrite(piezo, LOW); Das passiert jedem einmal. Wenn Ihr Programm nach vielen nderungen gar nicht
delayMicroseconds(periode * 0.5); mehr funktioniert, laden Sie sich einfach den Originalcode Musikinstrument.ino erneut
herunter, bertragen ihn auf Ihr Board und starten das Experiment von vorn.
laufzeit += periode;
Und wenn Sie sich die fertigen Lsungen anschauen wollen, finden Sie die Dateien
}
Musikinstrument_Uebung1.ino, Musikinstrument_Uebung2.ino und Musikinstrument_
}
Uebung3.ino wie immer auch als Download.
Listing 7.9 Das Programm Musikinstrument.ino

7.3.4 Zwischenfazit
Wie funktioniert das?
Ein weiterer Abschnitt ist erfolgreich durchgearbeitet. Sie haben den Piezo kennenge-
Die Funktionsweise des Programms ist sehr simpel. Bestimmt erinnern Sie sich an die
lernt und erfahren, wie Sie ihm Tne entlocken knnen. Ich hoffe, Sie hatten danach
unterschiedlich schnell blinkende LED in Verbindung mit dem IR-Sensor aus Abschnitt
auch Spa als Musiker mit dem Musikinstrument im Experiment mit dem Infrarot-
7.2.4. Das gleiche Prinzip wird auch hier genutzt, indem in der Hauptschleife loop als
sensor und dem Piezo. Zum Schluss haben Sie in bungen den vorhandenen Code so
Erstes der Sensor per analogRead(IRpin) ausgelesen und dann der gelesene Spannungs-
verndert, dass sich die Tonhhe oder die Tondauer vernderten.
wert in eine Entfernung (cm) umgerechnet wird. ber den bekannten Befehl map erfolgt
danach eine Umrechnung der Entfernung in Hertz (Hz), also in die Tonhhe:

228 229
7 Los gehts! Erste Praxis 7.4 Der Diener Ansteuerung von Servos

7.4 Der Diener Ansteuerung von Servos dert. Er ist innerhalb des Servos kaum erkennbar mit dem Motor verbunden und sorgt
dafr, dass die Elektronik durch stndiges Messen des Potiwiderstandes erkennt, in wel-
In diesem Abschnitt kommt nun erste Bewegung in die ganze Sache, denn es geht um cher Position sich der Servoarm gerade befindet. Und nicht nur das: Durch die stndige
den ersten Aktor (siehe Abschnitt 2.2.3) an Ihrem spteren Arduino-Roboter: den Servo. Kontrolle des Widerstandes regelt die Elektronik auch fortwhrend die Position nach,
wenn sich die Position des Zahnrades am Ausgang verndert hat.
7.4.1 Was sind Servos und wie funktionieren sie?
Der Begriff Servo leitet sich von dem lateinischen Wort servus ab, das Diener oder
Sklave bedeutet.36 Das trifft es ganz gut, denn ein Servo macht, was Sie wollen, bzw.
bewegt sich so, wie Sie es wollen. Im Modellbau oder auch in der Robotik besteht ein
Servo aus einem Motor, verbunden mit einer speziellen Elektronik zum Ansteuern, und
einem Getriebe. In Abbildung 7.35 sehen Sie einen Servo.

Abbildung 7.36 Verschiedene Servoarme mit Zubehr

Vorsicht, sensibel!
Servos sind empfindliche Bauteile. Die gnstigen Servos haben Getriebe aus Kunststoff,
die keine allzu groe Belastung aushalten. Leider sind einfache Modellbauservos auch
Abbildung 7.35 Ein transparenter Miniservo mit sichtbarem Innenleben
nicht in der Lage, festzustellen, ob sie berlastet sind. Eine berlastung tritt zum Bei-
spiel auf, wenn ein Servo seinen Arm in eine Position drehen soll, die durch ein Hinder-
Auf der Oberseite des Servos ist eine geriffelte Welle, auf der in der Regel ein sogenannter nis blockiert ist. Das kann schnell zur berlastung der Servoelektronik oder zur
Servo-Arm montiert wird. Dieser Arm dient dazu, den durch den Servo zu bewegenden Zerstrung des Getriebes fhren. Gehen Sie also vorsichtig mit den kleinen Helfern um!
Gegenstand leichter mit der Servowelle zu verbinden. Der Arm kann in einem Halbkreis
von 180 bewegt werden im Prinzip wie ein Scheibenwischer im Auto. Im Modellbau
In Abbildung 7.35 lsst sich ganz gut das Innenleben des Servos erkennen. Auf der einen
bettigt ein Servo zum Beispiel bei einem ferngesteuerten Auto den Gashebel oder des-
Seite ist der Motor zu sehen, darber befinden sich einige Zahnrder als Getriebe. Dieses
sen Lenkung. In Abbildung 7.36 sind verschiedene Servoarme mit Zubehr dargestellt.
Getriebe sorgt dafr, dass der in der Regel recht schwache Motor am Ende verhltnism-
Neben der Mechanik enthlt ein Servo einen speziellen Widerstand namens Potenzio- ig viel Kraft anwenden kann. Servos gibt es bereits fr wenige Euro zu kaufen. Aber
meter (kurz Poti, von der alten Schreibweise Potentiometer). Es ist das gleiche Bauteil, auch hier sind nach oben keine Grenzen gesetzt: Extrem starke Servos kosten schnell
das in den meisten etwas lteren Radios als Lautstrkedrehknopf verbaut ist. Das Poti mehrere Hundert Euro! Aber keine Angst: Fr Ihren Roboter reicht ein kleiner, gnsti-
ist ein Widerstand, dessen ohmscher Wert sich beim Drehen von klein nach gro vern- ger Servo. Aber dazu spter mehr. Erst einmal mchte ich Ihnen in Abschnitt 7.4.2 zei-
gen, wie Sie einen Servo ansteuern.
36 siehe auch http://de.wikipedia.org/wiki/Servo

230 231
7 Los gehts! Erste Praxis 7.4 Der Diener Ansteuerung von Servos

7.4.2 Wie werden Servos angesteuert? Pulsdauer Servoarmposition


Servos haben in der Regel einen Stecker mit drei Kontakten und den dazugehrigen
ca. 1,5 ms Arm in der Mitte 2
farbigen Leitungen. Leider sind die Farben je nach Servohersteller unterschiedlich. Die
Belegung ist blicherweise wie folgt: ca. 2,0 ms Arm ganz rechts 3

Leitungsfarbe Belegung Tabelle 7.4 Die ungefhre Pulsdauer im Verhltnis zur Servoarmposition (Forts.)

Schwarz oder Braun GND

Orange oder Wei Signal

Rot +5 Volt

Tabelle 7.3 Servoleitungen und ihre Belegung

Um einen Servo in eine bestimmte Position zu bewegen, wird ein pulsweitenmodulier-


tes Signal bentigt. Pulsweitenmoduliert? Richtig: Die gute alte PWM, die Sie bereits in
Abschnitt 7.1.5 kennengelernt haben. Wie muss dieses PWM-Signal nun fr Servos aus-
sehen? Schauen Sie sich dazu einmal das Diagramm in Abbildung 7.37 genauer an,
bevor ich es Ihnen erlutere.
Abbildung 7.38 Die Pulsdauer bestimmt die Servoarmposition
U/V
Pulsdauer zwischen 1-2 ms

5 Gut zu wissen!

t/ms
Leider baut jeder Hersteller seine Servos mit unterschiedlicher Genauigkeit. Das bedeu-
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 tet, dass einige Servos bei einem Puls von 2,0 ms Lnge den Arm nach ganz rechts fah-
ren und andere stattdessen nach ganz links. Auch die Dauer von 1,0 ms bis 2,0 ms sind
Periodendauer 20 ms
nur ungefhre Werte und variieren ein klein wenig: Es knnen also zum Beispiel statt
1,0 ms auch mal 0,9 ms sein.
Abbildung 7.37 Solche PWM-Signale bentigt ein Servo zur Ansteuerung.

Wie dort dargestellt, muss innerhalb einer Gesamtdauer von 20 Millisekunden (Perio- Servoansteuerung fix und fertig
dendauer) jeweils ein kurzer Puls mit einer Dauer zwischen einer und zwei Millisekun-
Alles zu komplizierte Theorie? Nun, Sie sollen ja hier auch ein bisschen was lernen. Aber
den gesendet werden. Aber wie wei der Servo nun, wie weit er seinen Arm in welche
erneut haben es Ihnen die Arduino-Entwickler leicht gemacht und ganze Arbeit geleis-
Richtung drehen soll? Ganz einfach: Die Pulsdauer bestimmt die Position.
tet: Es gibt nicht nur eine fertige Bibliothek mit einfachen Befehlen, sondern auch gleich
ein fix und fertiges Beispiel innerhalb der Arduino-Software. Um dieses Beispiel zu ff-
Pulsdauer Servoarmposition
nen, whlen Sie in der Arduino-Software aus dem Men die Punkte Datei Beispiele
ca. 1,0 ms Arm ganz links 1 Servo Sweep, wie in Abbildung 7.39 dargestellt.

Tabelle 7.4 Die ungefhre Pulsdauer im Verhltnis zur Servoarmposition

232 233
7 Los gehts! Erste Praxis 7.4 Der Diener Ansteuerung von Servos

void setup()
{
pinMode(9, OUTPUT); // Pin 9 als Ausgang definieren
servo1.attach(9); // Vebindet Pin 9 mit dem Servoobjekt
}

void loop()
{
int pos = 0; // Variable zur Speicherung der Position

for (pos = 0; pos <= 180; pos++) // Geht von 0 bis 180 Grad
{ // in Schritten von einem Grad.
servo1.write(pos); // Bewege Servo zu Position "pos".
delay(15); // Warte 15 ms, bis Position erreicht.
}

for (pos = 180; pos >= 0; pos--) // Geht von 180 bis 0 Grad
{
servo1.write(pos); // Bewege Servo zu Position "pos".
delay(15); // Warte 15 ms, bis Position erreicht.
}
}

Listing 7.10 Das Programm Servo_Radar.ino zur Servoansteuerung

Entscheidend sind in diesem Programm lediglich drei Zeilen. Als Erstes wird die Biblio-
thek Servo eingebunden, damit die Servobefehle im Programm zur Verfgung stehen.
Dies geschieht durch die Anweisung #include:

Abbildung 7.39 Das Beispielprogramm Sweep zur Servoansteuerung #include <Servo.h>

Automatisch ffnet die Software ein vollstndiges Beispielprogramm. In Listing 7.10 Danach wird ein Servoobjekt mit dem Namen servo1 erstellt:
finden Sie den kompletten Code von Sweep noch einmal auf Deutsch (Programm zum
Download: Servo_Radar.ino). Servo servo1;

#include <Servo.h> Zustzlich wird dem Servoobjekt die Information gegeben, an welchem Pin des
Arduino-Boards die Servosteuerleitung angeschlossen ist (PWM-Signal):
Servo servo1; // Erstellt ein Servoobjekt zur Steuerung
// Maximal 8 Servos knnen angesteuert werden. servo1.attach(9);

234 235
7 Los gehts! Erste Praxis 7.4 Der Diener Ansteuerung von Servos

Im weiteren Verlauf wird der Servo mit folgendem Aufruf bewegt:

servo1.write(pos);

Die Variable pos erhlt hier brigens einen Wert von 0 bis 180. Sie brauchen also nicht
umstndlich PWM-Signale im Millisekundenbereich zu erzeugen, das wird alles fr Sie
versteckt und im Hintergrund durchgefhrt. Und die 0 bis 180 entsprechen natrlich
der Gradzahl des Winkels des Servoarms (0 = ganz links, 90 = Mitte, 180 = ganz rechts).

Der Servo und seine Stromversorgung


Noch ein paar Worte zum Aufbau der Testschaltung mit Ihrem Servo, denn sicher wol-
len Sie endlich das Erlernte sofort ausprobieren. Wie Sie in Abschnitt 4.2.1 erfahren
haben, kann ein Pin des Arduino nur einen geringen Strom liefern. Aber auch die 5V-

GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RX0
TX0
RESET
DIGITAL (PWM= )

Pins des Arduino-Boards knnen nur begrenzt Strom liefern (wenngleich der Strom fr ICSP2
L

einen kleinen Servo durchaus ausreichen wrde). Zustzlich erzeugen Servos aber hu- TX
RX Arduino
TM
ON

fig kleine Strungen auf den Spannungsleitungen, die den Arduino sogar zum Abstr-

ICSP
zen bringen knnten. Ein Servo sollte daher immer eine eigene Stromversorgung
bekommen!

RESET
POWER ANALOG IN

IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5
Zwei Spannungsversorgungen eine Masse!
Wenn Sie zwei Spannungsversorgungen nutzen, mssen diese einen gemeinsamen
Bezugspunkt fr ihre Spannungen haben. Und das ist immer die Masseleitung (GND).
Abbildung 7.40 Anschluss eines Servos mit eigener Spannungsversorgung38
Wenn Sie also mit einem Netzteil oder dem USB-Port Ihr Arduino-Board mit Strom ver-
sorgen und mit einer anderen Stromquelle den Servo betreiben, dann mssen Sie beide
Los gehts. Folgende Teile werden bentigt:
GND-Leitungen miteinander verbinden. Ansonsten wird Ihr Servo nicht reagieren oder
Unvorhersehbares machen!

Checkliste
Aufbau der Servoschaltung
ein Batteriehalter mit Batterien/Akkus oder ein Netzteil
Einfache Servos sind, was ihre Stromversorgung angeht, recht gengsame Bauteile. Sie
ein Servo
arbeiten in der Regel auch noch mit Spannungen von 4 Volt oder 6 Volt. Darunter oder
darber sollten Sie aber nicht gehen. Wenn Sie also ein Netzteil zur Hand haben, nutzen das Arduino-Board

Sie dieses fr die GND- und 5-Volt-Leitung des Servos. Alternativ verwenden Sie vier 1,5-
Volt-Batterien oder -Akkus37 in einem passenden Halter (siehe Abbildung 7.40). Bauen Sie jetzt die Schaltung wie in Abbildung 7.40 auf. Laden Sie anschlieend das Pro-
gramm Servo_Radar.ino herunter, und bertragen Sie es auf Ihren Arduino. Der Ser-
voarm sollte sich daraufhin unentwegt von links nach rechts bewegen. Denken Sie

37 Der Umwelt zuliebe sollten Sie generell nur aufladbare Akkus anstatt Batterien verwenden. 38 Abbildung erstellt mit Fritzing

236 237
7 Los gehts! Erste Praxis 7.5 Ich muss hier weg! Ansteuerung von Motoren

daran, auch die Stromversorgung fr den Servo zu verbinden bzw. einzuschalten, sonst Zwischenfazit
passiert wahrscheinlich gar nichts! Geschafft. In diesem Abschnitt haben Sie Servos kennengelernt und erfahren, wie diese
funktionieren. Danach haben Sie erfolgreich einen Servo angesteuert und sind dadurch
Ein Radar oder: Die Stuhlbeinproblematik erneut der PWM begegnet. Warum eine extra Stromversorgung fr Servos sinnvoll ist,
Vielleicht haben Sie sich bereits gefragt, warum der Name des Programms Servo_ habe ich Ihnen ebenfalls vermittelt. Zum Schluss haben Sie gelesen, was es mit der selt-
Radar.ino lautet. Der Grund ist, dass Ihr Roboter spter den Servo wie ein Radargert sam benannten, aber wichtigen Stuhlbeinproblematik auf sich hat und wie Sie Ihren
bewegen wird, weil Sie auf dem Servoarm den Infrarotsensor montieren werden, den Roboter durch eine Art Radar bald sicher durchs Leben bringen knnen.
ich in Abschnitt 7.2.4 beschrieben habe. Der Sensor bewegt sich also hnlich einem
Radar auf einem Flughafentower hin und her und sieht dabei nach links und rechts.
Wrden wir den Sensor fest montieren und ihn nur genau geradeaus sehen lassen, 7.5 Ich muss hier weg! Ansteuerung von Motoren
knnte es in der Praxis passieren, dass Ihr Roboter mit seinem Tunnelblick an einem
In diesem Abschnitt gehen wir noch einen Schritt weiter: Nachdem Sie in Abschnitt 7.4,
dnnen Stuhlbein knapp vorbeisieht und mit einem berstehenden Rad genau dage-
Der Diener Ansteuerung von Servos, gelernt haben, wie ein Servo angesteuert wird,
genfhrt. In Abbildung 7.41 habe ich Ihnen diese Stuhlbeinproblematik dargestellt.
erfahren Sie jetzt, wie Motoren angesteuert werden. Schlielich wollen Sie Ihren Robo-
ter doch mal durch die Gegend fahren lassen knnen, oder? Also, weiter gehts im Text!

7.5.1 Arten von Motoren


Stuhl- Es gibt viele Arten von Motoren, die elektrisch angetrieben werden: Wechselstrommo-
bein
toren, Gleichstrommotoren, Motoren mit Brsten, brstenlose Motoren, Schrittmoto-
Stuhl- ren usw. In der Robotik werden meistens zwei Arten von Motoren verwendet:
bein
Schrittmotoren und Gleichstrommotoren (mit Brsten). Auf eine ausfhrliche
Beschreibung der verschiedenen Motorarten und die Frage, was es mit den ominsen
Brsten auf sich hat, verzichte ich an dieser Stelle. Das ist fr die Verwendung auf Ihrem
Arduino-Roboter nicht weiter wichtig. Eine ausgiebige Aufzhlung verschiedener Moto-
0 RX0 A5 ren finden Sie in der Wikipedia.39
ANALOG IN

0 RX0 A5
ON
ANALOG IN
ON

ICSP
1

ICSP 1 TX0 A4
1

1 TX0 A4

2 2 A3
A3
)
)

3 A2
(PWM=

3 A2
(PWM=

4 4 A1
A1

5 5 A0
A0
DIGITAL
DIGITAL

6 6
POWER
POWER

7 VIN
7 VIN

GND GND
8
TM

8
TM

GND
Arduino

GND
Arduino

9 9
5V 5V
10 10
3V3 3V3

Gleichstrommotoren
11 11
RESET RESET
12 12
IOREF IOREF
13 13

GND GND
RX
L

TX
RX
L

TX

AREF AREF
ICSP2
ICSP2

Wenn Sie die Anschlsse eines normalen Gleichstrommotors mit Plus und Minus einer
RESET
RESET

Stromquelle verbinden, dreht sich die Motorwelle so lange, wie Strom fliet.

Probieren Sie es doch mal aus: Nehmen Sie einen Motor wie den aus Abbildung 7.42,
Abbildung 7.41 Die Vermeidung der Stuhlbeinproblematik und schlieen Sie ihn an ein Netzteil oder eine Batterie an. Wichtig ist hierbei, dass Sie
die maximal zulssige Spannung des Motors nicht berschreiten! Diese ist je nach
Links in Abbildung 7.41 sieht der Roboter das Stuhlbein nicht und fhrt geradeaus Motortyp unterschiedlich. Auch hier gilt wieder einmal: Schauen Sie nach, was das
gegen das Stuhlbein (roter Pfeil). Rechts hat sich der Sensor auf dem Servo gerade nach Datenblatt zu dem Motor angibt oder welche Spannung der Lieferant angegeben hat.
links gedreht, der Roboter erkennt das Stuhlbein und weicht daraufhin in Richtung des
grnen Pfeils aus. Erkennen Sie den Vorteil dieser Konstruktion fr unseren kleinen
Freund? 39 http://de.wikipedia.org/wiki/Kategorie:Elektromotor

238 239
Auf einen Blick

Auf einen Blick

1 Dont panic! Einleitung .......................................................................................... 15

2 Wir sind die Roboter ................................................................................................... 21

3 Arten der Programmierung ...................................................................................... 45

4 Die Arduino-Plattform ............................................................................................... 53

5 Die kleine Werkstatt ................................................................................................... 97

6 Programmiergrundlagen ......................................................................................... 131

7 Los gehts! Erste Praxis ........................................................................................... 179

8 Keine Schraube locker Die Montage des eigenen Roboters ...................... 263

9 Drive me crazy? Die erste Fahrstunde ............................................................... 333

10 Pimp My Robot! Mgliche Erweiterungen ...................................................... 357

11 Der Roboter und der Rest der Welt ........................................................................ 397

12 Schlusswort ................................................................................................................... 401


Inhalt

Inhalt
Geleitwort des Fachgutachters ........................................................................................................... 13

1 Dont panic! Einleitung 15

1.1 Fr wen ist dieses Buch geeignet? ................................................................................... 15


1.1.1 Programmierkenntnisse? .................................................................................... 16
1.1.2 Altersklassen ........................................................................................................... 16
1.1.3 Handwerkliches Geschick und Elektronikwissen? ...................................... 16
1.2 Wie sollte das Buch gelesen werden? ............................................................................ 17
1.3 Das Roboterkit zum Buch ..................................................................................................... 17
1.3.1 Welche Teile bentige ich zum Bau des Roboters? .................................... 17
1.3.2 Sonstige elektronische Bauteile ....................................................................... 18
1.4 Die Webseite zum Buch ........................................................................................................ 18
1.5 Robotiklabor Der Podcast rund um Robotikthemen ........................................... 18
1.6 Danksagung ............................................................................................................................... 18

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 dreirdrige Roboter .......................................................................... 24
2.1.4 Vierrdrige Roboter ............................................................................................... 27
2.1.5 Sechsrdrige Roboter ........................................................................................... 28
2.1.6 Roboter mit Raupenantrieb ............................................................................... 29
2.1.7 Schlangenroboter .................................................................................................. 30
2.1.8 Tauchroboter .......................................................................................................... 31
2.1.9 Fazit ............................................................................................................................ 33
2.1.10 App-Empfehlung .................................................................................................... 33
2.2 Woraus besteht ein Roboter? ............................................................................................ 34
2.2.1 Grundstzliches ..................................................................................................... 34

5
Inhalt Inhalt

2.2.2 Sensoren ................................................................................................................... 34


5

2.2.3 Aktoren ...................................................................................................................... 35


5 Die kleine Werkstatt 97

2.3 Wie und womit denkt ein Roboter? ........................................................................... 37 5.1 Fliegende Verdrahtung ......................................................................................................... 97
5.1.1 Vor- und Nachteile der fliegenden Verdrahtung ........................................ 98
2.4 Mikrocontroller allgemein .................................................................................................. 37
2.4.1 Alternativen zum Arduino-Board ..................................................................... 38 5.2 Steckplatinen ............................................................................................................................ 99
5.2.1 Vor- und Nachteile der Steckplatinen ............................................................ 102
2.5 Fazit ............................................................................................................................................... 43
5.3 Werkzeuge ................................................................................................................................. 102
5.3.1 Sicherheitsbrille ..................................................................................................... 102
3
5.3.2 Seitenschneider ..................................................................................................... 103
3 Arten der Programmierung 45 5.3.3 Abisolierzange ........................................................................................................ 104
5.3.4 Ltkolben/Ltstation, Ltzinn und Schwamm ............................................ 105
3.1 Grafische Programmierung ................................................................................................. 45
5.3.5 Messgert (optional) ............................................................................................ 108
3.1.1 Grafische Programmierung mit Scratch ................................................... 46
5.3.6 Feuerzeug ................................................................................................................. 109
3.2 Textbasierte Programmierung .......................................................................................... 49 5.3.7 Schlitzschraubendreher, 2 bis 3 mm breit .................................................... 110
5.3.8 Sonstige Werkzeuge (optional) ........................................................................ 110

4
5.4 Kabel verbinden oder isolieren ......................................................................................... 113
4 Die Arduino-Plattform 53 5.4.1 Kabel verbinden ..................................................................................................... 113

4.1 Was ist Arduino? ...................................................................................................................... 53 5.5 Platinen ........................................................................................................................................ 115


4.1.1 Die Arduino-Projektwebseite ............................................................................ 53 5.6 Lten ............................................................................................................................................. 118
5.6.1 Was wird bentigt? .............................................................................................. 118
4.2 Die Arduino-Hardware .......................................................................................................... 54
5.6.2 Wie geht es? ............................................................................................................ 119
4.2.1 Das Arduino-Board fr den Roboter ................................................................ 54
5.6.3 Was sind kalte Ltstellen? .................................................................................. 129
4.2.2 Die Ein- und Ausgnge des Arduino-Boards im Detail .............................. 60
4.2.3 Verschiedene Arduino-Boards ........................................................................... 64 5.7 Fazit ............................................................................................................................................... 129
4.2.4 Die Einzelteile fr Ihren Roboter bzw. das Roboterkit .............................. 70
4.2.5 Treiberinstallation ................................................................................................. 78
6

4.3 Die Arduino-Software ............................................................................................................ 78 6 Programmiergrundlagen 131


4.3.1 Download und Installation ................................................................................ 78
4.3.2 Start ............................................................................................................................ 90 6.1 Stil .................................................................................................................................................. 131
6.1.1 Einrckung ............................................................................................................... 133
4.4 Die Entwicklungsumgebung .............................................................................................. 91
6.1.2 Eindeutigkeit/Sinnhaftigkeit ............................................................................. 133
4.5 Die Software im Detail .......................................................................................................... 92 6.1.3 Gro-/Kleinschreibung und Unterstriche ..................................................... 134
4.5.1 ndern der Sprache .............................................................................................. 92 6.1.4 Muttersprache oder Englisch? .......................................................................... 134
4.6 Die grafische Oberflche im Detail .................................................................................. 92 6.1.5 Kommentieren und dokumentieren ............................................................... 135
4.6.1 Beispiele innerhalb der Software ..................................................................... 94 6.1.6 Einheitlichkeit Bleiben Sie Ihrem Stil treu! ................................................ 135
6.1.7 Zusammenfassung ............................................................................................... 135
4.7 Fazit ............................................................................................................................................... 95
6.2 Kommentare ............................................................................................................................. 136

6 7
Inhalt Inhalt

6.3 Variablen ..................................................................................................................................... 137


7

7 Los gehts! Erste Praxis 179


6.3.1 Das Semikolon ........................................................................................................ 137
6.3.2 Das Leerzeichen ...................................................................................................... 137 7.1 Der erste Kontakt mit der Hardware .............................................................................. 179
6.3.3 Deklaration .............................................................................................................. 137 7.1.1 Blinky Ansteuerung einer LED ................................................................... 179
6.3.4 Datentypen .............................................................................................................. 137 7.1.2 bertragen der Software auf das Arduino-Board ...................................... 183
6.4 Konstanten ................................................................................................................................. 142 7.1.3 Fehlersuche ............................................................................................................ 187
6.4.1 Vordefinierte Konstanten ................................................................................... 143 7.1.4 Herr Ohm und sein Gesetz ................................................................................. 187
7.1.5 Wie dimme ich eine LED? ................................................................................... 190
6.5 #define (Prprozessor-Anweisung) ................................................................................. 143
7.1.6 Zwischenfazit ......................................................................................................... 196
6.6 Operatoren ................................................................................................................................. 144
7.2 Ist da jemand? Kontakt mit der Auenwelt ............................................................ 196
6.7 Kontrollstrukturen .................................................................................................................. 145 7.2.1 Schalter abfragen .................................................................................................. 196
6.7.1 Der Befehl if ........................................................................................................ 145 7.2.2 Taster abfragen ...................................................................................................... 200
6.7.2 Der Befehl if...else ............................................................................................. 147 7.2.3 Sensoren ................................................................................................................... 206
6.7.3 Die switch-Anweisung .................................................................................... 148 7.2.4 Infrarotsensor ......................................................................................................... 206
6.8 Schleifen ...................................................................................................................................... 150 7.2.5 Ultraschallsensoren .............................................................................................. 215
6.8.1 Die for-Schleife .................................................................................................. 151 7.2.6 Immer noch nicht genug? Arduino-Shields! ................................................ 216
6.8.2 Die while-Schleife ............................................................................................. 152 7.2.7 Zwischenfazit ......................................................................................................... 220
6.8.3 Die do...while-Schleife ..................................................................................... 153 7.3 Hrt mich jemand? Ausgabe von Signalen .............................................................. 220
6.9 Funktionen ................................................................................................................................. 154 7.3.1 Der Piezosignalgeber ........................................................................................... 221
6.9.1 Parameter und Argumente ................................................................................ 157 7.3.2 Melodien programmieren .................................................................................. 225
6.9.2 Argumente ............................................................................................................... 158 7.3.3 Ein Musikinstrument ........................................................................................... 225
6.9.3 Begrenzte Haltbarkeit oder: der Gltigkeitsbereich 7.3.4 Zwischenfazit ......................................................................................................... 229
von Variablen .......................................................................................................... 159 7.4 Der Diener Ansteuerung von Servos ........................................................................... 230
6.10 Die setup-Funktion ............................................................................................................ 162 7.4.1 Was sind Servos und wie funktionieren sie? ............................................... 230
7.4.2 Wie werden Servos angesteuert? .................................................................... 232
6.11 Die loop-Funktion .............................................................................................................. 163
6.11.1 Das kleinstmgliche Arduino-Programm ...................................................... 164 7.5 Ich muss hier weg! Ansteuerung von Motoren ...................................................... 239
7.5.1 Arten von Motoren ............................................................................................... 239
6.12 Verzgerungen und Zeitsteuerung ................................................................................. 164
7.5.2 Wie werden Motoren angesteuert? ................................................................ 241
6.13 Ein- und Ausgnge .................................................................................................................. 165 7.5.3 Motoransteuerung realisieren .......................................................................... 244
6.14 Fehlersuche/Debugging und die Anzeige von Werten .......................................... 166 7.5.4 Ein Sensorventilator ............................................................................................. 255
6.14.1 Die LED als Mittel zur Fehlersuche .................................................................. 166 7.6 Fazit ............................................................................................................................................... 261
6.14.2 Der serielle Port Ausgabe von Text .............................................................. 168 7.6.1 Letzte Vorbereitung vor dem Zusammenbau des Roboters ................... 261
6.14.3 Ausgabe von Variablenwerten auf dem Serial Monitor ........................... 171
6.15 Bibliotheken (Libraries) ......................................................................................................... 176
6.16 Fazit ............................................................................................................................................... 176

8 9
Inhalt Inhalt

8 9

8 Keine Schraube locker Die Montage des 9 Drive me crazy? Die erste Fahrstunde 333
eigenen Roboters 263
9.1 Roboterchoreografie .............................................................................................................. 333
8.1 berblick ..................................................................................................................................... 263 9.1.1 Grundrichtungen ................................................................................................... 333
8.1.1 Die Teile fr den Arduino-Roboter ................................................................... 264 9.1.2 Den Roboter im Zickzack fahren lassen ......................................................... 337
8.1.2 Die Werkzeuge fr den Zusammenbau des Arduino-Roboters ............. 265 9.1.3 Den Roboter in einer Spirale fahren lassen .................................................. 341
8.1.3 Arten der Montage ................................................................................................ 267 9.2 Hindernisvermeidung ........................................................................................................... 344
8.2 Los gehts Schritt fr Schritt zum Bot ......................................................................... 270 9.2.1 Wie funktioniert Hindernisvermeidung? ...................................................... 344
8.2.1 Vorbereitung ........................................................................................................... 270 9.2.2 Umsetzung in die Praxis ..................................................................................... 345
8.2.2 Die Grundplatte ..................................................................................................... 272 9.2.3 Der Roboter als Haustier ..................................................................................... 347
8.2.3 Der kleine Motorhalter ........................................................................................ 276 9.3 Fazit ............................................................................................................................................... 356
8.2.4 Der groe Motorhalter ........................................................................................ 280
8.2.5 Lten der Drhte bzw. Litze an die Motoren ................................................ 283
8.2.6 Motoren mit Schrauben und Muttern versehen ........................................ 284
10

10 Pimp My Robot! Mgliche Erweiterungen 357


8.2.7 Montage des linken Motors ............................................................................... 286
8.2.8 Montage des rechten Motors ............................................................................ 290 10.1 Grundstzliche Ansteuerung eines Displays ............................................................... 358
8.2.9 Befestigung der beiden Motoren vorne ......................................................... 290 10.1.1 Installation der LCD-Shield-Library ................................................................. 358
8.2.10 Montage der oberen Platte ................................................................................ 293 10.1.2 Montage eines LCDs auf dem Roboter und Nutzung
8.2.11 Der Batteriehalter bzw. Akkuhalter ................................................................. 297 von Shield-Adaptern ............................................................................................ 362
8.2.12 Das Sttzrad bzw. Kugellager ........................................................................... 300 10.1.3 Hindernisanzeige .................................................................................................. 364
8.2.13 Der Servo .................................................................................................................. 303 10.1.4 Entfernungsanzeige auf dem LCD ................................................................... 369
8.2.14 Das Servorad oder Servokreuz ........................................................................... 306 10.1.5 Hinderniszhlung und Anzeige auf dem LCD .............................................. 372
8.2.15 Das Arduino-Board ................................................................................................ 308
10.2 Press Any Key! Interaktion per Tastatur ................................................................... 374
8.2.16 Das Roboter-Gesicht ............................................................................................. 309
10.2.1 Abfragen der Tasten ............................................................................................. 375
8.2.17 Das Kabel zum Infrarotsensor ........................................................................... 311
10.2.2 Steuerung des Roboters ber die Tasten ...................................................... 378
8.2.18 Der Infrarotsensor die Augen .................................................................... 315
10.2.3 Die Geschwindigkeit ber die Tasten einstellen ........................................ 382
8.2.19 Der Kopf .................................................................................................................... 317
8.2.20 Das Arduino Motor Shield .................................................................................. 318 10.3 Ich sehe was ... weitere Sensoren ................................................................................. 387
8.2.21 Die Spannungsversorgung und Motorkabel ................................................ 320 10.3.1 Infrarotsensor zur Fernsteuerung ................................................................... 387
8.2.22 Der Servostecker mit Hack .............................................................................. 323 10.3.2 Treppen- und Tischkantenerkennung ............................................................ 387
8.2.23 Der Sensorstecker .................................................................................................. 327 10.3.3 Der Roboter zhlt Personen ............................................................................... 388
8.2.24 Finale: Die Rder .................................................................................................... 327 10.3.4 Bring mich ins Licht der Helligkeitssensor ................................................ 390
10.3.5 Reflexionssensor Linienverfolgung ............................................................. 390
8.3 Alles bereit? Ein paar Tests .............................................................................................. 330
10.3.6 Farbsensor ............................................................................................................... 390
8.3.1 Stromversorgungstest ......................................................................................... 330
10.3.7 Bewegungssensor ................................................................................................. 391
8.3.2 Servotest ................................................................................................................... 330
10.4 Spannendes Energiemanagement ............................................................................... 391
8.3.3 Sensortest ................................................................................................................ 331
8.3.4 Motortest ................................................................................................................. 331 10.4.1 Spannungsanzeige ............................................................................................... 391
10.4.2 Akkuwarner mittels Spannungsteiler ............................................................ 393
8.4 Fazit ............................................................................................................................................... 332
10.5 Fazit ............................................................................................................................................... 396

10 11
Inhalt

11

11 Der Roboter und der Rest der Welt 397

11.1 Kommunikation per Infrarot .............................................................................................. 397


11.1.1 Coming home Suchen einer Basisstation .................................................. 397
11.1.2 Und was machst du so? Roboter kommunizieren .................................. 398
11.1.3 Alles im grnen Bereich? Der Roboter als Grtner ................................. 398
11.2 Kommunikation mittels Sprache ..................................................................................... 398
11.2.1 Hello world! Sprachausgabe fr den Roboter .......................................... 398
11.2.2 Simon befiehlt Spracherkennung fr den Roboter ................................. 399
11.3 Steuerung per Bluetooth ..................................................................................................... 399
11.4 Internet of Things Das Internet der Dinge ................................................................ 399
11.5 Fazit ............................................................................................................................................... 400

12

12 Schlusswort 401

Index ............................................................................................................................................................ 403

12
Index

Index
#define ......................................................................... 143 Arduino Due ................................................................. 66
3,3V .................................................................................. 64 Arduino Esplora .......................................................... 67
5V ..................................................................................... 63 Arduino Galileo ........................................................... 41
Arduino Micro ............................................................. 69
Arduino Motor Shield ........................................... 216
A Arduino Nano .............................................................. 69
Arduino Proto Shield .................................... 219, 390
Abisolierzange .......................................................... 104 Arduino Roboter ......................................................... 67
Ablaufplan .................................................................... 46 Arduino Uno ................................................................ 54
Acryl .............................................................................. 269 Arduino WIFI Shield ............................................... 399
Acrylglas ........................................................................ 77 Arduino Wireless SD Shield ................................. 217
Adafruit .............................................................. 358, 387 Arduino Yn ................................................................. 41
Adapter ........................................................................ 362 Arduino-Shield ......................................................... 216
Akku ................................................................................ 73 Argument ................................................................... 158
Akkuhalter .................................................................... 74 Array ............................................................................. 151
Akkuberwachung .................................................. 395 ATmega .......................................................................... 37
Akkuwarner ............................................................... 393 ATmega16 ..................................................................... 78
Aktor ........................................................................ 34, 35 Atmel ............................................................................... 37
Aktuator ........................................................................ 35 Aufladung
Aldebaran Robotics ................................................... 22 statische .................................................................... 54
Allradantrieb ............................................................... 27 Ausgang ....................................................................... 165
Alternativen zum Arduino .................................... 38 autonom ........................................................................ 21
analogRead ................................................................. 391
Android .......................................................................... 33
Anregungen ............................................................... 397
B
Anzeige ........................................................................ 166
App .................................................................................. 33 Basisstation ............................................................... 397
Apple Remote Fernbedienung ........................... 387 Batterie ........................................................................... 73
Arbeitsgert ................................................................. 97 Batteriehalter ............................................................... 74
Arduino Baud .............................................................................. 169
Benutzer-LED ........................................................... 57 Bausatz ........................................................................... 18
Ein- und Ausgnge ......................................... 57, 60 BeagleBoard .................................................................. 40
Hardwarereferenz .................................................. 55 BeagleBone Black ........................................................ 40
I2C-Schnittstelle ..................................................... 60 Benutzerverzeichnis ................................................. 79
ICSP-Stecker 1 .......................................................... 58 Betriebssystem ..................................................... 38, 78
ICSP-Stecker 2 .......................................................... 57 Bewegungsmelder .................................................. 391
Mikrocontroller ...................................................... 58 Bezeichner .................................................................. 138
Montagepunkt ........................................................ 58 Bibliotheken .............................................................. 176
Power-LED ................................................................. 58 Biegelehre ................................................................... 111
Reset-Taster .............................................................. 56 Bildschirm .................................................................. 166
Stromversorgung ................................................... 59 Binrsystem ............................................................... 139
Stromversorgungsbuchse ................................... 59 Bit ................................................................................... 139
bertragungs-LEDs (TX/RX) .............................. 58 Blinklicht ....................................................................... 35
USB-Buchse ............................................................... 60 Blinky ........................................................................... 179
Versionsnummer .................................................... 55 Block .......................................................... 145, 150, 162

403
Index Index

Bluetooth .................................................................... 399 Draht ............................................................................... 72 Fotowiderstand ........................................................ 390 Infrarotdistanzmesser .................................... 75, 208
boolean ........................................................................ 142 Drehzahl ......................................................................... 75 Freiheitsgrad ................................................................ 22 Infrarotdistanzsensor ........................................ 35, 75
Boolesche Operatoren ........................................... 146 Dritte Hand ................................................................ 112 Frequenz ...................................................................... 225 Infrarotempfnger .................................................. 397
Bootloader .................................................................... 58 Dualsystem ................................................................ 139 Fritzing ......................................................................... 117 Infrarot-LED ............................................................... 207
Bot Makers .................................................................... 70 Durchflussspannung ............................................. 190 Funktion ............................................................ 154, 183 Infrarotsender .......................................................... 397
Bounce ......................................................................... 203 Durchgangsprfer ................................................... 331 Infrarotsensor ........................................................... 206
Breadboard ................................................................... 99 Durchkontaktierung ..................................... 119, 127 Infrarotsignal ............................................................ 387
break ............................................................................. 149 G Initialisierung ........................................ 138, 151, 169
Buchse .......................................................................... 326 INPUT .................................................................. 143, 165
Ganzzahl ...................................................................... 140
Buchsenleiste ............................................................ 362 E INPUT_PULLUP ........................................................ 165
Bug ................................................................................. 166 Getriebe ................................................................ 75, 230 Installation .................................................................... 78
Buzzer ........................................................................... 221 Eclipse ............................................................................. 91 Getriebemotor ............................................................ 75 Installer .......................................................................... 79
Byte ..................................................................... 138, 139 Ein-/Ausgnge Gleichstrommotor ................................. 75, 239, 241 int .................................................................................. 140
digitale ....................................................................... 62 Gleichzeitigkeit ......................................................... 377 Integer .......................................................................... 140
Eingang ........................................................................ 165 GND ........................................................................ 61, 321 Integrated Circuit (Integrierter
analoger .......................................................... 63, 391 GPIO ................................................................................ 41
C Schaltkreis) ..................................................... 37, 243
Einstiegsplattform ..................................................... 32 GPU .................................................................................. 42 Interface ......................................................................... 60
C ............................................................................... 16, 131 Elektromotor ................................................................ 35 Grafische Oberflche ................................................ 91 Internet ....................................................................... 399
C++ ................................................................................... 16 else ................................................................................ 147 GSM Shield ................................................................. 219 Internet of Things (IoT) ......................................... 399
case ................................................................................ 149 Endlosschleife ........................................................... 152 GUI ................................................................................... 91 iOS .................................................................................... 33
Chassis ............................................................................ 77 Energiemanagement ............................................. 391 Gltigkeitsbereich ................................................... 159 iPad ........................................................................ 33, 399
Code .............................................................................. 131 Energieversorgung ................................................. 391 iPhone .......................................................................... 399
Community ................................................................. 17 Entfernung ................................................................. 210 IR-Bake ......................................................................... 397
Compiler ............................................................... 91, 137 Entfernungsanzeige ............................................... 369 H IR-Diode ...................................................................... 397
const ............................................................................. 142 Entprellen ................................................................... 204 IR-LED ........................................................................... 207
CPU .................................................................................. 41 Entwicklungsumgebung ......................................... 91 Handynetz .................................................................. 219
HD-Kamera .................................................................. 23 IR-Sensor ..................................................................... 207
Curiosity ........................................................................ 28 Isolierband ................................................................. 114
HDMI ....................................................................... 40, 41
Heikleber .................................................................. 268 Isolierung ................................................................... 104
F
Helfende Hand .......................................................... 112
D
Fahrtrichtung ............................................................ 337 Helligkeitssensor ..................................................... 390
Dashboard .................................................................... 90 false ............................................................................... 143 HIGH ............................................................................. 143 J
Datentyp ..................................................................... 137 FAQ Arduino ................................................................. 54 Hindernisanzeige .................................................... 364 Jumper Wire ................................................ 72, 97, 100
boolean ................................................................... 142 Farbsensor .................................................................. 390 Hinderniszhlung ................................................... 372
byte ........................................................................... 138 Fehlermeldung ......................................................... 187 HiTEC ............................................................................ 362
float .......................................................................... 141 Fehlersuche ....................................................... 187, 253 H-Schaltung ............................................................... 241
K
int .............................................................................. 140 Fernbedienung ......................................................... 387 Humanoid .................................................................... 22
long ........................................................................... 141 Feuerzeug ................................................................... 109 Kabelbinder ............................................................... 115
Debugging .................................................................. 166 Finder .............................................................................. 84 Kabelmesser .............................................................. 104
Deklaration ...................................................... 137, 151 Firmware ..................................................................... 183 I Kalte Ltstelle .................................................. 122, 129
delay .............................................................................. 164 Flachzange .................................................................. 110 Kamera ........................................................................... 34
Dezimalsystem ......................................................... 139 flashen ......................................................................... 183 I2C ........................................................................... 60, 358 Keypad ......................................................................... 358
DFKI ................................................................................. 23 float ............................................................................... 141 IC ..................................................................................... 243 Kinect-Kamera ............................................................. 34
Display ......................................................................... 357 Flussmittel ........................................................ 106, 120 IC Integrated Circuit Klasse ............................................................................ 168
do...while ..................................................................... 153 for .................................................................................. 151 Icon .................................................................................. 92 Klebeband .................................................................. 267
Dokumentation ........................................................ 135 Formatierung ............................................................ 382 ICSP ........................................................................... 57, 58 Konstante ................................................................... 142
Download ............................................................... 18, 78 FORMULOR ................................................................ 269 IDE .................................................................................... 91 Krokoklemmen ........................................................ 102
Doxygen ...................................................................... 135 forward voltage ........................................................ 190 if ...................................................................................... 145 Kugellager ..................................................................... 24

404 405
Index Index

L Mensteuerung ....................................................... 382 Plexiglas ........................................................................ 77 RESET ............................................................................ 375


Messgert .......................................................... 108, 331 Podcast ........................................................................... 18 Reset ......................................................................... 56, 64
L298 ............................................................................... 243 Microsoft Kinect ......................................................... 34 Polymethylmethacrylat .......................................... 77 Reset-Taster .................................................................. 55
LabView ......................................................................... 49 Mikrocontroller ................................................... 37, 45 Potenziometer .......................................................... 230 RGB-LED ...................................................................... 391
Ladegert ....................................................................... 73 Mikrofon ........................................................................ 34 Poti ...................................................................... 230, 363 RoboCup ........................................................................ 22
Laser .............................................................................. 269 Modellbau .................................................................. 230 Prprozessor .............................................................. 143 Roboter
Layer ............................................................................. 119 modularisieren ......................................................... 154 Prellen .......................................................................... 203 Arduino-Roboter .................................................... 26
LCD ................................................................................ 357 Montage ...................................................................... 263 print .............................................................................. 170 Arexx RP6 V2 ........................................................... 29
LDR ................................................................................ 390 Motor ........................................................................... 239 println .......................................................................... 170 Arten ........................................................................... 21
Legierung .................................................................... 120 Motor Shield ....................................................... 71, 242 Programmablaufplan .............................................. 45 Bestandteile ............................................................. 34
LEGO Mindstorms ..................................................... 39 Motoransteuerung ........................................ 239, 244 Programmbeispiele Crex ............................................................................. 23
Leiterbahn .................................................................. 119 Motorwelle ................................................................. 239 Download .................................................................. 18 Curiosity .................................................................... 28
Libraries ....................................................................... 176 Multilayer ................................................................... 119 Programmieren .......................................................... 45 direcs1 ........................................................................ 28
Lichtschranke ............................................................ 388 Multitasking .............................................................. 377 Programmiersprache ............................................. 131 dreirdriger .............................................................. 24
Lichtsensor ................................................................. 390 Musikinstrument .................................................... 225 Programmierstil ....................................................... 131 Entwicklungskosten ............................................. 21
LilyPad Arduino USB ................................................ 68 Programmierumgebung ........................................ 49 mit Raupenantrieb ................................................ 29
Linienverfolgung ..................................................... 390 Programmierung ....................................................... 45 MURCS ....................................................................... 25
Linker ..................................................................... 91, 137 N grafische .................................................................... 45 Nao .............................................................................. 22
Linux ........................................................................ 41, 78 Grundlagen ........................................................... 131 OpenROV .................................................................. 32
Litze ........................................................................ 72, 114 Nao ................................................................................... 22 textbasierte .............................................................. 49 Preis ............................................................................. 21
Lizenzbedingungen .................................................. 80 NASA ................................................................................ 28 Programmoberflche ............................................... 92 Schlangenroboter .................................................. 30
Lochrasterplatine .................................................... 116 Netzteil ........................................................................... 59 Programmschleife ................................................... 163 sechsbeiniger ........................................................... 23
long ................................................................................ 141 Note .............................................................................. 225 Projektwebseite .......................................................... 53 sechsrdriger ........................................................... 28
loop ............................................................................... 163 Protoboard ................................................................... 99 Tauchroboter ........................................................... 31
Ltauge ........................................................................ 119 Prototyp ............................................................... 99, 219 Uncle Sam ................................................................. 31
Ltbrcke .................................................................... 117 O Pull-down-Widerstand .......................................... 198 vierrdriger .............................................................. 27
Ltdauer ...................................................................... 128 Pull-up-Widerstand ...................................... 165, 198 zweibeiniger ............................................................. 22
Ohmsches Gesetz .................................................... 394
Ltkolben .................................................................... 105 Pulsdauer .................................................................... 232 zweirdriger ............................................................. 24
Open Source ................................................................. 40
Ltpunkt ...................................................................... 119 Pulsweitenmodulation ......................................... 191 Roboterkit ..................................................................... 17
Operator ............................................................. 144, 146
Ltstation .................................................................... 105 Pulsweitenmodulation (PWM) ....... 190, 191, 232, ROBOTS-iPad-App ...................................................... 33
Opportunity ................................................................. 28
Ltstelle 253, 334 Routine ........................................................................ 158
OUTPUT .............................................................. 143, 165
kalte ............................................................................. 97 RP6 ................................................................................... 29
Ltstopplack .............................................................. 120 Rckgabewert ........................................................... 154
Ltvorgang ................................................................. 128
P Q Rundung ..................................................................... 172
Ltzinn ......................................................................... 106 RX ...................................................................................... 59
LOW ............................................................................... 143 Parameter ................................................................... 157 QTR-8RC ....................................................................... 390
Lupe ............................................................................... 112 Parameterliste .......................................................... 158
Lsterklemme ........................................................... 113 Periodendauer .......................................................... 232 S
Piezo .................................................................... 141, 221 R
Piezoschallwandler ................................................. 221 Schalter ........................................................................ 196
Rad
M Piezosignalgeber ...................................................... 221 aktives ........................................................................ 24
Schaltung
pinMode ...................................................................... 165 Prototyp .................................................................... 99
Mac OS X ................................................................ 78, 83 Mecanum .................................................................. 27 Schlangenroboter ....................................................... 30
Pinzette ....................................................................... 111 passives ...................................................................... 24
male ................................................................................. 72 Schleife ........................................................................ 150
PIR .................................................................................. 391 RAM ............................................................................... 139
map ............................................................................... 214 do...while ................................................................ 153
Platine Raspberry Pi ................................................................. 41
Marsroboter ................................................................. 28 for .............................................................................. 151
doppelseitige ........................................................ 119 Raupenantrieb ............................................................ 29
Masse .............................................................................. 61 fugesteuert .......................................................... 154
einseitige ................................................................ 119 Referenz ....................................................................... 163
Mecanum-Rad ............................................................. 27 kopfgesteuert ....................................................... 152
playTone ..................................................................... 224 Reihenschaltung ...................................................... 393
Melodie ........................................................................ 225 while ......................................................................... 152

406 407
Index Index

Schlitzschraubendreher ........................................ 110 Steckverbinder Ubuntu ........................................................................... 86 W


Schnittstelle ................................................................. 60 female ......................................................................... 72 Ultraschallsensor .............................................. 35, 215
Schrittmotor .............................................................. 240 mnnlich ................................................................... 72 Unterprogramm ...................................................... 158 wasserdicht ................................................................... 32
Schrumpfschlauch .................................................... 76 Stepper ......................................................................... 240 Untersetzung ............................................................... 75 weiblich .......................................................................... 72
Schwamm ................................................................... 107 Stromsensor ................................................................. 35 Upload ............................................................................ 58 Werkstatt ....................................................................... 97
Scratch ............................................................................ 46 Stromversorgung ........................................... 236, 323 USB-Buchse ......................................................... 59, 168 Werkzeug ....................................................................... 97
SD-Karte ......................................................................... 40 Stromversorgungsbuchse ...................................... 59 USB-Schnittstelle Werkzeugliste ........................................................... 265
SD-Kartenleser .......................................................... 218 Stromversorgungstest .......................................... 330 serielle ...................................................................... 168 while ............................................................................. 152
Seele .............................................................................. 120 Stuhlbeinproblematik .................................. 238, 344 Widerstandswert ..................................................... 188
Seitenschneider ........................................................ 103 Sttzrad ................................................................... 24, 76 WIFI Shield ................................................................. 218
Semikolon ................................................................... 137 Summer ....................................................................... 221 V Windows ................................................................. 78, 79
Sensor .................................................................... 34, 206 Supportforum .............................................................. 54 Windows Installer ...................................................... 79
Infrarotdistanzsensor .......................................... 35 switch...case ............................................................... 149 Variable ........................................................................ 137 Wire .................................................................................. 61
Stromsensor ............................................................. 35 Symbol ............................................................................ 92 anzeigen ................................................................. 171 WLAN ................................................. 39, 218, 399, 400
Ultraschallsensor ................................................... 35 Syntax .......................................................................... 155 globale ..................................................................... 159
Sensortest ................................................................... 331 System-on-a-Chip ....................................................... 37 lokale ....................................................................... 159
Serial ............................................................................. 168 Verdrahtung X
Serial Monitor .......................................... 63, 169, 393 feste ............................................................................. 97
fliegende .................................................................... 97 Xcode ............................................................................... 91
Serial.begin() .............................................................. 169 T
Servo ............................................................... 35, 74, 230 Vergleichsoperator ................................................. 146
Servoansteuerung ............................................ 94, 233 Taster ................................................ 200, 358, 374, 389 Verkabelung ................................................................. 97
Servoarm ..................................................................... 230 Tauchroboter ............................................................... 31 Verlten ....................................................................... 114 Z
Servotest ..................................................................... 330 Teileliste ...................................................................... 264 Verzgerung .............................................................. 164
Zhlen .......................................................................... 388
Servowelle .................................................................. 230 Temperatur ................................................................ 128 Video ............................................................................. 270
Zusammenbau ......................................................... 263
setup ............................................................................. 162 Testkabel ........................................................................ 72 Vin ................................................................ 63, 320, 326
Zuweisung .................................................................. 137
Shadowing .................................................................. 162 Text-to-Speech ......................................................... 398 Visual Studio ............................................................... 91
Shield ..................................................................... 64, 176 TFT Touch Shield ..................................................... 218 void ...................................................................... 155, 338
Sicherheitsbrille ....................................................... 102 Thingiverse ................................................................ 270
Sicherheitshinweis .................................................... 54 TinyDuino ..................................................................... 69
Signal ............................................................................ 220 Toleranz ...................................................................... 336
Sketch ........................................................................... 131 Tne .............................................................................. 221
Sketchbook ................................................................. 131 tone ............................................................................... 224
SMD ................................................................................. 65 Touchscreen .............................................................. 218
Sn60Pb40 .................................................................... 120 Treiber ............................................................................. 78
SoC ................................................................................... 37 Treiberinstallation ..................................................... 78
Spannung messen ................................................... 391 Trimmer ...................................................................... 363
Spannungsanzeige .................................................. 391 Troubleshooting ...................................................... 187
Spannungsteiler ....................................................... 393 true ................................................................................ 143
Spirit ............................................................................... 28 TSOP38238 ................................................................. 387
Spitzzange ................................................................... 110 TWI ................................................................................... 61
Sprachausgabe ................................................... 23, 398 Twitter ................................................................. 218, 399
Spracherkennung .................................................... 399 TX ............................................................................... 59, 62
Sprachreferenz ............................................................ 54
Stabilisierung .............................................................. 24
Steckbrcke .................................................................. 72 U
Steckplatine ................................................................. 99 berlauf ................................................... 140, 176, 382
Aufbau ........................................................................ 99 berwachung ............................................................ 388

408 409
Wissen, wies geht.

Markus Knapp ist Leiter der On-Site Services eines groen Un-
ternehmens in Hannover und beschftigt sich seit vielen Jahren
privat leidenschaftlich mit Robotik und Software-Entwicklung.
Seit 2011 betreibt er den beliebten und erfolgreichen Podcast
www.robotiklabor.de rund um die Entwicklung von Robotern.
Darber hinaus ist er gefragter Sprecher auf Veranstaltungen
fr Maker.

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Gerne drfen Sie diese
Markus Knapp Leseprobe empfehlen und weitergeben, allerdings nur vollstndig mit allen Seiten.
Roboter bauen mit Arduino Die vorliegende Leseprobe ist in all ihren Teilen urheberrechtlich geschtzt. Alle
Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Die Anleitung fr Einsteiger
409 Seiten, broschiert, in Farbe, Oktober 2014
24,90 Euro, ISBN 978-3-8362-2941-8 Teilen Sie Ihre Leseerfahrung mit uns!

www.galileo-press.de/3642

Das könnte Ihnen auch gefallen