Table Of Content2.
A
r u
e fl
g a
g
,n Arduinoe
hle
W
a
d
nx
e
e
l
dA
O
&
l
en
un
ni
F
a
Mn Physical Computing für
a
i
l
u
J
Bastler, Designer & Geeks
s
y s
l c
l i
i s
e a
r
b
’
o
Microcontroller-Programmierung für alle
Rapid Prototyping
Mit kompletter Programmiersprachenreferenz
2. Auflage
Arduino – Physical Computing
für Bastler, Designer und Geeks
Manuel Odendahl, Julian Finn & Alex Wenger
Beijing · Cambridge · Farnham · Köln · Sebastopol · Taipei · Tokyo
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen
keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und
deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind
möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den
Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Kommentare und Fragen können Sie gerne an uns richten:
O’Reilly Verlag
Balthasarstr. 81
50670 Köln
Tel.: 0221/9731600
Fax: 0221/9731608
E-Mail: kommentar@oreilly.de
Copyright der deutschen Ausgabe:
© 2010 by O’Reilly Verlag GmbH & Co. KG
1. Auflage 2009
2. Auflage 2010
Bibliografische Information Der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der
Deutschen Nationalbibliografie; detaillierte bibliografische Daten
sind im Internet über http://dnb.d-nb.de abrufbar.
Lektorat: Volker Bombien, Köln
Korrektorat: Kathrin Jurgenowski, Köln
Satz: III-satz, Husby
Umschlaggestaltung: Michael Oreal, Köln
Produktion: Karin Driesen, Köln
Belichtung, Druck und buchbinderische Verarbeitung:
Druckerei Kösel, Krugzell; www.koeselbuch.de
ISBN 978-3-89721-995-3
Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.
Inhalt
Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX
1 Von Königen und Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Die Geschichte des Arduino-Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Der Arduino, das unbekannte Gerät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Arduino-Projekte: eine kleine Vorstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Die Arduino-Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Physical Computing, elektrischeGrundlagen und der Sprung ins kalte Wasser . . . . . . . . . 31
Elektrische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Schaltungen, Bauteile und Schaltbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Löten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Fehlersuche in elektronischen Schaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3 Workshop LED-Licht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Eine blinkende LED – das »Hello World« desPhysical Computing . . . . . . . . . . . . . 84
4 LEDs für Fortgeschrittene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
LED-Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Tamagotchi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Brainwave und Biofeedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
V
5 Sprich mit mir, Arduino! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Nach Hause telefonieren mit der seriellen Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Automatisierung mit Gobetwino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6 Arduino im Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Hello World – ein Mini-Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Sag´s der Welt mit Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Fang die Bytes – Datalogger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
7 Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Aktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Elektronischer Würfel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8 Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Alles hört auf mein Kommando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
DMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Barlicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
RF-Steckdosen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Gespensterschreck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
9 Wearable Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Programmierbare Kleidung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Wearable Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Die iPod-Steuerung im Mantel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10 Musik-Controller mit Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Musik steuern mit dem Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Das MIDI-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Die MidiDuino-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
EinMIDI-Zauberstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
MIDI-Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11 Musik mit Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Töne aus dem Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Erster Sketch: Töne mit langsamer PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Zweiter Sketch: Angenehme Klänge mit schneller PWM . . . . . . . . . . . . . . . . . . . . . . 252
Dritter Sketch: Steuerung von Klängen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Vierter Sketch: Berechnungen in einer Interrupt-Routine . . . . . . . . . . . . . . . . . . . . . 255
Fünfter Sketch: Musikalische Noten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
VI Inhalt
A Arduino-Boards und -Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Arduino-Boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Arduino-Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
B Arduino-Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
EEPROM-Bibliothek: Wertelangfristig speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Ethernet-Bibliothek: mit dem Internet kommunizieren . . . . . . . . . . . . . . . . . . . . . . . 277
Firmata-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
LiquidCrystal-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Servo-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Debounce-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Wire-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
capSense-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
C Sprachreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Übersicht: Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Struktur, Werte und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Programmwerte (Variablen, Datentypen und Konstanten) . . . . . . . . . . . . . . . . . . . . 297
Ausdrücke und Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Sketch-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Funktionsreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
D Händlerliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Inhalt VII
In diesem Kapitel:
• Für wen ist dieses Buch
Einleitung
gedacht?
(cid:129) Aufbau dieses Buchs
(cid:129) Typografische Konventionen
(cid:129) Verwendung der Code-
beispiele
(cid:129) Die Codebeispiele zu diesem
Buch
(cid:129) Die Arduino-Welt
(cid:129) Dedication from David
Cuartielles
Vielleicht stehen Sie gerade im Laden und überlegen sich, ob Sie
dieses Buch kaufen möchten. Vielleicht haben Sie es auch schon
erworben, wofür wir uns natürlich recht herzlich bedanken. In
jedem Fall aber halten Sie gerade das erste deutschsprachige Buch
zum Thema Arduino in den Händen. Arduino ist die Verbindung
aus einem Board, das einen Mikrocontroller beherbergt, mit einer
Programmiersprache, die es sehr leicht macht, diesem kleinen Pro-
zessor auch Befehle zu erteilen. Zusammen bilden die beiden die
Basis für sogenanntes Physical Computing, die Verbindung der rea-
len, physischen Welt mit der virtuellen Welt der Einsen und Nullen.
Der Arduino eignet sich hervorragend für alle möglichen Projekte,
denn er ist günstig zu erwerben und einfach und vor allem schnell
zu programmieren. So wird die Zeit von der fixen Idee bis zur
Umsetzung möglichst kurz gehalten. Das bewahrt viele gute Pro-
jekte vor dem Papierkorb, in dem sie unweigerlich landen, wenn
ihre Schöpfer vor allzu großen Problemen stehen.
Der Arduino wurde im italienischen Ivrea entwickelt, um Design-
studenten möglichst leicht zu bedienende Werkzeuge an die Hand
zu geben, und hat seit 2005 einen fast beispiellosen Siegeszug ange-
treten. Rund um den Globus finden sich nun an Kunsthochschulen
Seminare zur Programmierung, zum Löten und über physikalische
Grundlagen, begünstigt durch die einfache Verfügbarkeit dieser
Technologie. Mehr über die Geschichte des Arduino finden Sie in
Kapitel1.
Aber vorweg – um was geht es hier eigentlich genau? Arduino ist
zum einen eine Plattform, die aus einem Mikrocontroller besteht,
der ähnlich wie ein PC eigenständig Berechnungen durchführen
IX
kann, aber auch leicht mit vielen Sensoren zur Interaktion mit der
Umwelt verbunden werden kann. Arduino ist aber auch die dazu-
gehörige Entwicklungsumgebung, und – nicht zu vergessen – das
Framework, das viele komplizierte Details der hardwaregestützten
Entwicklung einfacher macht. So kann mit einem einzelnen Knopf-
druck der Programmcode sowohl kompiliert als auch direkt über
USB in den Arduino geladen werden.
All das erlaubt die schnelle Entwicklung von Prototypen; aber
dadurch, dass alle Teile auf bestehenden Standards wie C++ und
verbreiteten Mikrocontrollern basieren, kann es später auch losge-
löst vom Arduino-Konzept weiterverwendet werden.
Für wen ist dieses Buch gedacht?
Sie haben die Einleitung gelesen und fragen sich nun, ob Sie zu den
»Bastlern, Designern und Geeks« gehören, die der Buchtitel
anspricht? Nun, wahrscheinlich schon. Dieses Buch versucht, sei-
nen Leserinnen und Lesern die Welt des Physical Computing und
damit auch der Programmierung anhand von praktischen Beispie-
len näherzubringen.
Sie alle haben gemeinsam, dass sie fortan Neues entwickeln wollen,
entweder in der realen Welt als Gegenstand oder virtuell auf dem
Rechner als Daten und Software. Hier fügen sich mit Arduino zwei
Welten zusammen, die eigentlich nie richtig voneinander getrennt
waren, und doch ist das Überqueren dieser Grenze für viele eine
hohe Hürde. Der Programmierer scheut den Lötkolben und löst
Probleme lieber auf seine Weise, wogegen der Bastler lieber noch
drei weitere Bausätze verwendet, als dass er sich mit der Program-
mierung eines Computers oder Mikrocontrollers auseinandersetzt.
Bastlern, die bisher vielleicht nur in der physischen Welt an ihren
Projekten gearbeitet haben, werden dadurch neue Möglichkeiten
eröffnet: Sie können die im Buch aufgezeigten Ideen verfolgen und
dabei lernen, wie der Arduino zu ihrem Hobby viele neue Aspekte
beisteuern kann.
Als Designer und Medienkünstler werden Sie bislang möglicher-
weise ähnliche Probleme gehabt haben: Die Inspiration war da,
bloß an der Umsetzung hat es gehapert. Mit dem Arduino können
einfache Prototypen schnell umgesetzt werden, sodass man sich
nicht mit allzu komplizierter Technik aufhalten muss. Man kommt
auch nicht mehr in die Situation, dass Informatiker einem gern hel-
X Einleitung