A Be Die elektronische rduinhandelt o 1. Welt mit 0 n n a Arduino m t r a B k i r E entdecken s y s l c l i i s e a r b ’ o Mit dem Arduino messen, steuern und spielen Elektronik leicht verstehen Kreativ programmieren lernen Die elektronische Welt mit Arduino entdecken Erik Bartmann · · · · · Beijing Cambridge Farnham Köln Sebastopol 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 E-Mail: [email protected] Copyright: © 2011 by O’Reilly Verlag GmbH & Co. KG 1. Auflage 2011 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 Bomien, Köln Fachliche Unterstützung: Markus Ulsaß, Hamburg Korrektorat: Tanja Feder, Bonn Satz: III-Satz, Husby; www.drei-satz.de Umschlaggestaltung: Michael Oreal, Köln Produktion: Karin Driesen, Köln Belichtung, Druck und buchbinderische Verarbeitung: Media-Print, Paderborn ISBN 978-3-89721-319-7 Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt. Inhalt Grußwort von Wolfgang Rudolph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX Kapitel 1: Was ist ein Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Wozu kann man ihn verwenden? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Allgemeiner Aufbau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Kapitel 2: Das Arduino-Board. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Die Stromversorgung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Die Kommunikationswege. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Die Programmiersprachen C/C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Wie und womit kann ich Arduino programmieren? . . . . . . . . . . . . . . . . . . . . . . . . . 22 Die Arduino-Entwicklungsumgebung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Das Starten der Entwicklungsumgebung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Die Portkommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Befehl und Gehorsam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Kapitel 3: Die Elektronik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Was ist Elektronik eigentlich? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Bauteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Weitere interessante Bauteile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Kapitel 4: Elektronische Grundschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Widerstandsschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Kondensatorschaltungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Transistorschaltungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- III Kapitel 5: Das Zusammenfügen der Bauteile . . . . . . . . . . . . . . . . . . . . . . . . 113 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Was ist eine Platine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Das Steckbrett (Breadboard). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Die flexiblen Steckbrücken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Kapitel 6: Nützliches Equipment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Nützliches Equipment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Kapitel 7: Grundlegendes zur Programmierung. . . . . . . . . . . . . . . . . . . . . . 133 Was ist ein Programm bzw. ein Sketch? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Was bedeutet Datenverarbeitung? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Die Struktur eines Arduino-Sketches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Wie lange läuft ein Sketch aufdem Board?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Kapitel 8: Die Programmierung des Arduino-Boards . . . . . . . . . . . . . . . . . 157 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Die digitalen Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Die analogen Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Die serielle Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Projekt 1: Der erste Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Projekt 2: Einen Sensor abfragen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Projekt 3: Blinken mit Intervallsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Projekt 4: Der störrische Taster. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Projekt 5: Ein Lauflicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Projekt 6: Porterweiterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Projekt 7: Porterweiterung mal 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Projekt 8: Die Statemachine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Projekt 9: Der elektronische Würfel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 IV--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Inhalt Projekt 10: Der elektronische Würfel (und wie erstelle ich eine Bibliothek?). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Projekt 11: Das Miniroulette. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Projekt 12: Lichtsensoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Projekt 13: Der Richtungsdetektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Projekt 14: Die Ansteuerung eines Servos . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Projekt 15: Das Lichtradar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Projekt 16: Die Siebensegmentanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Projekt 17: Die Siebensegmentanzeige (mir gehen die Pins aus). . . . . 411 Projekt 18: Der Reaktionstester. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Projekt 19: Das KeyPad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Projekt 20: Das KeyPad (Diesmal ganz anders) . . . . . . . . . . . . . . . . . . . . . . 457 Projekt 21: Eine Alphanumerische Anzeige . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Projekt 22: Kommunikation über I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Projekt 23: Der Schrittmotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Projekt 24: Der ArduBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Projekt 25: Die Temperatur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Projekt 26: Der Sound und mehr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Projekt 27: Data Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 Projekt 28: Der Arduino-Talker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Projekt 29: Die drahtlose Kommunikation über Bluetooth . . . . . . . . . . . 593 Projekt 30: Bluetooth und das Android-Smartphone . . . . . . . . . . . . . . . . . 607 Inhalt----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- V Projekt 31: Der ArduBot wird funkgesteuert . . . . . . . . . . . . . . . . . . . . . . . . . 613 Projekt 32: Netzwerk-Kommunikation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Projekt 33: Digital ruft analog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 Projekt 34: Shieldbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Anhang A: Befehls-Referenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Anhang B: Wo bekomme ich was? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 VI--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Inhalt First Grußwort von Wolfgang Hier Mini IVZ eingeben! Rudolph Erstellen auf den Abstand untere Tabellenlinie zu Textanfang 1,8 cm Arbeitsseiten -> also: manuell auf den Arbeitsseiten ziehen!!! (siehe Muster) Ich bin begeistert! Ich habe immer Bücher gern gehabt, die auf eine einfache und unkonventionelle Art und Weise Wissen vermitteln konnten und in ihrer Schreibweise nicht belehrend waren, sondern wie ein Freund daher kamen. Das vorliegende Buch ist ein solches Werk. Leicht und locker geschrieben und mit lusti- gen Bildern aufgelockert, taucht man in die Welt der Elektronik und des Arduino ein. Vielleicht werden Sie, liebe Leserin oder lieber Leser, jetzt denken: »Warum überhaupt noch ein Buch in der Zeit des Internet?« Das kann ich Ihnen beantworten. Auch ich hole mir die meisten Informationen aus den unerschöpfli- chen Tiefen des Internet, aber oft weiß ich nicht, wonach ich genau suchen muss, um meine aktuelle Wissenslücke zu füllen. Auch habe ich schon viele Halbwahrheiten oder gar vollständig falsche Informationen im Internet gefunden oder verzweifelt und entnervt aufgegeben, weil ich nach 43 Forenbesuchen, 517 Werbelinks und 2716 Meinungen selbstkluger Mitmenschen weniger wusste als vorher. Als Grundlage, für den Anfang des Wissens, ist ein solches Buch, auch heute noch die erste Wahl für mich! Hier finde ich Informati- onen, die gründlich recherchiert sind, ausprobiert wurden und mit eigener Erfahrung praxisgerecht aufbereitet sind. Hinter einem Buch steht eine Person und ein Verlag, kein anonymer Inter- netschreiberling. Ein solches Buch, und gerade dieses Buch, kann ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- VII durch das Internet mit seinen vielen Hobbyisten und selbsternann- ten Experten nicht ersetzt werden. Gute Fachbücher sind auch heute noch für mich die Grundlage des Wissens, und das Internet ergänzt, wenn ich genug verstanden habe, mein Wissen um spezielle Lösungen und aktuelle Neuigkeiten. Dem Autor Erik Bartmann möchte ich zu dem gelungenem Werk gratulieren und dem O'Reilly Verlag danken, dass er es möglich macht, ein solches Buch auf den Markt zu bringen. Es hilft Inter- esse für diese Technologie zu entwickeln, denn gerade in Deutsch- land brauchen wir die Fachkräfte, welche durch solche Bücher »geboren« werden können. Wolfgang Rudolph Wolfgang Rudolph moderierte gemeinsam mit Wolfgang Back ab 1983 die TV-Sendung »WDR Computerclub«. Mit der nicht nur bei Technikbegeisterten sehr beliebten TV-Sendung erreichten sie weit über die Grenzen von Deutschland hinaus Beachtung. Wolfgang Rudolph gilt als Mitbegründer und Urgestein des deutschen Computer- journalismus und ist in der »Hall of Fame« des »Heinz Nixdorf Muse- umsForum« in Paderborn – dem größten Computermuseum der Welt – unter den 100 bekanntesten Computerpionieren der Welt vertreten. VIII------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Grußwort von Wolfgang Rudolph