Bert van Dam
Man kann dieses Buch als Baubuch betrachten und die beschriebenen Projekte einfach nachbauen und praktisch einsetzen. Mit der klaren Beschreibung, den Schaltbildern und den Aufbaufotos ist der Nachbau eine erfreuliche Angelegenheit. Alle Bilder sind von funktionierenden Prototypen gemacht, ein deutlicher Beleg für deren sichere Funktion.
ARDUINO ENTDECKEN
●
Bert van Dam ist freiberuflicher Autor von Büchern, Kursen und Artikeln über PIC- und ARM-Mikrocontroller, Arduino, Raspberry Pi, PCs, Künstliche Intelligenz und die Programmiersprachen JAL, C, Assembler, Python und Flowcode.
In diesem Buch wird eine Reihe spannender und interessanter Projekte mit dem Arduino beschrieben, beispielsweise ein stiller Alarm, ein Menschensensor, ein Lichtmessgerät, die Motorsteuerung und die Bedienung über das Internet oder eine Fernsteuerung (mit Funkverbindung). Im Gegensatz zu vielen Gratis-Projekten aus dem Internet sind alle Projekte in diesem Buch in der Praxis getestet und funktionieren garantiert!
ARDUINO ENTDECKEN
ARDUINO ENTDECKEN
45 NACHBAUSICHERE PROJEKTE FÜR DEN UNO
BERT VAN DAM
45 NACHBAUSICHERE PROJEKTE FÜR DEN UNO
Man kann die Projekte in diesem Buch auch miteinander kombinieren, um eigene Aufgaben zu lösen. Zu jedem Projekt gehört eine verständliche Erläuterung, warum es so und nicht anders realisiert wurde. Dabei lernt man viel über die Schaltung selbst und bekommt alle Informationen, die man braucht, um sie nach eigenen Vorstellungen anzupassen und zu erweitern.
DESIGN
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
Darüber hinaus lässt sich das Buch als Nachschlagewerk nutzen. Über den Index findet man schnell und einfach Projekte, die als Beispiel für die C++ Programmierung und eigene Arduino-Anwendungen dienen können. Selbst wenn man schon alle Projekte nachgebaut hat, wird das Buch daher sicher noch lange seinen Platz neben dem eigenen PC einnehmen.
SHARE
ISBN 978-3-89576-306-9
Bert van Dam LEARN
DESIGN
SHARE
LEARN
LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIG ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SH GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESI ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● S
Arduino entdecken 45 nachbausichere Projekte für den Uno
● Bert van Dam
an Elektor Publication LEARN
Arduino Entdecken 150615.indd 3
DESIGN
SHARE
10-07-15 11:31
●
Elektor-Verlag Aachen
1. Neuauflage 2015
●
Alle Rechte vorbehalten.
Die in diesem Buch veröffentlichten Beiträge, insbesondere alle Aufsätze und Artikel sowie alle Entwürfe, Pläne, Zeichnungen und Illustrationen sind urheberrechtlich geschützt. Ihre auch auszugsweise Vervielfältigung und Verbreitung ist grundsätzlich nur mit vorheriger schriftlicher Zustimmung des Herausgebers gestattet. Die Informationen im vorliegenden Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Die in diesem Buch erwähnten Soft- und Hardwarebezeichnungen können auch dann eingetragene Warenzeichen sein, wenn darauf nicht besonders hingewiesen wird. Sie gehören dem jeweiligen Warenzeicheninhaber und unterliegen gesetzlichen Bestimmungen. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autor können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgend eine Haftung übernehmen. Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar.
●
© Copyright 2015: Elektor Verlag, Aachen
Koordination: Rolf Hähle Aus dem Niederländischen übersetzt von Rolf Gerstendorf. Übersetzung der niederländischen Ausgabe “Arduino Uno - 45 projecten voor beginners en experts“. Satz und Aufmachung: D-Vision, Julian van den Berg | Oss (NL) Druck: Wilco Printing & Binding | Amersfoort (NL)
●
ISBN 978-3-89576-306-9
159007-1/D
Elektor is part of EIM, the world’s leading source of essential technical information and electronics products for pro engineers, electronics designers, and the companies seeking to engage them. Each day, our international team develops and delivers high-quality content - via a variety of media channels (e.g., magazines, video, digital media, and social media) in several languages - relating to electronics design and DIY electronics. www.elektor.com
LEARN
Arduino Entdecken 150615.indd 4
DESIGN
SHARE
10-07-15 11:31
Einleitung Dieses Buch bietet eine Reihe spannender und schöner Projekte für den Arduino, zum Beispiel einen stillen Alarm, einen Menschensensor, ein Lichtmeter, die Steuerung eines Motors, Internet und die drahtlose Steuerung über eine Funkverbindung. Im Gegensatz zu vielen kostenlosen Schaltungen im Internet sind die Projekte im Buch getestet und funktionieren garantiert! Sie können dieses Buch als Bauanleitung verwenden und die 45 Projekte nachbauen und in der Praxis einsetzen. Durch die deutlichen Beschreibungen, die Schaltbilder und auch die Fotos der Aufbauten wird der Nachbau zum Kinderspiel. Die Fotos wurden von fehlerlos arbeitenden Aufbauten gemacht. Sie können die Projekte auch miteinander kombinieren und so als Basis für eigene Ideen verwenden. Bei jedem Projekt wird erläutert, warum es genau so und nicht anders ausgeführt ist. Auf diese Art lernen Sie viel über das Projekt und die eingesetzten Bauteile, damit Sie das Projekt eigenen Wünschen anpassen können. Schließlich ist das Buch als Nachschlagewerk zu verwenden. Über den Index gelangen Sie bequem zu Projekten, die beispielsweise bestimmte C++-Befehle oder Arduino-Funktionen verwenden. Auch wenn Sie alle Projekte längst realisiert haben, wird dieses Buch deshalb noch lange einen Platz neben Ihrem PC behalten. Bei dieser Gelegenheit möchte ich mich bei Bert Oodshoorn für die Hilfe bei der Schlussredaktion des Buches und beim Testen der Projekte bedanken.
Bert van Dam Roosendaal, 2014
●5
Arduino Entdecken 150615.indd 5
10-07-15 11:31
Inhalt
Inhalt Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Kapitel • 2 Was Sie benötigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Ein Satz Bauteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3 Kostenlose Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3.1 Gratis Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3.2 Arduino-IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3.3 HyperTerminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3.4 PC-Oszilloskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Kapitel 3 • Ein Übungsprojekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Hardware-Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Ihr erstes Programm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Kapitel 4 • Die ersten Schritte (LED, Taster, serielle Verbindung) . . . . . . . . . . . . . . . 23 4.1 Blink-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 Wechselblink-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.3 Serieller Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.1 Im Serial Monitor des Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.2 Ohne zu programmieren: ein schönes Bild auf dem PC. . . . . . . . . . . . . . . . . . . 35 4.4 Serielles Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.1 Der Sketchverlauf funktioniert nicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.2 Das Resultat stimmt nicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.3 Bei mehreren Variablen stimmt etwas nicht . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.5 ASCII-Tabelle selbst gemacht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6 Taster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.7 Retriggerbarer Zeitschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.8 Wechselschalter (Flipflop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.9 Würfel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.10 Code-Klingel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
●7
Arduino Entdecken 150615.indd 7
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Kapitel 5 • A/D-Wandlung (Poti, LDR, Spannungen, PWM, Sensoren) . . . . . . . . . . . . . 63 5.1 Blink-LED mit stufenlos einstellbarer Frequenz . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.2 Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3 Nachtlicht (Dämmerungsschalter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.4 Belichtungsmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.5 Kinderzimmer-Lichtalarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.6 LED mit stufenlos einstellbarer Helligkeit (PWM) . . . . . . . . . . . . . . . . . . . . . . . . 76 5.7 Energie-Verbrauchsmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.8 Stiller Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.9 Analyse eines Transistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.10 Die Pflanze verdurstet! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Kapitel 6 • Regeln und Messen mit Power (Motoren, Sensoren, Sound) . . . . . . . . . . . 97 6.0.1. Versorgung über den USB-Anschluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.0.2. Externe Versorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.1 Elektromotor ansteuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.2 Elektromotor mit stufenloser Drehzahleinstellung . . . . . . . . . . . . . . . . . . . . . . 107 6.3 Drehzahlmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.4 Tempomat (konstante Drehzahl mit Regelschleife) . . . . . . . . . . . . . . . . . . . . . . 118 6.5 Infrarot-Überwachung von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.6 Ultraschallsensor (range finder) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.7 Neigungs- oder Bewegungssensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.8 Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.8.1 EEPROM: bleibende Erinnerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.8.2 Flash-Speicher (Programmspeicher) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Texte (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 6.9 Wechselspannung schalten mit Relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.10 Polizeisirene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Kapitel 7 • W ir alle werden verrückt geboren. Manche bleiben es. (KI, Arduino und Internet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
●8
Arduino Entdecken 150615.indd 8
10-07-15 11:31
Inhalt
7.1 Meine Lieblingsfarbe (künstliche Intelligenz) . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Optional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 7.2 Menschensensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.3 Elektrische Kerze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 7.4 Florett- und Degen-Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.5 Who’s that knocking at my door (Klopfsensor) . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 Nervtöter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 7.7 Tetris mit 126 LEDs und Charlieplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 7.7.1 Charlieplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Flash-Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 7.7.2 Tetris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 7.8 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 7.8.1 Schalter über das Internet kontrollieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 7.8.2 Eine LED schalten über das Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 7.8.3 Internet und Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 7.9 Drahtlose Steuerung eines Relais (Funkverbindung) . . . . . . . . . . . . . . . . . . . . . 192 7.10 Ein Arduino selbstgebaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.10.1 Stand-alone-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 7.10.2 Mit USB-Anschluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.10.3 Demoprojekt mit selbstgebautem Arduino: einstellbares Blinklicht . . . . . . . . . 208 Kapitel 8 • Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 8.1 Einstellbare Spannungsversorgung (1,2...13 Volt) . . . . . . . . . . . . . . . . . . . . . . 211 8.2 Das Shield komplett bestückt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
●9
Arduino Entdecken 150615.indd 9
10-07-15 11:31
Kapitel 1 • Was ist ein Arduino?
Kapitel 1 • Was ist ein Arduino? Ein Arduino ist ein Mikrocontroller auf einer Leiterplatte. Im Gegensatz zu Computern - wie einem PC - ist ein Arduino nicht dafür geschaffen, um mit Menschen zu arbeiten, sondern mit Maschinen. Es gibt keine einfache Möglichkeit, eine Tastatur oder einen Monitor anzuschließen, aber umso mehr Möglichkeiten, den Arduino mit Geräten oder Teilen davon wie Taster, LEDs, einstellbaren Widerständen, Temperatur- oder Infrarot-Sensoren zu verbinden.
Bild 1. Ein Arduino Uno. Nummer
Komponente
1
Reset-Taste
2
USB-Anschluss
3
Buchsenleiste
4
LED an Pin 13
5
Kommunikations-LEDs
6
An/Aus-LED
7
Quarz
8
5-Volt-Regler
9
Externe Versorgung (+ in der Mitte)
10
ATmega328P-Mikrocontroller
11
Buchsenleiste
Tabelle 1. Die Komponenten des Arduino Uno. Da der Arduino programmiert werden kann, ist er flexibel einsetzbar. Sie treffen das Hirn des Arduino, einen Mikrocontroller, auch in Waschmaschinen, DVD-Recordern, Fernbedie-
● 11
Arduino Entdecken 150615.indd 11
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
nungen, Kaffeemaschinen und dergleichen an. Darin bedienen sie Motoren und Heizelemente, entziffern Signale einer Fernbedienung, messen die Temperatur und vieles mehr. Da in vielen Systemen ein Mikrocontroller eingebaut ist, spricht man auch von embedded systems, wörtlich: eingebetteten Systemen. Solche Anwendungen kann man auch selbst erstellen. Mit ein paar einfachen Bauteilen und den Informationen aus diesem Buch lässt sich eine große Anzahl solcher eingebetteter Geräte bauen. Bei jedem Projekt wird ausführlich beschrieben, was auf dem Gebiet der Soft- und der Hardware passieren muss. Genauso wichtig wie diese Beschreibungen sind die Schaltbilder, Zeichnungen und Fotos. So lässt sich gut verstehen, wie und warum die Projekte funktionieren und wie sie bequem eigenen Vorstellungen und Erfordernissen angepasst werden können.
● 12
Arduino Entdecken 150615.indd 12
10-07-15 11:31
Kapitel • 2 Was Sie benötigen
Kapitel • 2 Was Sie benötigen In diesem Kapitel werden Dinge besprochen, die notwendig sind, um mit diesem faszinierenden Hobby loslegen zu können. Natürlich benötigen Sie dieses Buch, am besten ein eigenes Exemplar, damit Sie nach Herzenslust Anmerkungen hineinschreiben können. Eigene Erfahrungen, die Sie bei den Projekten gemacht haben und eigene Informationen über die Bauteile machen das Buch umso wertvoller. Ja, das erste Mal etwas in ein neues Buch zu kritzeln, fällt nicht leicht, aber man gewöhnt sich sehr schnell daran! 2.1 Arduino
Es gibt Dutzende von Arduino-Typen im Handel, einer schöner als der andere. In diesem Buch verwenden wir ein einfaches Modell, den Arduino Uno, mit folgenden Eigenschaften. Eigenschaft
Wert
Mikrocontroller
ATmega328P
Betriebsspannung
5V
Spannungsversorgung
7-12 V (Plus auf Mittelpin, 500 mA oder mehr) oder über USB-Anschluss.
Digitale Ein- und Ausgänge
14 (davon 6 PWM)
Analoge Eingänge
6
Maximaler Strom pro I/O-Anschluss
40 mA1
Maximaler Strom aus 3,3 V-Pin
50 mA
Programmspeicher, Flash
32 KB (Bootloader belegt 0,5 KB)
Datenspeicher, RAM
2 KB
Datenspeicher, EEPROM
1 KB
Takt
16 MHz
Tabelle 2. Die wichtigsten Eigenschaften des Arduino Uno.1 Dies ist mehr als ausreichend für die Projekte in diesem Buch. Der Arduino Uno ist so leistungsfähig, dass wir ihn sogar verwenden, um ... Arduino Unos herzustellen. 2.2 Ein Satz Bauteile
Zu diesem Buch können Sie einen Satz Bauteile mit einer leeren Experimentierplatine erwerben. Dann wissen Sie, dass Sie die richtigen Bauteile haben und müssen keine selber zu besorgen. Wir stellen aus dem Set ein Shield (Bild 2) her, damit Sie alle Projekte in der 1 Der maximale Strom pro Pin hängt von der Anzahl der Pins und deren Verteilung auf dem Arduino ab. Wird nur ein Pin eingesetzt, so beträgt das absolute Maximum 40 mA (das empfohlene Maximum ist 20 mA). Kommen mehrere Pins zum Einsatz, wird es schnell zu kompliziert, ein Maximum zu berechnen. Am besten, so die Faustformel, sollte der Strom höchsten 14 mA betragen. Wenn mehr Strom erforderlich ist, muss man im Datenblatt genau überprüfen, wie weit man den Controller belasten kann.
● 13
Arduino Entdecken 150615.indd 13
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Praxis ausprobieren können. Wenn wir fertig sind, besitzt das Shield unter anderem LEDs, Taster, ein Relais, einen Motortreiber, einen Lichtsensor, Lautsprecher/Mikrofon und diverse Anschlüsse für externe Geräte.
Bild 2. Das Shield mit allen Aufbauten. 2.3 Kostenlose Software 2.3.1 Gratis Download
Zu diesem Buch gehört ein kostenloses Downloadpaket mit allen Quellcodes. Sie können dieses Paket von der Elektor-Webseite herunterladen. Mit den fertigen Quellcodes bleibt Ihnen die Mühe erspart, die Codes selber einzutippen (und dabei Fehler zu machen). Das Download-Paket ist eine gepackte Datei mit einer Größe von etwa 1 MB (ausgepackt ungefähr 3 MB). Sie können die Software an einem beliebigen Ort auf dem PC auspacken, Sie sollten sich aber merken, wo Sie sie untergebracht haben. In dem Downloadpaket finden Sie zu jedem Programm einen Sketch (wenn nötig) und alle anderen Dokumente, Bilder und Programme, auf die im Buch verwiesen wird. Die einzigen Ausnahmen sind einige Installationsdateien, von denen Sie aber Links im Text finden.2 2.3.2 Arduino-IDE
Die Arduino-IDE ist ein Software-Paket zum Programmieren von Arduinos. Die Installationshinweise zu dem Paket finden Sie im Kapitel 3, in dem zum ersten Mal ein Programm erstellt wird. 2.3.3 HyperTerminal
Die Arduino-IDE besitzt einen Serial Monitor, der mit dem Arduino kommunizieren kann. Das ist zwar prima, aber die Anzeige läuft über den sichtbaren Bereich des Fensters hinaus und produziert nicht so schöne Fenster wie zum Beispiel das HyperTerminal, wo man für eine ordentliche Darstellung nichts programmieren muss. 2 Dies betrifft Installationsprogramme, die von der Version des Windows auf Ihrem PC abhängig sind.
● 14
Arduino Entdecken 150615.indd 14
10-07-15 11:31
Kapitel • 2 Was Sie benötigen
Bild 3. Ohne Programmieren: ein schönes Fenster im HyperTerminal. Im Download befindet sich das Installationspaket. Starten Sie es und folgen Sie den Anweisungen. Achtung: Wenn nach einiger Zeit ein Wahlfenster erscheint, wählen Sie nur die HyperTerminal Private Edition und besser nicht Hypersend Free Account! 2.3.4 PC-Oszilloskop
Störungen auf der Spannungsversorgung, merkwürdig reagierende Schaltungen: Manchmal ist es praktisch, mit einem einfachen Oszilloskop Störungen auf die Schliche zu kommen und sie zu beheben. Außerdem ist es schön und lehrreich, Signale zu visualisieren. WinOscillo ist hier eine gute und kostenlose Lösung.3
Bild 4. Das Software-Oszilloskop WinOscillo. Das Software-Oszilloskop WinOscillo verwendet die Soundkarte des PCs, um Signale zu erfassen. Dies ist mit Einschränkungen verbunden. So muss eine kleine Schaltung zwischen der Signalquelle und dem PC eingesetzt werden, die die Soundkarte schützt.
3 S ie können alle Projekte in diesem Buch auch ohne Oszilloskop durchführen. Möchten Sie dies tun, so dürfen Sie dieses Kapitel überschlagen.
● 15
Arduino Entdecken 150615.indd 15
10-07-15 11:31
10 k
Arduino entdecken - 45 nachbausichere Projekte für den Uno
common right left
MIC in
2k2
left or right
2k2 LIN
measuring pens
common
Bild 5. Schutzschaltung am Mic- oder Line-Eingang des PCs Die oben stehende Schaltung wird von mir gebraucht, um die Spannung am Mikrofon- oder Line-Eingang der Soundkarte auf 0,9 Volt zu beschränken.4
1. A chten Sie darauf, dass die Erde am Mikrofonstecker auch wirklich auf Erdpotential liegt. Die Erde dieser Schaltung muss auch tatsächlich mit der Erde Ihrer Schaltung verbunden sein. Der andere Anschluss ist der Messpin. Ich verwende für Erde ein schwarzes Kabel, für den Messpin ein rotes. So kann man die Anschlüsse niemals verwechseln. Im PC sind alle Erden (Mikrofon, RS232, USB und so weiter) miteinander verbunden. Schließen Sie die Kabel falsch an, so verursachen Sie einen Kurzschluss, was Sie eine Sicherung kosten kann - oder Teureres. 2. Natürlich müssen Sie im Windows-Mixer das Mikrofon einschalten und auf Maximum drehen. Eine eventuelle Rauschunterdrückung und andere Optionen müssen ausgeschaltet werden. 3. Drehen Sie das Poti in der Schaltung auf null, bevor Sie den Stecker in die Soundkarte stecken und drehen es dann langsam auf, bis das Signal gut zu hören ist. Sie können das Signal auch gut über den internen PC-Lautsprecher hören.
WinOscillo kann das Signal auch aufzeichnen, Oszillogramme erstellen und speichern. In diesem Buch werden Sie solchen Oszillogrammen ab und an begegnen.
4 Ausgehend von einer Versorgungsspannung von 5 Volt. Wenn Sie mit höheren Spannungen arbeiten, müssen Sie andere Widerstände einsetzen.
● 16
Arduino Entdecken 150615.indd 16
10-07-15 11:31
Kapitel 3 • Ein Übungsprojekt
Kapitel 3 • Ein Übungsprojekt Zieles dieses Projekts ist es, die Arduino-Software zu installieren und den Arduino mit einem kleinen Programm zu testen. Software
Zur Installation der Arduino-IDE sucht man im Browser die Arduino-Website auf: arduino.cc/en/Main/Software Suchen Sie das Paket, das zu Ihrem Betriebssystem auf dem PC passt. Bei Windows wählt man den Windows Installer (dorthin nach unten scrollen). Laden Sie den Installer herunter und folgen Sie weiterhin den Anweisungen, um die Arduino-IDE zu installieren. Sie können die Hardwaretreiber direkt mit installieren oder den Anweisungen im nächsten Kapitel folgen. Hardware-Treiber
Die Hardware für dieses Projekt besteht aus dem Arduino Uno und einem USB-Kabel. Wir gehen in diesem Buch davon aus, dass Sie mit Windows arbeiten und der PC mit dem Internet verbunden ist. Schließen Sie das USB-Kabel am Arduino an und stecken Sie das andere Ende in einen freien USB-Port des PCs. Eine kleine grüne LED mit der Beschriftung ON leuchtet auf und eventuell beginnt eine kleine gelbe LED mit dem Platinenaufdruck L zu blinken. Inzwischen hat Windows entdeckt, dass etwas Neues angeschlossen wurde und macht sich auf die Suche nach dem Treiber.
Bild 7. Windows auf Treibersuche.5 Nach einiger Zeit, abhängig von der Geschwindigkeit des PCs und vom Ort, von dem Windows den Treiber holt (vom eigenen PC oder der Microsoft-Webseite), ist der Treiber installiert und das Gerät als Arduino Uno erkannt. Ihm wird auch ein freier COM-Port zugewiesen, die (virtuelle) Schnittstelle, über die PC und Arduino miteinander kommunizieren. Bei mir war es COM5, aber das kann und dürfte bei Ihnen eine andere Nummer sein. Es empfiehlt 5 Alle Screendumps wurden mit Windows 7, 64 bit, englische Version erstellt.
● 19
Arduino Entdecken 150615.indd 19
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
sich, den Arduino mit einem kleinen Aufkleber mit der COM-Port-Nummer zu versehen, weil Sie diese Nummer stets parat haben müssen.
Bild 8. Der Treiber wurde gefunden und der Arduino Uno erkannt. Es kann passieren, dass Windows meldet, dass die Installation nicht gelungen ist. Klicken Sie dann auf Start und geben “Geräte-Manager“ ein (in Windows 8 einfach ins Startfenster). Öffnen Sie “Anschlüsse (COM & LPT)“, dann sehen Sie den Arduino-Eintrag. Klicken Sie mit rechts auf den Text “Arduino Uno“ und wählen Sie “Treibersoftware aktualisieren“. Geben Sie an, dass Sie auf dem eigenen PC nach dem Treiber suchen möchten (“Auf dem Computer nach Treibersoftware suchen“) und navigieren dann zur Datei “arduino.inf“ im “Driver“-Ordner der Arduino-IDE. Wählen Sie NICHT den Ordner “FTDI USB Drivers“! Wenn Sie diese Datei ausgewählt haben, erledigt Windows den Rest der Installation für Sie. Wenn Sie die COM-Port-Nummer vergessen haben, können Sie sie immer im Geräte-Manager nachsehen. Allerdings funktioniert das nur, wenn der Arduino über das USB-Kabel angeschlossen ist. Ziehen Sie das Kabel heraus, ist der COM-Port wieder unsichtbar. Ihr erstes Programm
Zum Test lassen wir die kleine gelbe LED auf dem Arduino Uno blinken. Dazu brauchen wir ein Demo-Programm in der Arduino-IDE unter: File, Examples, 01.Basics, Blink.
Bild 9. Das Beispielprogramm Blink.
● 20
Arduino Entdecken 150615.indd 20
10-07-15 11:31
Kapitel 3 • Ein Übungsprojekt
Das Programm wird automatisch geladen. Wenn Sie nach dem Start der Arduino-IDE zu schnell sind, kann es passieren, dass das Beispielprogramm-Menu nicht funktioniert. Die IDE benötigt nämlich immer ein wenig Zeit, um alle Beispielprogramme zu ermitteln. Schließen Sie das Menü wieder, warten ein wenig ab und versuchen es dann erneut. Wir machen uns jetzt noch keine Gedanken über Aufbau und Funktionsweise des Programms, dazu kommen wir erst im nächsten Kapitel. Das Programm muss nun in etwas umgesetzt werden, was der Arduino versteht und danach zu ihm gesendet werden. Schließen Sie den Arduino an und drücken Sie auf den Pfeil im Kreis (Nummer 1 in Bild 11). Unten erscheint ein Balken, der anzeigt, dass das Programm arbeitet.
Bild 10. Die Arduino-IDE sucht einen anderen COM-Port. Die IDE muss wissen, an welchem COM-Port der Arduino angeschlossen ist. Wir hätten den Port über “Tools, Serial Port“ einstellen können, aber da wir faul sind, überlassen wir diese Aufgabe der IDE. Meist klappt das, wenn aber nicht, erhalten Sie eine Meldung wie oben. Stellen Sie den richtigen COM-Port ein und drücken Sie auf OK.6 Nach einiger Zeit beginnen die gelben LEDs mit den Bezeichnungen TX für transmit (senden) und RX für receive (empfangen) zu blinken. Dies zeigt eine Kommunikation mit dem Arduino an. Wenn das Geblinke endet, verschwindet der Balken und es erscheint der Text Done uploading. (Nummer 2 in folgendem Bild). Auf dem Arduino blinkt die gelbe LED mit der Markierung L im Sekundenrhythmus.
6 Es kann passieren, dass Sie die Meldung out of sync, error 0x00 erhalten, wenn der COM-Port nicht stimmt und die IDE den richtigen Port nicht findet. Geben Sie dann den richtigen Port über Tools, Serial Port ein.
● 21
Arduino Entdecken 150615.indd 21
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Bild 11. Upload des Sketches zum Arduino. Glückwunsch, Sie haben soeben Ihr erstes Arduino-Programm erstellt. Lesen Sie das Programm ruhig durch und finden Sie heraus, wie sich der Blinkrhythmus ändern lässt, zum Beispiel zwei Sekunden an und eine halbe aus. Die Zeit im Delay-Befehl ist in Millisekunden angegeben, in Tausendstel-Sekunden. Spielen Sie ruhig, Sie können nichts kaputt machen!
● 22
Arduino Entdecken 150615.indd 22
10-07-15 11:31
Kapitel 4 • Die ersten Schritte (LED, Taster, serielle Verbindung)
Kapitel 4 • D ie ersten Schritte (LED, Taster, serielle Verbindung) Wir beginnen mit einer Reihe von Projekten, die LEDs und Taster verwenden. Die ersten Projekte sind sehr einfach, es wird aber später immer schwieriger. Da dabei auch immer C++-Befehle besprochen werden, ist es sinnvoll, wenn Sie die Kapitel, die Sie nicht praktisch ausprobieren wollen, doch zumindest durchlesen. 4.1 Blink-LED
Wir wiederholen das Programm aus der Übung, aber schließen diesmal eine eigene LED an, berechnen den Vorwiderstand und schreiben das Programm auch selber. Wir lassen die LED auf dem Arduino außer Acht und löten eine LED auf das Experimetier-Shield. Oder eigentlich zwei, eine weitere schon für das folgende Projekt. Eine LED erfordert immer einen Vorwiderstand, der dafür sorgt, dass der Strom durch die LED nicht zu hoch wird. Ohne Widerstand würde die LED zerstört und der Arduino wahrscheinlich auch.
Bild 12. Angaben aus dem Datenblatt der LED. Wir ziehen das Datenblatt der LED zu Rate. Ein wichtiger Parameter ist der Vorwärtsstrom (in Englisch: forward current). Der maximale Wert ist 20 mA, der empfohlene 16…18 mA. Der Vorwiderstand muss dafür sorgen, dass dieser Wert nicht überschritten wird. Neben der LED muss der Vorwiderstand auch den Arduino schützen. Der maximale Strom, den der Arduino an einem Pin liefern kann, beträgt 40 mA, aber nur, wenn nur ein Pin Strom liefern muss. Bei mehreren Stromlieferanten sinkt der Wert und das Maximum ist nur schwer zu bestimmen. Deshalb halten wir uns an den empfohlenen Maximalstrom von 14 mA. Damit liegen wir auf jeden Fall auf der sicheren Seite und wir müssen uns keine Gedanken darüber machen, was denn alles so angeschlossen ist. Die 14 mA liegen etwas unter den empfohlenen 18…20 mA der LED, aber die LED leuchtet immer noch sehr deutlich. Der nächste wichtige Wert ist der Spannungsabfall über der LED (in Englisch: forward voltage). Der mittlere Wert beträgt 2 Volt. Das bedeutet, dass, wenn wir die LED mit dem
● 23
Arduino Entdecken 150615.indd 23
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Vorwiderstand an +5 Volt anschließen, über der LED dann 2 Volt anliegen und über dem Widerstand der Rest von 5-2=3 Volt. Arduino pin
R
5 volt
5 - 2 = 3 volt
LED
2 volt GND
Bild 13. Verteilung der Spannung über LED und Widerstand. Wir wissen über die Spannung über dem Widerstand Bescheid und kennen den gewünschten Strom durch die LED (und damit auch durch den Widerstand) von 14 mA. Mit dem Ohmschen Gesetz können wir nun den Wert des Widerstands ausrechnen:
U=I*R
[Formel 1]
Dabei ist:
U = Spannung (in Volt) I = Strom (in Ampere) R = Widerstand (in Ohm)
Wir stellen die Formel um nach R = U/I und tragen die Werte ein: R = 3/(14·10-3) = 214 Ω. Einen solchen Widerstand gibt es nicht, Standardwerte sind 200 Ω oder 220 Ω. Wir nehmen 220 Ω, sodass der Strom schließlich etwas unter 14 mA liegt (nämlich 3/220 = 13,6 mA). Der Farbcode des Widerstands ist rot-rot-braun. Viele Bauteile, auch die LEDs, besitzen eine Plus- und eine Minusseite7. Wenn Sie eine LED genau ansehen, befindet sich an einem Anschluss innen eine breitere Fläche als an dem anderem. Dieser Anschluss ist Minus. Meist ist auch der Anschlussdraht ein wenig kürzer. Im Schaltbild erscheint die LED (jede Diode) als Pfeil mit einem Strich davor. Als Eselsbrücke können Sie sich merken, dass der Strich immer Minus bedeutet.
7 Formell heißt Plus Anode und Minus Kathode.
● 24
Arduino Entdecken 150615.indd 24
10-07-15 11:31
Kapitel 4 • Die ersten Schritte (LED, Taster, serielle Verbindung)
Bild 14. Plus- und Minus-Seite einer LED. Wir müssen nun entscheiden, an welchen Arduino-Pins wir die beiden LEDs auf dem Shield anschließen wollen. Dort haben wir nur Zugriff auf die Pins, die mit den vier Stiftleisten (auch Header genannt) des Shields durchverbunden sind. Markierung
Bedeutung
0->RX
Serieller Eingang (Empfang)
1<-TX
Serieller Ausgang (Senden)
0 - 13
Digitale Ein- und Ausgänge
~
Optional: PWM
A0 - A5
Analoge Eingänge
Vin
Die Spannung auf dem Versorgungsstecker
GND
0 (Erde)
5V
+5 Volt
3.3V (auch 3V3)
+3,3 Volt
RESET
Reset-Pin
AREF
Referenzspannung für analoge Eingänge. 9
SCLa
I2C Takt
SDAa
I2C Daten
IOREFa
Anzeige Shield-Spannung
a
8
Tabelle 3. Die Header-Anschlüsse des Arduino Uno.89 Die oben stehende Tabelle zeigt, welche Funktionen die einzelnen Pins haben. Die meisten Funktionen sagen Ihnen vielleicht nichts, aber wir haben sie dennoch aufgeführt, damit Sie bei späteren Projekten diese Tabelle als Referenz gebrauchen können. Die Pins, die mit a markiert sind, gibt es nicht bei allen Arduino-Uno-Versionen. In diesem Buch setzen wir diese Funktionen aber ohnehin nicht ein, so dass es uns nicht stört, ob sie nun vorhanden sind oder nicht. 8 Die Pins 10-13 sind auch SPI-Bus, die Pins 2-3 können für externe Interrupts verwendet werden. 9 Achtung: Verwenden Sie eine externe Spannung am Pin AREF (minimal 0 und maximal +5 Volt), befehlen Sie analogReference VOR dem analogRead-Befehl, sonst wird der Arduino intern kurzgeschlossen und kann unwiderruflich beschädigt werden.
● 25
Arduino Entdecken 150615.indd 25
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Wir wählen zwei Anschlüsse, einen ohne (Pin 2) und einen mit PWM (Pin 5). Die PWM-Funktion besprechen wir in Projekt 5.6.
2
5
220
220
Arduino Uno
GND
LED
Bild 15. Die Schaltung mit den beiden LEDs. In folgender Abbildung sind zwei LEDs auf dem Shield zu sehen. Neben jedem Header-Pin gibt es ein Loch, das mit dem Pin verbunden ist. Achten Sie gut darauf, dass die LEDs richtig herum angeschlossen werden. Die Plus-Seiten liegen bei den Pins, die Minus-Seiten an den Widerständen. Rechts ist zu sehen, wie die beiden Widerstände mit einem Draht verbunden am GND-Pin angeschlossen sind. Sie können die LEDs auch anders auf dem Shield platzieren, aber bedenken Sie, dass wir in späteren Projekten weitere Bauteile anbringen und dafür Platz sein muss. In Bild 2 ist das Shield mit voller Bestückung zu sehen. Sie sollten deshalb die LEDs ganz in der Ecke anbringen, genau wie es die Abbildung zeigt.
Bild 16. Die LEDs auf dem Shield (Teil der Ober- und Unterseite).
● 26
Arduino Entdecken 150615.indd 26
10-07-15 11:31
Kapitel 5 • A/D-Wandlung (Poti, LDR, Spannungen, PWM, Sensoren)
Kapitel 5 • A /D-Wandlung (Poti, LDR, Spannungen, PWM, Sensoren) Eine Anzahl von Arduino-Pins ist in der Lage, ein analoges in ein digitales Signal umzurechnen. Diese Anschlüsse sind markiert mit A0 bis A5. Das analoge Signal ist eine Spannung im Bereich 0...5 Volt, das Resultat der Berechnung ein digitaler Wert im Bereich von 0...1023. 5.1 Blink-LED mit stufenlos einstellbarer Frequenz
Wir bauen eine LED, deren Blinkfrequenz sich mit einem Potentiometer einstellen lässt. Wie benötigen für dieses Projekt eine neue Hardware, nämlich ein Trimmpotentiometer oder kurz Trimmpoti. Es handelt sich um ein rundes Bauteil mit drei Anschlüssen. Bei einem liegenden Modell befinden sich zwei Anschlüsse nebeneinander, die an +5 Volt und GND angeschlossen werden. Wir sind es gewohnt, dass “nach rechts drehen“ immer “mehr“ bedeutet. Deshalb legen wir die +5 Volt auf die rechte Seite. 23 Einer der Anschlüsse befindet sich auf der anderen Seite, er ist intern mit dem Schleifer verbunden. Diesen Pin verbinden wir mit dem Arduino-Anschluss A0. Wenn man am Trimmpoti dreht, bewegt sich der Schleifer über eine Widerstandsbahn zwischen den beiden anderen Pins. Dreht man das Trimmpoti ganz nach links, so ist der Schleifer mit dem linken Pin verbunden und die Spannung am Schleifer beträgt 0 Volt. Dreht man ganz nach rechts, beträgt die Spannung +5 Volt. Ein so angeschlossenes Trimmpoti wird auch variabler Spannungsteiler genannt, der alle Spannungen zwischen 0 Volt und +5 Volt abgreifen kann.
Arduino Uno
+5V
A0
GND
10k
Bild 27. Anschluss eines Potis an den Arduino. Sie können das Trimmpoti auf dem Shield wie im Foto platzieren und den Schleifer mit A0 verbinden. Die Drähtchen für 0 Volt und 5 Volt schließt man an den Widerständen respektive LEDs an.
23 Bei einem Wasserhahn ist es allerdings genau umgekehrt, weil “auf“ immer links herum dreht. Gewohnheitssache!
● 63
Arduino Entdecken 150615.indd 63
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Bild 28. Das Trimmpoti auf dem Shield ist angeschlossen. Das Resultat der analogen Messung ist ein Wert zwischen 0 und 1023, wobei 0 für 0 Volt steht und 1023 für +5 Volt (außer, wenn mit analogReference eine andere Referenz gewählt wird). Befehl
Bedeutung
analogRead(pin)
Liest den analogen Wert am Pin. Die Antwort ist eine Integer-Zahl mit dem Bereich 0...1023
analogReference(mode)
Damit lässt sich die maximale Spannung für die analoge Messung einstellen. Achtung: Wenn Sie eine maximale Referenz angeben, darf der Messwert nicht darüber liegen! Folgende Modi sind verfügbar: DEFAULT = Die Betriebsspannung des Mikrocontrollers, beim ATmega328 des Arduino Uno +5 Volt. Diese Einstellung gilt auch, wenn keine analogReference angegeben wird. INTERNAL = Eine intern erzeugte Spannung von (beim ATmega328 des Arduino Uno) 1,1 Volt. EXTERNAL = Die Spannung (im Bereich 0...+5 Volt), die an Pin AREF angeschlossen wird. Achtung: Wird eine externe Referenz verwendet, muss der Befehl analogReference VOR dem Befehl analogRead erfolgen, sonst gibt es im Arduino einen Kurzschluss und er kann irreparabel beschädigt sein.
Tabelle 15. Analoge Befehle. 24
24 S ie erwarten vielleicht den Befehl analogWrite() in dieser Tabelle. Dieser Befehl betrifft aber PWM und nicht ein analoges Signaal. PWM und der damit verbundene Befehl analogWrite() wird in Kapitel 5.6 besprochen.
● 64
Arduino Entdecken 150615.indd 64
10-07-15 11:31
Kapitel 5 • A/D-Wandlung (Poti, LDR, Spannungen, PWM, Sensoren)
Wir messen den Wert, den das Trimmpoti an den analogen Pin A0 legt. Das Resultat wird in einem Delay-Befehl eingebaut. Damit man das Blinken der LED auch wirklich sehen kann, wird zu einer Messung der Wert 50 addiert, so dass das Blinkintervall zwischen 50...1073 Millisekunden einstellbar ist. int pot = A0; int led = 2; int state = false; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, state); state=!state; delay(analogRead(pot)+20); }
Wir verwenden nur einen Delay-Befehl und setzen die Variable state ein, um zu bestimmen, ob die LED ein- oder ausgeschaltet werden soll. Nach jedem “Blink“ ändert die Variable state ihren Inhalt. 5.2 Voltmeter
In diesem Projekt messen wir eine Spannung an Pin A0 und zeigen sie auf dem PC an. Wir verwenden die gleiche Hardware wie im letzten Projekt. Der erste Schritt ist, die Spannung am analogen Pin zu messen. Wir haben in der Tabelle erfahren, dass das Resultat eine Int-Variable ist, deshalb definieren wir die Variable “value“, in der wir den Messwert speichern, als int. Danach rechnen wir den Messwert in eine Spannung um. Der Messwert ist ein Wert zwischen 0 und 1023, wobei 1023 für die Referenzspannung Aref steht. Die Formel für diese Umrechnung ist:
Aref voltage = value * 1023
[Formel 5]
Da wir keine analogReference angeben (und auch nichts am Aref-Pin anschließen), gilt der Default-Wert von 5 Volt:
5 voltage = value * 1023
[Formel 6]
Wir definieren eine Variable mit dem Namen voltage. Das Ergebnis ist eine Zahl mit Stellen hinter dem Komma, also eine Dezimalzahl. Wir müssen deshalb den Variablentyp float ein-
● 65
Arduino Entdecken 150615.indd 65
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
setzen. Man sollte erwarten, dass diese Berechnung das richtige Resultat liefert. Das ist aber leider nicht so. Mikrocontroller beginnen immer rechts des Gleichheitszeichens zu rechnen, also zuerst mit “value*5/1023“. Die einzige Variable rechts ist eine Integer, alle Zahlen sind ganze Zahlen, also auch Integer. Deshalb wird die Berechnung im Integerformat vorgenommen und die Dezimalstellen gehen verloren, auch wenn das Resultat dann in einer Float-Variablen untergebracht wird. Das Ergebnis ist immer eine ganze Zahl, auch wenn sie dann mit zwei Dezimalstellen wiedergegeben wird (also 1,00 oder 2,00). voltage = value · 5.0/1023;25 [Formel 7]
Das ist die Lösung! Man setzt auch auf der rechten Seite eine Float-Zahl oder -Variable ein, zum Beispiel fügt man einer der Zahlen eine Dezimalstelle hinzu wie 5.0 anstelle von 5. Das ändert den Wert nicht, aber der Mikrocontroller sieht eine Float-Zahl und führt die ganze Berechnung auf Float-Ebene aus. Die Dezimalstellen bleiben erhalten! Für Einsteiger ist es der am häufigsten vorkommende Fehler, Berechnungen mit falschen Variablentypen auszuführen. Passen Sie deshalb gut auf! Wenn Sie selber einen Sketch mit Berechnungen schreiben, geben Sie ein paar Testwerte auf den PC aus, so dass Sie kontrollieren können, ob alles in Ordnung ist. 26 int pot = A0; int led = 2; int value; float voltage; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { value = analogRead(pot); voltage = value*5.0/1023; // measurement Serial.write(27); Serial.print(“[2;5H“); Serial.print(“Measurement “); Serial.print(value); Serial.print(“ units
“);
// voltage Serial.write(27); 25 Im Text verwenden wir nach europäischer Konvention immer ein Komma für das Dezimaltrennzeichen. In einem Sketch (auch wenn er hier gedruckt wird) muss aber immer der Punkt als “amerikanisches“ Dezimaltrennzeichen eingesetzt werden. 26 Obwohl es nur um ganze Zahlen geht, hätten wir auch die Variable value als float definieren können, allerdings wäre so Speicher verschwendet worden. Dann hätte sich das ganze Problem nicht ergeben, da auf der rechten Seite auch eine Float-Zahl (nämlich value) gestanden hätte.
● 66
Arduino Entdecken 150615.indd 66
10-07-15 11:31
Kapitel 6 • Regeln und Messen mit Power (Motoren, Sensoren, Sound)
Kapitel 6 • R egeln und Messen mit Power (Motoren, Sensoren, Sound) In diesem Kapitel beschäftigen wir uns mit diversen Projekten, die mehr Strom benötigen als die Arduino-Pins liefern können und mit einer höheren Spannung arbeiten. Dann ist eine externe (einstellbare) Spannungsversorgung erforderlich, wie sie im Anhang 8.1 beschrieben wird. Aber was ist, wenn die Applikation eine Spannung von +5 Volt benötigt? Können wir dann den +5-Volt-Anschluss des Arduino verwenden? Mit anderen Worten: Wie hoch darf der Strom werden, den wir diesem Anschluss entnehmen? Die Dokumentation des Arduino bleibt in diesem Punkt vage. Wie aber das Schaltbild des Arduino zeigt, scheint der maximale Strom stark von der eingesetzten Versorgung anzuhängen.32 6.0.1. Versorgung über den USB-Anschluss
Dies ist die meist anzutreffende Methode. Der Arduino ist über ein USB-Kabel mit dem PC verbunden, es gibt keine zusätzliche Versorgung. Folgendes Bild zeigt einen Teil der Schaltung des Arduino Uno Rev. 3. Von Pin 1 der USB-Buchse, markiert mit XUSB, verläuft eine Verbindung über Sicherung F1 und endet an USBVCC.
Bild 52. Versorgung über USB. Im folgenden Bild führt diese Verbindung über einen MOSFET FDN340N zu +5 V (und noch weiter zu einem 3,3-V-Spannungsregler). 32 Das Schaltbild ist Teil des Downloads, gilt aber ausschließlich für den Arduino Uno, rev. 3. Für andere Arduinos müssen Sie die Schaltung selber suchen und die Berechnungen anpassen.
● 97
Arduino Entdecken 150615.indd 97
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Bild 53. Versorgung über USB. Das einzige, was sich zwischen USB-Buchse und dem +5 V-Pin befindet, ist die Sicherung und der MOSFET. Die Sicherung ist eine Polyfuse mit 500 mA, das entspricht dem maximalen Strom, den ein USB-Anschluss liefern kann (können soll).33 Der FDN340P-MOSFET verträgt laut Datenblatt einen Dauerstrom von 2 A. Das scheint hoch genug, aber man muss auch die Wärmeabfuhr berücksichtigen. Der Transistor besitzt keinen Kühlkörper. Laut Datenblatt beträgt die höchste Verlustleistung PD = 0,5 W. Da der Spannungsabfall über den MOSFET ungefähr 0,7 V beträgt, lässt sich der dazu gehörende Strom ausrechnen mit der Formel:
P=U*I
[Formel 25]
mit
P = Leistung (W) U = Spannung (V) I = Strom (A)
Wenn wir unsere Werte eintragen, ergibt sich mit: Imax =
PD / U
=
0,5 / 0,7
=
714 mA
[Formel 26]
ein Strom, der höher ist als der Auslösestrom der Polyfuse von 500 mA. Der Arduino benötigt übrigens auch selber Strom, die Faustregel spricht von etwa 50 mA. Den Rest, 450 mA, kann man dem +5-V-Pin entnehmen. 6.0.2. Externe Versorgung
Wir gehen von einer externen Versorgung an der Versorgungsbuchse X1 des Arduino Uno aus. Eine externe Versorgung an der USB-Buchse unterliegt den gleichen Berechnungen wie im vorherigen Anschnitt. 33 Eine Polyfuse ist eine automatische Sicherung. Wird der Strom zu hoch, löst die Sicherung aus, verschwindet der zu hohe Strom wieder, stellt sich die Sicherung nach einiger Zeit zurück, außer, der Strom war so hoch, dass auch die Sicherung beschädigt wurde.
● 98
Arduino Entdecken 150615.indd 98
10-07-15 11:31
Kapitel 6 • Regeln und Messen mit Power (Motoren, Sensoren, Sound)
Wiederum fragen wir das Schaltbild um Rat. Die externe Spannung an X1 wird mit einem NCP1117-Regler nach +5 Volt umgesetzt.
Bild 53. Externe Versorgung. Ein Blick in das Datenblatt des NCP1117 zeigt, dass dieser Regler mehr als 1 A liefern kann.34 Das ist etwas vage, weil es natürlich eine Obergrenze gibt. Es hängt wieder einmal an der Wärmeabfuhr. Der Regler regelt die Spannung der Versorgung auf 5 Volt für den Arduino herunter. Wegen der Schutzdiode D1 zwischen Buchse und Regler fallen schon einmal 0,7 Volt ab.35 Die Energie, die der Regler in Wärme umsetzt, kann wieder mit P=U*I berechnet werden. Da die Arduino-Spannung 5 V beträgt und der Abfall an der Diode 0,7 Volt, ist, ergibt sich folgende Berechnung:
P = (Vin - 5 - 0,7) * I)
[Formel 27]
Die Frage ist, welche Leistung PD der NCP1117 maximal verarbeiten kann. Wir befragen wieder das Datenblatt.
34 Wörtlich: “Output Current in Excess of 1.0 A”. 35 Eine Diode verursacht einen Spannungsabfall von normalerweise 0,7 Volt.
● 99
Arduino Entdecken 150615.indd 99
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Bild 54. Datenblatt des NCP1117. Die Wärme muss vom Regler in die Umgebung überführt werden. Das Datenblatt bietet dazu folgende Formel:
PD =
TJ(max) - TA R0JA
mit: TJ(max) TA R0JA
[Formel 28]
= maximale Junction-Temperatur (150 °C) = Umgebungstemperatur (angenommen 20 °C) = thermischer Widerstand, minimale Fläche (160 °C/W)
Minimale Fläche meint das Lötpad unter dem Regler-IC. Der Hersteller kann es größer machen, um das Pad als Kühlkörper zu gebrauchen. Beim Arduino ist das nicht der Fall, das Pad ist 3 x 3 mm2 klein, das Minimum. Mit den Werten aus dem Datenblatt und einer Umgebungstemperatur von 20 °C ergibt sich PD = 0,813 W. Dies können wir in Formel 1 eintragen und erhalten für 12 Volt einen Maximalstrom von 129 mA und für 7 Volt maximal 625 mA. Der Arduino benötigt natürlich auch selber Strom, die Faustregel spricht von etwa 50 mA. Den Rest kann man dem +5-V-Pin entnehmen.
● 100
Arduino Entdecken 150615.indd 100
10-07-15 11:31
Kapitel 7 • Wir alle werden verrückt geboren. Manche bleiben es. (KI, Arduino und Internet)
Kapitel 7 • W ir alle werden verrückt geboren. Manche bleiben es. (KI, Arduino und Internet) Eine kleine Sammlung bizarrer Sketche und seltsamer Anwendungen. Und dennoch lehrreich! 7.1 Meine Lieblingsfarbe (künstliche Intelligenz)
Der Sketch lernt, ob man gelb oder grün schöner findet und zeigt Ihnen dies mit einer farblich passenden LED an. Im Jahre 1995 sorgte ein Artikel von Watanabe51 für einiges Aufsehen. Er hat Tauben beigebracht, Bilder von Picasso und Monet zu unterscheiden. Die Tauben erhielten als Belohnung Nahrung, wenn Sie gegen einen Knopf pickten, doch nur, wenn gleichzeitig ein Gemälde von Picasso gezeigt wurde. Zunächst pickten die Tauben völlig willkürlich auf den Knopf, aber nach kurzer Zeit nicht mehr bei einem Gemälde von Monet, sondern nur noch bei einem von Picasso. In diesem Projekt lässt der Arduino willkürlich die grüne oder die gelbe LED erstrahlen. Sie können den Arduino für eine dieser Handlungen “belohnen“, indem Sie auf eine Taste drücken. Nach einer Belohnung ist der Arduino eher geneigt, die entsprechende Farbe anzuzeigen. Schließlich hat der Arduino gelernt, welche Farbe Sie am schönsten finden und aktiviert diese LED immer wieder von neuem. Der Sketch lernt genauso wie die Tauben im Experiment. Ist der Sketch also künstlich intelligent? Das Verhalten von Tauben und Arduino ist identisch, also kann die Frage mit “ja“ beantwortet werden. Allerdings funktionieren Taubenhirne anders als der Arduino, also ist die Frage mit “nein“ zu beantworten. Niemand weiß, was in einem Taubenhirn so vor sich geht, aber spielt das eine Rolle? Da dies ein Buch über den Arduino und nicht über Philosophie ist, können wir behaupten, dass ein Sketch, der sich intelligent verhält, intelligent ist, auch wenn es Unterschiede in der Hardware und im Betriebssystem gibt. In dem Projekt leuchtet entweder die gelbe oder grüne LED. Um das zu entscheiden, wirft der Sketch einen “Würfel“.52 Ist der Wurf kleiner als ein bestimmter Wert (nämlich “choice“), so wird die gelbe LED aktiviert, ansonsten die grüne LED. // Wuerfel werfen select = random(1,10); // vergleich mit choice if (select<choice){ digitalWrite(yellowled,HIGH); yellow=1; 51 Watanabe, S., Sakamoto, J., Wakita, M.: “Pigeon’s discrimination of paintings by Monet and Picasso“ in: Journal of the Experimental Analysis of Behavior 63 (1995), S. 165-174 52 Der Würfel hat Werte von 1 bis einschließlich 9, für Kenner von Dungeons & Dragons nichts Außergewöhnliches (der sogenannte d10).
● 147
Arduino Entdecken 150615.indd 147
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
} else{ digitalWrite(greenled,HIGH); yellow=0; }
Um den Arduino für eine der Handlungen zu “belohnen“, drückt man einen Taster. Die Folge ist, dass der Sketch die Chance für die LED-Farbe erhöht, indem er die Variable choice anpasst. if (digitalRead(button) == HIGH) { // das Verhalten belohnen if (yellow==1 and choice<=9){ choice++; } if (yellow==0 and choice>0){ choice--; }
Drücken Sie zum Beispiel den Taster, wenn die gelbe LED aufleuchtet, so wird der Wert von choice um 1 erhöht. Die Chance, dass beim nächsten Wurf die gelbe LED aufleuchtet, erhöht sich, für die grüne LED wird sie Chance geringer. Natürlich hat es keinen Sinn, die Variable größer als 9 werden zu lassen, da mit unserem Würfel nicht höher geworfen werden kann. Als Folge der wiederholten Anpassung lernt der Sketch schließlich, welche Farbe man am schönsten findet und zeigt ausschließlich nur noch diese Farbe. int button = 8; int greenled = 2; int yellowled = 5; int choice=5, select, yellow; void setup() { pinMode(greenled, OUTPUT); pinMode(yellowled, OUTPUT); pinMode(button, INPUT); randomSeed(analogRead(5)); } void loop(){ // Wuerfel werfen select = random(1,10); // vergleich mit choice if (select<choice){ digitalWrite(yellowled,HIGH);
● 148
Arduino Entdecken 150615.indd 148
10-07-15 11:31
Kapitel 7 • Wir alle werden verrückt geboren. Manche bleiben es. (KI, Arduino und Internet)
yellow=1; } else{ digitalWrite(greenled,HIGH); yellow=0; } // auf die belohnung warten for (int t=0;t<100;t++){ if (digitalRead(button) == HIGH) { // beloon huidige gedrag if (yellow==1 and choice<=9){ choice++; } if (yellow==0 and choice>0){ choice--; } // warten, bis Taster losgelassen wird while (digitalRead(button) == HIGH) { delay(20); } } // dem Anwender Zeit geben delay(20); } // LEDs ausschalten digitalWrite(yellowled,LOW); digitalWrite(greenled,LOW); delay(200); }
Als Hardware für dieses Projekt benötigen wir die beiden LEDs und eine Taste, alles, was wir schon im ersten Kapitel aufgebaut haben. Wenn Sie den Sketch starten, leuchtet sofort eine LED. Wenn Sie die Farbe mögen, drücken Sie den Taster, wenn nicht, dann nicht. Immer, wenn die schönste aller Farben aufleuchtet, drücken Sie den Taster zur Belohnung, bei der anderen Farbe nicht. Mit der Zeit lernt der Arduino, welche Farbe Sie am schönsten finden und zeigt sie und nur sie. Optional
Wenn der Sketch einmal gelernt hat, welche Farbe Sie bevorzugen, lässt er sich nicht mehr davon abbringen: Die zweite Farbe wird nicht mehr angezeigt. Versuchen Sie, den Sketch so umzuschreiben, dass es auch möglich ist, die Lieblingsfarbe zu verändern. Sie könnten beispielsweise den zweiten Taster verwenden, um den Sketch zu bestrafen, wenn Sie die Farbe nicht mehr bevorzugen. Wenn Sie die beiden Taster inkonsistent einsetzen, eine Farbe manchmal belohnen und manchmal bestrafen, führt dies nicht zum gewünschten Resultat. Das gilt übrigens nicht nur bei Arduino-Sketchen, sondern auch bei Kindern.
● 149
Arduino Entdecken 150615.indd 149
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Finden Sie dieses Projekt interessant? Dann ist vielleicht das Buch “Artificial Intelligence – 23 projects to bring your microcontroller to life“ (ISBN 978-0-905705-77-4) des gleichen Autors für Sie interessant. Dieses Buch ist angefüllt mit bizarren Programmen und merkwürdigen Ideen wie folgender: 7.2 Menschensensor
Bei Byte Craft Limited ist ein interessanter Artikel von Walter Banks zu finden, in dem er einen kapazitiv arbeiteten Berührungssensor beschreibt.53 Er verwendet eine kleine Berührungsfläche, und dann ist es tatsächlich ein Berührungssensor, aber wenn man die Fläche vergrößert, dann reicht es schon aus, wenn jemand (oder irgend etwas, das Strom leitet) nur in die Nähe des Sensors kommt: ein kontaktloser Menschensensor . Die Technik des Menschensensors ist ziemlich interessant. Zwei Anschlüsse des Arduino sind miteinander über einen großen Widerstand von beispielsweise 470 kΩ verbunden. Daran ist ein Stück Metall mit einer isolierenden Schicht angeschlossen, hier eine Aluminiumfolie in einem Plastikbeutel.
470 k
Arduino 3
Arduino 4
sensor 8 x 13 cm
Bild 93. Prinzip des Menschensensors Das isolierte Metall stellt die Hälfte eines Kondensators dar. Hält jemand seinen Finger in die Nähe des Sensors, so ist der Finger die andere Seite des Kondensators: ein Leiter (der Finger) mit Isolation (der Luft). Das Aufladen eines Kondensators nimmt eine gewisse Zeit in Anspruch, die abhängig ist von der Kapazität. Wenn kein Körper in der Nähe ist, geht es ganz schnell, wenn sich doch ein Körper in Reichweite befindet, dauert es ein wenig länger. “Ein wenig“ bedeutet hier immerhin 3 µs. Die Empfindlichkeit des Sensors ist abhängig von der Größe der Aluminiumfolie und der Länge des Anschlusskabels. Der Einsatz dieses Sensors ist gefährlich (für den Arduino, nicht für Sie). Sind Sie etwa statisch aufgeladen und kommen mit dem Finger in die Nähe der Folie, so kann ein kleiner Funke überspringen. Kleiner Funke – große Wirkung: Das Leben des teuersten Bauteils, des Arduinos steht auf dem Spiel! Der Sketch muss folgende Schritte ausführen: 53 Die Website ist www.bytecraft.com, der undatierte Artikel steht unter http://www.bytecraft.com/touchsw.html
● 150
Arduino Entdecken 150615.indd 150
10-07-15 11:31
Kapitel 8 • Anhang
Kapitel 8 • Anhang 8.1 Einstellbare Spannungsversorgung (1,2...13 Volt)
Eine einfache einstellbare Spannungsquelle für Spannungen von 1,2...13 Volt ist schnell gebaut und ideal für alle Projekte in diesem Buch, die eine externe Versorgung erfordern. Ich habe sie auch beim Ausprobieren der Projekte in diesem Buch verwendet. Wenn der Regler mit einem Kühlkörper von etwa 10 cm2 ausgestattet wird, kann die Spannungsquelle maximal 1,5 A liefern, mehr als genug für unsere Zwecke.
3
LM317 1
+1.24 - 13.5 V (out)
2
470
+ 15 V (in)
100 nF 5 k LIN
+ 100 uF
0
Bild 134. Schaltung der einstellbaren Spannungsquelle.
Bild 135. Anschlussbelegung des LM317. Sie müssen natürlich mit einem Multimeter überprüfen, welche Spannung zu welcher Potistellung gehört. Wenn Sie die Schaltung in ein Gehäuse mit einer Skala am Potentiometer einbauen, ist diese Kalibrierung nur einmal erforderlich. Die Spannungsquelle wird selbst von einem Steckernetzteil versorgt, das 15 V Gleichspannung liefert. Wenn Sie ein anderes Steckernetzteil mit anderen Werten verwenden, sollten Sie die nachstehende Erläuterung
● 211
Arduino Entdecken 150615.indd 211
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
genau studieren und unter Umständen andere Bauteile verwenden. Liefert das Steckernetzteil eine Wechselspannung, muss dem Spannungsregler ein Gleichrichter vorgesetzt werden.
Bild 136. Das Netzgerät im Gehäuse. Der LM317 ist ein 1,2-Volt-Spannungsregler. Der Spannungsabfall über Ausgang und ADJ-Anschluss beträgt stets 1,2 Volt. Für eine maximale Ausgangsspannung von 13 Volt ist ein 15-V-Steckernetzteil (oder Trafo) deshalb ausreichend. Die Spannung wird mit einem linearen 5-kΩ-Potentiometer eingestellt. Der Spannungsabfall über dem Potentiometer beträgt 11,8 Volt (13 - 1,2) und der Strom hindurch 2,36 Milliampere.
Umax = 13 Uvar = 13 - 1,2 = 11,8 Volt Ivar = U/R = 11,8 / 5 k = 2,36 mA
[Formel 38] [Formel 39] [Formel 40]
Dieser Strom fließt nicht durch den LM317, sondern durch den Bypass-Widerstand, der angesichts der Spannung über dem LM317 von 1,2 Volt leicht berechnet werden kann: Rfix = U/I = 1,2 / 0,00236 = 508 Ω.
[Formel 41]
Dieser Wert existiert nicht, man muss entweder 470 Ω oder 560 Ω einsetzen. Für eine höhere maximale Spannung nehmen wir 470 Ω (gelb-lila-braun). Wenn Sie eine LED als Einschaltkontrolle einbauen wollen, schließen Sie diese direkt an der 15 V-Eingangsspannung mit einem Vorwiderstand von 1 kΩ (braun-schwarz-rot) an. 8.2 Das Shield komplett bestückt
Folgendes Bild zeigt, welche Funktionen die Anschlüsse auf dem Shield besitzen. Sie finden dieses Bild auch im Download, so dass Sie es drucken und an geeigneter Stelle als Referenz platzieren können. Die Pins M1 und M2 sind die Ausgänge und Vdd der Eingang des MOSFET-Treibers TC4427A. Die Pins R1 und R2 sind die Schaltkontakte des Relais.
● 212
Arduino Entdecken 150615.indd 212
10-07-15 11:31
Kapitel 8 • Anhang
Bild 137. Alle (externen) Anschlüsse des Shields. Die nicht im Bild bezeichneten Anschlüsse werden auch verwendet. Welche Funktion diese Anschlüsse dabei haben, steht in folgender Tabelle. Pin
Funktion
0/1
Serielle Kommunikation
2
LED
5
LED
8
Schalter
10
MOSFET-Treiber
11
Schalter
12
Relais
13
MOSFET-Treiber
A0
10-kΩ-Potentiometer
A1
Lautsprecher
A2
LDR
79
Tabelle 43. Pinbelegung des Arduino-Shields.79 Vergessen Sie nicht, dass der analoge Pin A1 manchmal als Eingang (zum Beispiel beim Klopfsensor) und manchmal, wie bei der Sirene, aus Ausgang eingesetzt wird. Achten Sie gut darauf, dass Sie aus Versehen nicht einen anderen Ausgang dafür verwenden. Abhängig von der Stellung des Potentiometers und des Widerstands des LDR könnte ein Kurz79 Diese Pins werden vom Shield nicht gebraucht, wohl aber vom Arduino.
● 213
Arduino Entdecken 150615.indd 213
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
schluss entstehen. Und normalerweise wird dann immer das teuerste Bauteil beschädigt, der Arduino! Achtung: Verwenden Sie nur A1 als Ausgang, NIEMALS A0 oder A2. Die daran angeschlossenen Bauteile können einen Kurzschluss hervorrufen und den Arduino beschädigen.
● 214
Arduino Entdecken 150615.indd 214
10-07-15 11:31
Index
Index --
33
char()
195
-
52
Charlieplexing.h
168
31
CS12:CS10
108
51
delay()
28
52
digitalRead
50
109, 137
digitalWrite
! !=
% & *
**
52
DIP05-1A72-12L
27 139
52
duty cycle
*=
33
EEPROM
130
/
52
EEPROM.read
131
/=
33
EEPROM.write
131
[
36
else
|
109
+
76
50
Erschütterungssensor 126
52
F()
138
++
33
favicon
178
+=
33
Flash
134
<
51
float
52
for
<<
<< <=
45
170
Freilaufdiode
139
51
GP1S036HEZ
125
52
GP2Y0D340K
119
-=
33
Header
25
==
51
HIGH
27
>
51
HyperTerminal
37
=
29
>=
51
if
>>
52
include
1N4007
140
index
71427
101
indexOf
211
int
LM317
50 131 58 195 29
analogRead
64
IP-Adresse
178
analogReference
64
James Boyk
144
Arduino IDE
14
LDR
array
58
LedSign
168
Lego 71427
113
LOL
168
ASCII ATmega328P imp
35, 43 13, 198 79
69
loop()
27
Impulsscheibe
113
LOW
27
avr/pgmspace
135
lux
69
Magnetschalter
84
baudrate
32
BC547B
154
BC547C
89
Beschleunigung
129
map
77
maximaler Strom
101
Menschensensor
150
BJT 89
micros
123
byte
millis
29
81
● 215
Arduino Entdecken 150615.indd 215
10-07-15 11:31
Arduino entdecken - 45 nachbausichere Projekte für den Uno
Netzgerät, einstellbar nicht
212 31
Stiftleisten 25 substring
196
noTone
145
Tastverhältnis
oder
109
TC4427A
101
TCCR2B
108
TI CC1111
194
Timer
123
Ohmsches Gesetz optiLoader OUPUT
24 201 27
76
pgm_read_word_near
137
tone 144
piezo
142
Treiber 19
pinMode
tristate
163
pointer
137
try/except
182
port forwarding
192
TTL232R USB
206
Potentiometer
27
63
und
prescaler
108
Versorgung 97
prog_
136
void
PROGMEM
136
Vorteiler 108
pull-down
47
VT100
pull-up
47
Watanabe
puls/pauze
76
while
55
PWM
76
while(1)
44 15
PWM Frequenz
108
WinOscillo
PySerial
175
word
Python
175
XinoRF
QRB1134
114
radio
193
random
56
randomseed
56
rechnen Reed relais
29 193
65 46
Serial Monitor
34
Serial.available
32
Serial.begin
32
serialEvent
32
Serial.print
32, 36
Serial.println
32
Serial.read
32
Serial.write
36 27
SFR05
121
sleep
183
Software-Oszilloskop
35 147
139
schweben
setup()
27
16
Spule
140
SRF stick
193
SRF05 121 static lease
179
● 216
Arduino Entdecken 150615.indd 216
10-07-15 11:31
Bert van Dam
Man kann dieses Buch als Baubuch betrachten und die beschriebenen Projekte einfach nachbauen und praktisch einsetzen. Mit der klaren Beschreibung, den Schaltbildern und den Aufbaufotos ist der Nachbau eine erfreuliche Angelegenheit. Alle Bilder sind von funktionierenden Prototypen gemacht, ein deutlicher Beleg für deren sichere Funktion.
ARDUINO ENTDECKEN
●
Bert van Dam ist freiberuflicher Autor von Büchern, Kursen und Artikeln über PIC- und ARM-Mikrocontroller, Arduino, Raspberry Pi, PCs, Künstliche Intelligenz und die Programmiersprachen JAL, C, Assembler, Python und Flowcode.
In diesem Buch wird eine Reihe spannender und interessanter Projekte mit dem Arduino beschrieben, beispielsweise ein stiller Alarm, ein Menschensensor, ein Lichtmessgerät, die Motorsteuerung und die Bedienung über das Internet oder eine Fernsteuerung (mit Funkverbindung). Im Gegensatz zu vielen Gratis-Projekten aus dem Internet sind alle Projekte in diesem Buch in der Praxis getestet und funktionieren garantiert!
ARDUINO ENTDECKEN
ARDUINO ENTDECKEN
45 NACHBAUSICHERE PROJEKTE FÜR DEN UNO
BERT VAN DAM
45 NACHBAUSICHERE PROJEKTE FÜR DEN UNO
Man kann die Projekte in diesem Buch auch miteinander kombinieren, um eigene Aufgaben zu lösen. Zu jedem Projekt gehört eine verständliche Erläuterung, warum es so und nicht anders realisiert wurde. Dabei lernt man viel über die Schaltung selbst und bekommt alle Informationen, die man braucht, um sie nach eigenen Vorstellungen anzupassen und zu erweitern.
DESIGN
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
Darüber hinaus lässt sich das Buch als Nachschlagewerk nutzen. Über den Index findet man schnell und einfach Projekte, die als Beispiel für die C++ Programmierung und eigene Arduino-Anwendungen dienen können. Selbst wenn man schon alle Projekte nachgebaut hat, wird das Buch daher sicher noch lange seinen Platz neben dem eigenen PC einnehmen.
SHARE
ISBN 978-3-89576-306-9
Bert van Dam LEARN
DESIGN
SHARE
LEARN
LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIG ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SH GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESI ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● S