Mikrocontroller-Technik (Leseprobe)

Page 1

Mikrocontroller-Technik Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Günter Spanner LEARN DESIGN SHARE

N ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DES ARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● EARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DES ARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ●



Mikrocontroller-Technik Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

● Dr. Günter Spanner

LEARN DESIGN SHARE


© 2018: Elektor Verlag GmbH, Aachen.

Alle Rechte vorbehalten.

1. Auflage 2018

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 irgendeine Haftung übernehmen. Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar.

Erklärung

Der Autor und der Herausgeber dieses Buches haben alle Anstrengungen unternommen, um die Richtigkeit der in diesem Buch enthaltenen Informationen sicherzustellen. Sie übernehmen keine Haftung für Verluste oder Schäden, die durch Fehler oder Auslassungen in diesem Buch verursacht werden, unabhängig davon, ob diese Fehler oder Auslassungen auf Fahrlässigkeit, Unfall oder andere Ursachen zurückzuführen sind. Umschlaggestaltung: Elektor, Aachen Satz und Aufmachung: D-Vision, Julian van den Berg | Oss (NL) Druck: WILCO, Amersfoort, Niederlande Printed in the Netherlands

ISBN 978 38 957 6337 3

Elektor-Verlag GmbH, Aachen www.elektor.de

Elektor ist Teil der Unternehmensgruppe Elektor International Media (EIM), der weltweit wichtigsten Quelle für technische Informationen und Elektronik-Produkte für Ingenieure und Elektronik-Entwickler und für Firmen, die diese Fachleute beschäftigen. Das internationale Team von Elektor entwickelt Tag für Tag hochwertige Inhalte für Entwickler und DIY-Elektroniker, die über verschiedene Medien (Magazine, Videos, digitale Medien sowie Social Media) in zahlreichen Sprachen verbreitet werden. www.elektor.de

LEARN DESIGN SHARE


Inhalt Warnhinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Programm-Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Kapitel 1• Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 Der Mikrocontroller erobert die Welt der Technik . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3 Das AVR-Playground-Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Die Arduino-Familie als Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.5 Aufbau des AVR-Playground-Boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6 Ein erster Funktionstest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Kapitel 2 • Die Programmier- und Entwicklungsumgebung . . . . . . . . . . . . . . . . . . 25 2.1 Installation der Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2 Das Playground Board als Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3 Ein einfacher Einstieg – der Warnblinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4 Praxisanwendung: Alarmanalgen-Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5 SOS-Notsignale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.6 C und "Processing" - Ein Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.7 Ausgaben auf das Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Kapitel 3 • Grundelemente der Programmierung in C . . . . . . . . . . . . . . . . . . . . . . 38 3.1 Programm-Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2 Syntaxelemente und Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3 Variablen, Operatoren und Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.4 Variablenfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.5 Zeichenketten (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.6 Programmsteuerung und Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.7 Spezialfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Kapitel 4 • Funktionen und Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1 Verwendung von Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2 Rekursiver Funktionsaufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3 Erweiterte Möglichkeiten: Einfügen von Bibliotheken . . . . . . . . . . . . . . . . . . . . . . 70 Kapitel 5 • Professionelle Programmiertechniken . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.1 Verwendung von Zeigern in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

●5


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board 5.2 Formatierte Ausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.3 Stringverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.4 Strukturierte Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Kapitel 6 • Vorstufe für den Compiler: der Präprozessor . . . . . . . . . . . . . . . . . . . . 93 6.1 Speicherplatz sparen mit symbolischen Konstanten . . . . . . . . . . . . . . . . . . . . . . 93 6.2 Wichtig für die Dokumentation: Vordefinierte Konstanten . . . . . . . . . . . . . . . . . . 94 6.3 Eigene Funktionen mit Makros erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Kapitel 7 • Den Compiler im Griff: Bedingte Kompilierung . . . . . . . . . . . . . . . . . . . 98 7.1 Bedingte Kompilierung mit Konstanten-Definition . . . . . . . . . . . . . . . . . . . . . . . . 98 7.2 Konstanten-Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Kapitel 8 • Ü bersichtliche Programme durch Headerdateien und Include-Files . 101 8.1 Einfügen von Header-Files in Quelltextdateien . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.2 Vermeidung von Mehrfach-Einbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.3 Standardmäßige Header-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Kapitel 9 • H ardwarenahe Programmierung: Bits, Ports und LED-Lichtspiele . . . 105 9.1 Lauflichter in allen Varianten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 9.2 Kirmesbeleuchtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.3 Simulation eines springenden Balls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.4 Flackerlicht als elektronisches Kaminfeuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Kapitel 10 • Einfache Daten für den Controller: Digitale Eingaben . . . . . . . . . . . . 114 10.1 Tastenmatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.2 Drehgeber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Kapitel 11 • Sensortechnik und Messwerterfassung . . . . . . . . . . . . . . . . . . . . . . 122 11.1 Erfassung von Messwerten, Auflösung und Präzision . . . . . . . . . . . . . . . . . . . . 122 11.2 Der ADC im Einsatz: Erfassung einer Potentiometerspannung . . . . . . . . . . . . . 124 11.3 Zwischen Analog und Digital: ein Bargraph-Voltmeter . . . . . . . . . . . . . . . . . . . 126 11.4 Direktes Auslesen von ADC-Werten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.5 Interne und externe Referenzspannungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 11.6 Spannungsteiler für höhere Eingangsspannungen . . . . . . . . . . . . . . . . . . . . . . 130 11.7 Nebenwirkungen in der Sensortechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 11.8 Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 11.9 Steinhart-Hart-Gleichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

●6


11.10 Präzise Temperaturwerte: LM35 und ähnliche Konverter . . . . . . . . . . . . . . . . 139 11.11 Digitale Temperatursensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 11.12 Der DS18(S)20-Temperatursensor von DALLAS . . . . . . . . . . . . . . . . . . . . . . 141 11.13 Optische Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 11.14 Elektronisches Luxmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 11.15 Sensoren für optimales Raumklima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 11.16 Erfassung von Schallintensitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 11.17 Schalten mit Schall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 11.18 Für kleinste Erschütterungen: Piezo-Seismometer . . . . . . . . . . . . . . . . . . . . . 157 11.19 Grafische Messwertaufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Kapitel 12 • Schnittstellenpraxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 12.1 Serielle Datenübertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 12.2 Grundlagen der seriellen Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 12.3 Die serielle Schnittstelle am Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . 164 12.4 Controller-Steuerung via PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Kapitel 13 • Speicherarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 13.1 Flash-Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 13.2 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 13.3 EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 13.4 Externe Speicherkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Kapitel 14 • Interrupts und Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 14.1 Interrupt-Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 14.2 Einfaches "Multitasking" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 14.3 Blinken ohne Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.4 Fahrradrücklicht mit Interruptsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Kapitel 15 • Timer und Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 15.1 Einfache Uhr mit programmgesteuerter Verzögerung . . . . . . . . . . . . . . . . . . . 188 15.2 Timergesteuerte präzise Digitaluhr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Kapitel 16 • Ausgabe von analogen Spannungen . . . . . . . . . . . . . . . . . . . . . . . . 193 16.1 Erzeugung von quasi-analogen PWM-Signalen . . . . . . . . . . . . . . . . . . . . . . . . 193 16.2 Mood-Light mit Multicolor-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

●7


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board 16.3 Von digital nach analog: der DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 16.4 Digitale Funktionsgeneratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Kapitel 17 • Siebensegment-Anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 17.1 Praktisch und preiswert: Siebensegment-Displays . . . . . . . . . . . . . . . . . . . . . 199 17.2 Das Universaltalent: LED-Display mit 4x7-Segment . . . . . . . . . . . . . . . . . . . . 202 17.3 Digitaluhren mit individueller Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 17.4 Uhr mit Spezialeffekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 17.5 Universelle LED-Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 17.6 Digitale Frequenzzähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Kapitel 18 • LED-Punktmatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 18.1 Darstellung von Ziffern und Buchstaben auf dem LED-Display . . . . . . . . . . . . . 219 18.2 Laufschriften in allen Formen und Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Kapitel 19 • Alphanumerische LC-Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 19.1 Ansteuerung des integrierten Playground-Displays . . . . . . . . . . . . . . . . . . . . . 226 19.2 Einfach und universell: Standarddisplays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Kapitel 20 • Grafik-Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 20.1 Die GLCD-Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 20.2 Virtuelle Analoginstrumente und Bitmap-Grafiken . . . . . . . . . . . . . . . . . . . . . . 235 20.3 Alle Informationen im Blick: grafische Messwertdarstellung . . . . . . . . . . . . . . . 237 Kapitel 21 • OLEDs-Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 21.1 OLED-Module: Displays im Kleinformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 21.2 Schnelle Grafikanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Kapitel 22 • Ultraschalltechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 22.1 Distanzmessung mit Ultraschall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 22.2 Einparkhilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Kapitel 23 • Infrarot-Technik und Fernbedienungen . . . . . . . . . . . . . . . . . . . . . . 250 23.1 IR-Gerätefernbedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 23.2 Die ferngesteuerte LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Kapitel 24 • Messtechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 24.1 Bestimmung von Kapazitäten und Halbleitertparametern . . . . . . . . . . . . . . . . . 255 24.2 Messen wie die Profis: Oszilloskope und Logic Analyzer . . . . . . . . . . . . . . . . . . 258

●8


Kapitel 25 • Heimnetzwerke und das Internet of Things (IoT) . . . . . . . . . . . . . . 261 25.1 Netzwerktechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 25.2 Mikrocontroller als Web-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 25.3 Drahtlose Datenkommunikation via WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Kapitel 26 • Bussysteme: I2C-Bus und SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 26.1 Preisgünstig und einfach: Der I2C-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 26.2 Schnell und zuverlässig: SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 26.3 Ansteuern von SD- und µSD-Karten über SPI . . . . . . . . . . . . . . . . . . . . . . . . . 276 26.4 Doppelt wichtig: SPI als Programmierschnittstelle . . . . . . . . . . . . . . . . . . . . . . 276 Kapitel 27 • Mikropowertechniken und Sleep-Modi . . . . . . . . . . . . . . . . . . . . . . . 278 27.1 LowPower-Techniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 27.2 Abschalten unnötiger Verbraucher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Kapitel 28 • Drahtlos Daten lesen: RFID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 28.1 Sicherheit mit RFID-Technik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 28.2 RFID-TAGs für die Zugangskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Kapitel 29 • Digitale Regelungstechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 29.1 Zweipunktregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 29.2 Präzise Temperaturregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 29.3 Optimale Arbeitsplatzbeleuchtung: Digitaler Helligkeitsregler . . . . . . . . . . . . . . 295 Kapitel 30 • Daten ins Internet senden mit Thingspeak . . . . . . . . . . . . . . . . . . . . 298 30.1 Einrichtung der Datenbasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 30.2 Grafische Darstellung von Daten in ThingSpeak . . . . . . . . . . . . . . . . . . . . . . . 301 30.3 Raumüberwachung mit Lichtsensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Kapitel 31 • Breadboards, Bauelemente und Module . . . . . . . . . . . . . . . . . . . . . . 303 Kapitel 32 • Bezugsquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Kapitel 33 • Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

●9


Kapitel 1• Einführung

Kapitel 1• Einführung Die Mikrocontroller-Technologie ist nach wie vor eines der faszinierendsten Gebiete der modernen Elektronik. Mikrocontroller haben sich in den letzten Jahren in praktisch allen Bereichen der modernen Technik etabliert. In zunehmendem Maße dringen sie auch in die Gebiete der Künstlichen Intelligenz und der Robotertechnik vor. Das vorliegende Buch gibt eine umfassende Einführung in die Welt der Controller-Technik mit all ihren Facetten, von der einfachen Steuerung über die Sensor-Technik bis hin zur Datenübertragung in das Internet. Als Basis dafür dient das AVR-Playground-Board, das von Elektor entwickelt wurde. Dieses kann mit der ATmega-Familie bestückt werden. Das Board ist mit dem bekannten Arduino-System kompatibel, so dass auch die verschiedenen Arduino-Hardware-Erweiterungen (sogenannte "Shields") verwendet werden können. Für die Programmierung kommt die Sprache "C" zum Einsatz. Diese nimmt bis heute auf dem Gebiet der Firmware-Entwicklung eine dominierende Stellung ein. Die bei weitem überwiegende Mehrheit der professionellen Entwicklungsarbeit wird in C ausgeführt. Andere Hochsprachen spielen immer noch eine eher marginale Rolle. Auch die klassische Assemblerprogrammierung nimmt bestenfalls eine Randstellung ein und wird nur noch dort eingesetzt, wo es darum geht, auch noch die letzten Möglichkeiten eines Controllers bezüglich Geschwindigkeit oder Speicherbelegung zu nutzen. Auch hier wird auf das Arduino-System zurückgegriffen. Die frei verfügbare Entwicklungsumgebung erlaubt den leichten Einstieg, ohne dass später Einschränkungen in Kauf genommen werden müssten. Die hardwarenahe Programmierung steht dabei besonders im Fokus. Nach der Durchsprache von grundlegenden Anwendungen wird auf die anspruchsvolleren Themen wie Interrupts, Timer und Counter, Pulsweitenmodulation und Analog-Digital-Wandlung eingegangen. Dabei steht stets die Philosophie des "Learning by doing" im Vordergrund. Das vorliegende Buch eignet sich dadurch hervorragend als praktische Ergänzung für Unterricht, Seminare und Vorlesungen in • FabLabs und Maker-Clubs, • weiterführenden Schulen, • Technischen Berufsschulen und Fachakademien • oder Fachhochschulen und Universitäten. Auch ambitionierte, nichtprofessionelle Anwender können sich mit dem Lernmaterial einen Überblick über den neuesten Stand der Controller-Technik verschaffen. Praktische Anwendungen können sowohl mit einem Arduino UNO als auch mit dem AVR-Playground-Board durchgeführt werden. Da das Playground-Board bereits über eine Vielzahl von Peripherie-Einheiten verfügt, sind nur noch wenige externe Bauteile erforderlich. Insbesondere das LC-Display des Playground-Boards erleichtert den Einstieg, da

● 13


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

hier sofort und ohne zusätzliche Hardware Variablenwerte oder Messergebnisse angezeigt werden können. 1.1 Der Mikrocontroller erobert die Welt der Technik Mikrocontroller (häufig abgekürzt als µC oder MCU für Mikrocontroller Unit) sind seit Mitte der siebziger Jahre auf dem Markt verfügbar. Prinzipiell stellen sie eine konsequente Weiterentwicklung der klassischen integrierten Schaltkreise dar. Durch fortlaufende Miniaturisierung und Integration gelangten moderne Controller bis an die Grenzen des Machbaren. Wurden in den Anfangszeiten der Digitaltechnik zunächst lediglich einzelne logische Funktionen in ein Gehäuse integriert, so nahm die Komplexität der Schaltkreise ab den 80er Jahren rasch zu. Mit zunehmender Siliziumfläche konnten dann immer mehr Funktionen in einen einzelnen IC integriert werden. Durch immer kleinere Strukturen konnte die Funktionalität in einem einzigen Chip zusätzlich gesteigert werden. In verschiedenen Forschungszentrum für Mikroelektronik und Nanotechnologie wurden mittlerweile erste Chips in 3-nm-Technik entwickelt, d. h., die Leiterbahnstrukturen haben hier nur noch einen Breite von 3 milliardstel Metern. Neben Prozessoren entstanden auch Speicher, UARTs (Universal Asynchron Reciver/Transmitter), EEPROMs etc. Allerdings konnten diese Chips jeweils nur einzelne spezielle Funktionen bieten. Sie können daher nur zusammen als komplette sogenannte "Chipsätze" zum Einsatz kommen. Um sinnvolle Aufgabe erfüllen zu können, benötigt ein Prozessor stets eine mehr oder weniger große Anzahl an weiteren Bausteinen, wie Speicherchips oder Schnittstellen-ICs. Hier kam schließlich die Idee des Mikrocontrollers zum Tragen. Als Ziel galt es dabei, möglichst alle erforderlichen Funktionen in einen einzigen Siliziumschaltkreis, einen sogenannten "Chip", zu integrieren. Es sollte ein kompletter "computer on a chip" entstehen. Später kamen noch weitere Anforderungen hinzu. Ein möglichst geringer Energieverbrauch für batterie- oder akkubetriebene Geräten und natürlich eine hohe Kosteneffizient bei der Herstellung der Chips waren weitere Vorgaben. Die Ein-Chip-Philosophie hat viele nicht zu unterschätzende Vorteile. Selbst komplexe logische Schaltungen lassen sich nun mit einem einzigen Baustein realisieren. Der Entwicklungsaufwand auf der Hardwareseite wird deutlich reduziert und auch die Fertigungstechnik kann wesentlich vereinfacht werden. Die aus den Anfangszeiten der Digitaltechnik bekannten "Chip-Friedhöfe" mit ganzen Leiterplatten voller Digital-ICs mit rechtwinklig angeordneten "Gräberfeldern" gehören damit vollständig der Vergangenheit an. Damit wurde der Weg zu sogenannten eingebetteten Systemen (embedded systems) frei. Diese bestehen aus elektronischen Controller-Strukturen, die in technische Umgebungen eingebettet sind. Typische Anwendungen sind maschinelle Systeme, welche mit Interaktion durch einen Benutzer arbeiten oder auch vollautomatisch (autonom) agieren. Sie können für Überwachungs-, Steuerungs- oder Regelaufgaben eingesetzt werden. Hinzu kommen spezielle Aufgaben in der Daten- bzw. Signalverarbeitung, wie beispielsweise beim Verbzw. Entschlüsseln, Codieren bzw. Decodieren oder Filtern.

● 14


Kapitel 1• Einführung

Eingebettete Systeme sind optimiert für Datenverarbeitungsaufgaben für bzw. in diesen technischen Umgebungen. Die Mikrocontroller-Technologie ist damit bestens für den Einsatz in der Welt der Embedded Systems geeignet. Die Welt der "embedded systems" reicht von der täglich genutzten elektronisch gesteuerten Zahnbürste mit Intervallautomatik bis hin zur vollständig autonom operierenden Raumsonde. Smartphones mit all ihren Sensoren und Schnittstellen zählen genauso zu den eingebetteten Systemen wie universell einsetzbare Industrieroboter. In vielen Anwendungsbereichen und Geräten, beispielsweise in der Medizintechnik, in Waschmaschinen, Flugzeugen, Kraftfahrzeugen, Kühlschränken, Fernsehern, DVD-Playern, Set-Top-Boxen, Routern, Mobiltelefonen oder allgemein in Geräten der Unterhaltungselektronik sind "embedded systems" unentbehrlich geworden. All diese Errungenschaften der modernen Welt wären ohne den Einsatz moderner Controller-Technologie undenkbar. Bei immer komplexer werdenden Gesamtsystemen kommt es sogar zunehmend zur Vernetzung einer Vielzahl von ursprünglich autonomen eingebetteten Systemen. So werden z. B. in modernen Fahr- oder Flugzeugen bis zu über einhundert Einzelsysteme zu einem komplexen elektronischen Gesamtsystem verwoben. Die moderne Robotertechnik wäre ohne Embedded Systems nicht möglich. Von der einfachen Maschinensteuerung bis hin zu Systemen mit Künstlicher Intelligenz, in allen Bereichen werden Mikrocontroller mit immer neuen Funktionen und Architekturen eingesetzt. Häufig werden eingebettete Systeme speziell an bestimmte Aufgaben angepasst. Aus Kostengründen wird eine optimierte, gemischte Hardware-Software-Implementierung gewählt. Dabei vereinigt eine solche Konstruktion die große Flexibilität von Software mit der Leistungsfähigkeit der Hardware. Die Software dient dabei sowohl zur Steuerung des Systems selbst als auch ggf. zur Interaktion des Systems mit der Außenwelt über definierte Schnittstellen oder Protokolle. 1.2 Voraussetzungen Um dieses Buch erfolgreich durcharbeiten zu können, sind folgende Voraussetzungen erforderlich: 1. Sicherer Umgang mit dem Betriebssystem Windows oder Linux wird vorausgesetzt. Grundkenntnisse einer beliebigen Programmiersprache sind natürlich von Nutzen aber nicht unbedingt erforderlich. 2. Spezielle Erfahrungen im Bereich Elektronik und Elektrotechnik sind nicht notwendig. Für das Verständnis der Übungen werden aber grundlegende Kenntnisse zum Themenkomplex "Strom – Spannung – Widerstand" vorausgesetzt. Vorteilhaft ist auch elementares Wissen im Bereich der elektronischen Messtechnik. Im Bedarfsfall sind die entsprechenden Informationen dazu in der betreffenden Fachliteratur nachzulesen siehe Literaturverzeichnis). Um die Praxisbeispiele in diesem Buch durcharbeiten zu können, ist das folgende Grundmaterial erforderlich: • PC oder Laptop mit USB-Schnittstelle • Internetzugang

● 15


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

• AVR-Playground-Board (siehe Abbildung) • USB-Kabel Typ A -> Mikro-USB

Abbildung 1.1: AVR-Playground-Board Alternativ können die meisten Experimente auch mit einem Arduino UNO ausgeführt werden. Allerdings sind dann einige zusätzliche Komponenten erforderlich. Von Vorteil ist auch ein einfaches Multimeter. Dieses sollte in keiner Elektronikwerkstatt fehlen. Auch bei der Arbeit mit Mikrocontrollern leistet ein solches Instrument immer wieder gute Dienste. Man kann damit Versorgungsspannungen prüfen oder die aktuelle Spannung am Ausgang eines Digital-Analogkonverters nachmessen. Ein preisgünstiges Gerät ist vollkommen ausreichend, da es bei den hier erforderlichen Messungen nicht auf besondere Präzision ankommt. Wichtig ist lediglich ein Spannungsmessbereich bis ca. 10 V. Dieser ist bei allen gängigen Geräten vorhanden. Einfache Multimeter sind bereits für wenige Euro erhältlich und bieten ein gutes Preis-Leistungsverhältnis. Ist aber absehbar, dass man das Gerät auch in anderen Bereichen einsetzen will, so sollte man sich überlegen, ob man sich nicht gleich ein höherwertiges Gerät mit erweitertem Funktionsumfang anschafft.

● 16


Kapitel 1• Einführung

Abbildung 1.2: Digitalmultimeter Ein aktiver USB-Hub kann ebenfalls gute Dienste leisten. Er hat den besonderen Vorteil, dass er einen gewissen Schutz für den USB-Port des verwendeten PCs oder Laptops bietet. Wichtig ist, dass es sich tatsächlich um einen aktiven Hub handelt, d. h., das Gerät muss über eine eigene 5-V-Stromversorgung durch ein separates Netzteil verfügen. Nur dann kann gewährleistet werden, dass im Falle eines Kurzschlusses nach dem Hub der Rechnerport geschützt ist.

Abbildung 1.3: Aktiver USB-Hub

● 17


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Natürlich bietet auch ein aktiver Hub keinen absoluten Schutz. Das "Durchschlagen" eines Kurzschlusses über einen aktiven Hub hinweg bis zum USB-Port des Rechners ist jedoch sehr unwahrscheinlich. Will man das AVR-Board oder einen Arduino ohne PC, d. h. im Stand-allone-Betrieb, verwenden, dann ist ein externes 5-V-Netzteil erforderlich. Ist ein solches Gerät vorhanden, so kann das Board unabhängig von einem USB-Port betrieben werden. Mit entsprechender Software kann man es dann etwa als Datenlogger oder Ähnliches einsetzen. Wichtig ist, dass das Netzteil ausreichend Strom liefern kann. 500 mA Nennstrom sollten das Minimum sein. Als Stecker ist ein USB-Micro-Connector erforderlich.

Abbildung 1.4: USB-Netzteil Sowohl der Arduino als auch das Playground-Board verfügen über integrierte Spannungsregler. Damit kann die Versorgung der Boards auch über ein beliebiges Steckernetzteil mit einer Ausgangsspannung von 7 bis 18 V erfolgen. Das Netzteil muss einen Strom von mindestens 500 mA liefern können. Besser ist ein Nominalstrom von 1000 mA. Für die Verbindung zum jeweiligen Board muss das Netzteil über eine Standard-Hohlbuchsenstecker verfügen. Nützlich aber nicht unbedingt erforderlich ist ein Oszilloskop. Möchte man tiefer in die Messtechnik einsteigen, dann wird man um die Anschaffung eines Oszilloskops nicht herum kommen. Auch bei der Fehlersuche wird ein Oszilloskop schnell unentbehrlich, wenn man Probleme in größeren Schaltungen suchen muss. Ähnlich wie bei den Multimetern bestimmen auch beim Oszilloskop Preis und gewünschter Leistungsumfang die Auswahl. Der mit dem AVR-Playground mitgelieferte Chip wird mit einem sogenannten Bootloader ausgeliefert. Dadurch kann das Board programmiert werden, ohne dass ein spezielles Programmiergerät, ein sogenannter "Programmer", erforderlich ist. Alle Projekte können aber auch ohne einen Programmer durchgeführt werden. Allerdings erleichtert ein Programmiergerät die Arbeit oftmals doch ganz erheblich. Ist also absehbar, dass in naher Zukunft ein Programmer ohnehin erforderlich ist, dann sollte man darüber nachdenken, sich ein derartiges Gerät bereits frühzeitig zuzulegen. Sehr geeignet und empfehlenswert ist z. B. das JTAGICE3. Dieses Gerät kann dann später auch zum Programmieren anderer Controller weiterverwendet werden.

● 18


Kapitel 1• Einführung

Ein weiterer Vorteil eines Programmiergerätes ist die Möglichkeit, den Bootloader neu zu laden. Wird dieser unbeabsichtigt gelöscht, dann kann das Controller-Board ohne Programmer nicht mehr neu programmiert werden.

Abbildung 1.5: Programmiergerät JTAGICE3 1.3 Das AVR-Playground-Board Das AVR-Playground-Board spielt eine zentrale Rolle im vorliegenden Buch. Es stellt eine Kombination aus dem beliebten Arduino UNO und einem klassischen Mikrocontroller-Board dar. Neben dem Controller selbst und den Steckleisten für externe Hardware enthält der AVR-Playground auch eine Fülle von Peripherieelementen. Dadurch kann man bereits mit dem Board alleine umfassende Experimente und Tests durchführen, ohne dass man sich mit schlechten Kontakten oder mangelhaften Verbindungskabeln abgeben muss. Das Board ist in mehrere logische Bereiche aufgeteilt: • Oben links befindet sich der zu Arduino kompatible Teil mit dem Prozessor und den Pin-Reihen in der vom UNO her bekannten Anordnung. • Rechts daneben ist das microBUS-Interface lokalisiert. Hier können zum bekannten System der Firma MikroElektronika kompatible Module aufgesteckt werden. • Es folgt der USB-Seriell-Wandler mit einem originalen FTDI-Chip FT231XS und eine Micro-USB-Buchse. Diese wird für die Programmierung eingesetzt. Zudem kann die Stromversorgung des Boards über diese Buchse erfolgen. • Den Abschluss am oberen Boardrand bildet eine eigene leistungsfähige Stromversorgung. Diese ist sowohl kurzschlussfest als auch gegen thermische Über-

● 19


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

lastung gesichert. Sie liefert bei 5,0 V einen Maximalstrom von 1 A. Besonders hilfreich ist der Schalter S32, der es gestattet, die Stromversorgung vom Rest des Boards abzutrennen. Dadurch entfällt das beim Arduino so lästige Ein- und Ausstecken der USB-Verbindung. Mit einem einfachen Schalten kann man nun gefahrlos Hardwareänderungen am Board oder in der Peripherie vornehmen. • Im unteren Teil des Board sind verschiedene Taster, Schalter und über 20 LEDs vorhanden. Die LEDs verfügen bereits über die erforderlichen Vorwiderstände, so dass man hier gefahrlos experimentieren kann. Ohne zusätzliche Hardware kann man so alle Portzustände direkt überprüfen. Dies stellt eine große Hilfe bei der Programmentwicklung dar, da nun nicht immer Einzel-LEDs an die zu testenden Ports angeschlossen werden müssen. • In der Mitte des Boards sind zusätzliche optionale Eingabekomponenten angeordnet. Hier können zwei Potentiometer und ein Drehgeber eingebaut werden. • Rechts neben den Eingabekomponenten befindet sich schließlich ein LC-Display des Typs MCCOG21605B6W-SPTLYI, das in zwei Zeilen jeweils 16 Zeichen darstellen kann. Das Display ist über den I2C-Bus mit dem Controller verbunden und belegt daher nur wenige Pins. Es kann im Bedarfsfall über die Schalter S25-3 und S25-4 vollständig vom Controller getrennt werden. Die folgenden Tabellen zeigen die Funktionen aller Bedieneinheiten im Überblick.

● 20

S15

Funktion

Oben (Ein)

Unten (Aus)

1

Piezo-Buzzer

Keine Verbindung

Verbindung mit PB1

2

LEDs an Port B

Keine Verbindung

Verbindung mit GND

3

LEDs an Port C

Keine Verbindung

Verbindung mit GND

4

LEDs an Port D

Keine Verbindung

Verbindung mit GND

5

USB-RS232 RxD

Keine Verbindung

Verbindung mit PD1

6

USB-RS232 TxS

Keine Verbindung

Verbindung mit PD0

7

USB-RS232 DTR

Keine Verbindung

Verbindung mit RESET

S25

Funktion

Oben (Ein)

Unten (Aus)

1

Prozessorspannung

5V

3,3 V

2

Arduino-LED "L13"

Keine Verbindung

Verbindung mit PB5

3

LCD SDA

Keine Verbindung

Verbindung mit PC4

Keine Verbindung

Verbindung mit PC5

4

LCD SCL

5

NICHT VERWENDET

6

LCD-Beleuchtung

Ein (falls S25-7 ein)

Verbindung mit PD7

7

LCD-Beleuchtung

AUS

Steuerbar

---

---


Kapitel 1• Einführung

S24

PORT

Oben

Mitte

Unten

1

PB0

Pull-down

offen

Pull-up

2

PB1

Pull-down

offen

Pull-up

3

PB2

Pull-down

offen

Pull-up

4

PB3

Pull-down

offen

Pull-up

5

PB4

Pull-down

offen

Pull-up

6

PB5

Pull-down

offen

Pull-up

7

PB6

Pull-down

offen

Pull-up

8

PB7

Pull-down

offen

Pull-up

S33

PORT

Oben

Mitte

Unten

1

Taster Port B

LOW

offen

HIGH

2

Taster Port C

LOW

offen

HIGH

3

Taster Port D

LOW

offen

HIGH

4

PB0

Pull-down

offen

Pull-up

5

PB1

Pull-down

offen

Pull-up

6

PB2

Pull-down

offen

Pull-up

7

PB3

Pull-down

offen

Pull-up

8

PB4

Pull-down

offen

Pull-up

9

PB5

Pull-down

offen

Pull-up

10

Nicht verwendet

S27

PORT

Oben

Mitte

Unten

1

PD0

Pull-down

offen

Pull-up

2

PD1

Pull-down

offen

Pull-up

3

PD2

Pull-down

offen

Pull-up

4

PD3

Pull-down

offen

Pull-up

5

PD4

Pull-down

offen

Pull-up

6

PD5

Pull-down

offen

Pull-up

7

PD6

Pull-down

offen

Pull-up

8

PD7

Pull-down

offen

Pull-up

Ein detaillierter Schaltplan sowie weitere Informationen zum Board finden sich auf der Elektor-Webpage (siehe Downloadpaket).

● 21


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

1.4 Die Arduino-Familie als Alternative Da das Playground-Board zu den bekannten Arduino-Platinen kompatibel ist, können Arduinos auch als alternatives Entwicklungssystem verwendet werden. Im Allgemeinen versteht man unter "Arduino" das Board selbst, also die Hardware. Hiervon gibt es verschiedene Varianten, welche nachfolgend etwas genauer erläutert werden. Andererseits wird damit aber auch die Programmierumgebung bezeichnet. Beide Einheiten gehören unmittelbar zusammen und bilden das "System Arduino". Die Arduino-Hardware besteht aus einem Mikrocontroller-Board. Hierbei handelt es sich um eine Leiterplatte oder Platine, auf der sich neben dem Controller selbst noch verschiedene andere elektronische Komponenten befinden. Am oberen und unteren Rand des Boards verfügen Arduinos über eine Reihe von Buchsen, Steckplätzen oder auch Stiftleisten, die allgemein auch Pins genannt werden. Die Pins werden genutzt, um die unterschiedlichsten elektronischen Komponenten mit dem Arduino zu verbinden. Diese Bauteile, z.B. Taster, Leuchtdioden (LEDs), unterschiedliche Sensoren etc., werden in den folgenden Kapiteln vorgestellt. Es existieren verschiedene Versionen von Arduino-Boards, die mit der Arduino-Software verwendet werden können. Dazu gehört eine ganze Reihe verschieden großer Varianten, die mit der offiziellen Bezeichnung "Arduino" gekennzeichnet sind. Daneben gibt es auch eine Vielzahl von häufig wesentlich preisgünstigeren, aber dennoch praktisch gleichwertigen, sogenannten Arduino-Klonen. Diese Boards sind zu den Originalen weitestgehend hard- und softwarekompatibel. Das bedeutet, dass sie sich sowohl elektrisch als auch programmiertechnisch genauso verhalten wie die originalen Arduinos. Die klassischen Boards tragen Bezeichnungen wie • Arduino UNO, • Arduino MEGA, • Arduino Micro etc. Die dazu jeweils kompatiblen Boards heißen entsprechend • SunFounder MEGA • Seeduino UNO, • Funduino MEGA, • Freeduino Micro, • SainSmart UNO, • Joy-IT UNO usw. Im Rahmen des vorliegenden Buches kommt hauptsächlich der Arduino UNO (siehe Abbildung). zum Einsatz. Andere, dazu kompatible Boards, wie etwa der SunFounder UNO, Joy-IT UNO etc., können in allen Anwendungsfällen genauso verwendet werden wie der Original-Arduino.

● 22


Kapitel 1• Einführung

Abbildung 1.6: Arduino UNO mit THT-Chip 1.5 Aufbau des AVR-Playground-Boards Das Playground-Board wird als Bausatz mit einer vorbestückten Leiterplatte geliefert. Alle SMD-Komponenten sind bereits verlötet. Zusätzlich sind im Bauteilepaket noch die folgenden Teile vorhanden: • 1x Controller ATmega328 • 1x IC Fassung zum Controller • 2x Potentiometer 10 kOhm • 1x Drehgeber • Stiftleisten und -buchsen Um das Board in Betrieb nehmen zu können, muss mindestens die Fassung für den Controller eingelötet werden. Danach ist der Controller selbst in die Fassung einzusetzen. Beim Einstecken des Controllers ist unbedingt auf die richtige Orientierung zu achten. Die Kerbe des ICs muss nach unten, also zu den Tastern hin ausgerichtet sein! Ein falsches Einsetzen des Bausteins kann zu seiner Zerstörung führen. Möchte man auch Shields einsetzen, dann müssen die Buchsenleisten, welche rechts und links vom Controller eingesetzt werden können, ebenfalls eingelötet werden. Die Potentiometer und den Drehgeber sollte man zunächst noch nicht einbauen, da es einige Shields gibt, die dann nicht mehr eingesetzt werden können. Es ist also besser, mit dem Einlöten dieser Komponenten zu warten, bis sie tatsächlich gebraucht werden.

● 23


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

1.6 Ein erster Funktionstest Nachdem das Board mit dem Controller versehen ist, kann man es einem ersten Funktionstest unterziehen. Dazu Verbindet man es über ein Mikro-USB-Kabel mit einem PC oder Laptop. Gegebenenfalls kann man bereits jetzt einen USB-Hub dazwischenschalten. Sobald der PWR-Schalter in die ON-Stellung gebracht wurde, sollte die rote MCU-Voltage LED (5 V Voltage) in der linken oberen ECKE des Boards hell aufleuchten. Falls dies nicht der Fall ist, ist die Verbindung unverzüglich zu trennen. So kann verhindert werden, dass ein eventueller Kurzschluss größeren Schaden anrichtet. Danach kann dann mit der Fehlersuche begonnen werden. Hilfreiche Hinweise dazu finden sich im Kapitel "Fehlersuche" am Ende des Buches. Falls die rote LED ordnungsgemäß leuchtet, kann man mit dem nächsten Kapitel fortfahren und die Arduino IDE aus dem Internet herunterladen.

● 24


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

Kapitel 2 • Die Programmier- und Entwicklungsumgebung Arduino-Boards werden über eine spezielle, anfängerfreundliche Programmieroberfläche (IDE = Integrated Design Environment = Integrierte Entwicklungsoberfläche) programmiert. Der große Vorteil im Vergleich zu einer klassischen "Tool-Chain" liegt darin, dass sie sehr intuitiv bedient werden kann. Neben dem Arduino-Board selbst ist diese spezielle Entwicklungsumgebung sicher einer der Hauptfaktoren für den großen Erfolg des Arduino-Konzeptes. Da das Playground-Board zu 100% mit dem Arduino kompatibel ist, kann die IDE auch für die Programmierung dieses Systems verwendet werden. 2.1 Installation der Entwicklungsumgebung Das zugehörige Programmpaket ist Open-Source-Software und kann unter

www.arduino.cc/en/Main/Software

kostenlos aus dem Internet geladen werden. In dieser "Arduino-Programmierumgebung" werden die Programme erstellt, die der Mikrocontroller des AVR-Playgrounds oder des Arduinos später ausführt. Im Arduino-Umfeld sind diese Programme auch unter dem Namen "Sketch" bekannt. Fertige Sketche können dann über ein Programmierkabel auf den Controller übertragen werden. Zunächst muss aber die Arduino-Software und eventuell einer der USB-Treiber für das Board installiert werden. Für den Download der Software stehen zwei Optionen zur Verfügung: • ein Installationspaket • eine ZIP-Datei Im ersten Fall wird die Programmieroberfläche durch den Aufruf einer Installationsdatei auf dem Rechner installiert. Im zweiten Fall muss man die gepackte Datei herunterladen und in ein eigenes Verzeichnis entpacken. Achtung: Das Controller-Board wird zunächst noch nicht mit dem Rechner verbunden. Wenn die Installation abgeschlossen ist, öffnet man den Softwareordner und startet das Programm mit der Datei arduino.exe. Zunächst sind nun zwei wichtige Einstellungen vorzunehmen: Als erstes muss das richtige Board ausgewählt werden. Im Falle des Playground-Boards kann man den Board-Typ

"Arduino Pro oder ProMini"

● 25


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

verwenden. Die entsprechende Auswahl kann unter Werkzeuge → Board getroffen werden. Als Prozessor ist

ATmega328P (3.3V, 8 MHz)

auszuwählen. Die Spannungsangabe von 3,3V spielt hier keine Rolle. Wichtig ist jedoch, dass die korrekte Taktfrequenz von 8 MHz verwendet wird.

Abbildung 2.1: Auswahl des richtigen Boardtyps Als nächstes ist die korrekte Schnittstelle auszuwählen. Auf diese Weise wird dem PC mitgeteilt, an welchem Port-Anschluss das aktuelle Arduino-Board angeschlossen ist. Dazu wird nun der Arduino mit dem Rechner verbunden. In der Port-Auswahlliste wird nun ein Menüpunkt, z. B. COM2 angezeigt. Dieser muss nun aktiviert werden. Damit ist die Verbindung fertiggestellt.

Abbildung 2.2: Auswahl des COM-Ports

● 26


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

Nun ist das Board mit dem Rechner verbunden und das erste Programm kann auf den Controller geladen werden. Unter Datei → Beispiel → 01.Basics → Blink kann ein einfacher Sketch geöffnet werden, der eine LED blinken lässt. Alternativ kann der Sketch "Blink_1_s.ino" aus dem Programmpaket zum Buch verwendet werden. Mit Sketch → Hochladen wird dieses erste Programm auf das Controller-Board geschrieben. Wenn alles korrekt ausgeführt wurde, sollte nun die mit "LED24 PIN13" bezeichnete LED oberhalb des Schalters S15 blinken. Bei einem Original-Arduino blinkt die LED "L" oder "13". Damit wurde bereits eine erste programmgesteuerte Anwendung realisiert! Die Abbildungen und Tests beziehen sich auf die Version 1.8.5 des Arduino-Programms unter Windows 10. Bei Verwendung anderer Versionen oder anderer Betriebssystem-Varianten können sich leichte Abweichungen ergeben. Alle Programme in diesem Buch wurden mit dieser Konfiguration erstellt und geprüft. Üblicherweise sind Arduino-Sketche aufwärtskompatibel, d. h., Sketche, die auf älteren Programmierumgebungen erstellt wurden, laufen auch auf den neuen Versionen. Allerdings gibt es auch immer wieder Ausnahmen von dieser Regel. Falls es also zu Problemen kommen sollte, ist es empfehlenswert, die betreffenden Sketche mit der Version 1.8.5 zu verarbeiten. Aufgrund von Inkompatibilitäten muss bei einigen Sketchen auch eine andere IDE-Version verwendet werden. Falls dies der Fall ist, wird an entsprechender Stelle explizit darauf hingewiesen. In der hier vorgestellten Konfiguration ist kein aktive Installation von USB-Treibern mehr erforderlich. Bei älteren Betriebssystem-Versionen kann es allerdings erforderlich sein, solche Treiber manuell zu installieren. In diesem Fall meldet der PC, dass zwar das angeschlossene Board erkannt wurde, aber dennoch eine Treiberinstallation erforderlich ist. Häufig wird der erforderliche Treiber nicht automatisch geladen. Man muss diesen dann im Verlauf der Installation selber auswählen. Er befindet sich in dem Arduino-Programmordner und dort im Unterordner "Drivers". Abschließend sollte man eine einfache Kontrolle durchführen: In der Systemsteuerung des Computers findet man u. a. den "Gerätemanager". Nach einer erfolgreichen Installation ist das Arduino-Board hier aufgelistet. Andernfalls erscheint ein unbekanntes USB-Gerät, gekennzeichnet mit einem gelben Ausrufezeichen. In diesen Fall ist das unbekannte Gerät anzuklicken und die Auswahl "Treiber aktualisieren" zu aktivieren. Nun kann der Ablauf der manuellen Installation erneut durchgeführt werden.

● 27


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Der Originalchip des Playground-Boards wird mit einem Spielprogramm ("Simon says") ausgeliefert. Dieses Programm wird beim Laden eines neuen Sketches überschrieben. Im Bedarfsfall kann es jedoch wieder auf den Chip geladen werden. Der Sketch dazu ist auf der Elektor-Webpage verfügbar (siehe Downloadpaket). 2.2 Das Playground Board als Arduino UNO Das Arduino UNO hat sich in den letzten Jahren als Quasi-Standard durchgesetzt. Viele Programme und Shields sind daher für diese Version optimiert. Auch das Playground-Board kann diese Variante emulieren. Hierzu muss lediglich ein 16-MHz-Quartz in das Board eingesetzt werden. Die passenden Lastkapazitäten sind bereits vorhanden. Zusätzlich müssen noch zwei Jumper gesetzt werden, die den Quarz mit dem Controller verbinden. Die folgende Abbildung zeigt den Quarz und die beiden Jumper in der korrekten Position.

Abbildung 2.3: 16-MHz-Quartz und Jumper Wenn nun ein Controller-Chip mit UNO-Bootloader eingesetzt wird, ist das Playground-Board vollständig mit dieser Arduino-Version kompatibel. Chips mit dem entsprechenden Bootlader und 16-MHz-Quarze können in verschiedenen Onlineshops preisgünstig erworben werden (siehe Bezugsquellenverzeichnis). Alternativ kann auch der Chip eines Arduino UNOs in THT-Ausführung verwendet werden. Dazu ist lediglich der IC aus der Fassung des Arduinos zu entnehmen und in die Fassung des Playground-Boards einzusetzen. Hierbei muss darauf geachtet werden, dass die Kennkerbe des Chips mit der Markierung auf den Boards übereinstimmt. Es ist in jedem Fall empfehlenswert, das AVR-Playground-Board in der UNO-Version zu betreiben, da dann sichergestellt ist, dass alle Sketche und Shields einwandfrei arbeiten. Die in diesem Buch vorgestellten Projekte und Anwendungen wurden mit der UNO-Version getestet. Falls es zu Problemen mit anderen Chip-Versionen kommen sollte, ist es immer eine gute Idee, auf die UNO-Variante umzusteigen.

● 28


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

2.3 Ein einfacher Einstieg – der Warnblinker Einer der großen Vorzüge des AVR-Playground-Boards ist, dass es über eine Fülle von Anzeigeeinheiten verfügt. Zunächst sollen hier die LEDs zum Einsatz kommen. LEDs sind überall anzutreffen, wenn es um die Auswahl von Betriebszuständen oder Gerätefunktionen etc. geht. An Rundfunkgeräten oder Stereoanlagen dienen Sie als Anzeige für den gewählten Kanal oder als Bereitschaftsanzeige. Im Fahrzeugen wurden alle Warnlämpchen für Ölstand oder Lichtmaschine vor langer Zeit durch LEDs ersetzt. An Laptops oder Monitoren informieren sie ebenso über den Einschaltzustand wie an Tiefkühltruhen oder Spülmaschinen. Leuchtet eine LEDs kontinuierliche, so erregt sie also keine besondere Aufmerksamkeit mehr. Sie dient daher meist zur Anzeige eines Normalzustandes. Möchte man dagegen auf einen Fehlfunktion oder eine Sondersituation aufmerksam machen, so ist es besser, wenn man die LED blinken lässt. Ein typisches Beispiel hierfür ist die Kontroll-LED an einem Tiefkühlgerät. Arbeitet die Truhe einwandfrei und hält in ihrem Inneren eine Temperatur im Bereich zweistelliger Minusgrade, dann wird dies häufig durch eine konstant leuchtende LED angezeigt. Ist die Kühlung dagegen ausgefallen, so beginnt die LED zu blinken und zieht damit die Aufmerksamkeit des Kühltruhenbesitzers auf sich. Analog wird in Kraftfahrzeugen, Zügen oder Flugzeugen verfahren. Blinkende Anzeigen deuten immer auf eine besondere, meist kritische Situation hin. In einem Anwendungsbeispiel soll eine solche blinkende LED-Anzeige realisiert werden. Der Sketch dazu sieht so aus: // Blink: Using LED "L" // IDE 1.8.5 int ledPin = 13;

// Definitions

void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH);

// LED on

delay(1000);

// wait 1 sec = 1000 ms

digitalWrite(ledPin, LOW);

// LED off

delay(1000);

// wait 1 sec = 1000 ms

}

Das Programm findet sich im Downloadpaket unter Blink_1_s. In der ersten Programmzeile steht ein sogenannter Kommentar:

// Blink: Using LED "L"

● 29


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Kommentarzeilen beginnen stets mit einem Doppel-Slash "//". Nachfolgende Texte und Zeichen werden vom Compiler nicht beachtet. Sie dienen lediglich der besseren Lesbarkeit von Programmen. Mit Kommentaren sollte man nicht sparsam umgehen. Es zeigt sich immer wieder, dass Programme ohne ausreichende Kommentierung bereits nach kürzester Zeit nicht mehr nachvollzogen werden können. Zum einen sollten Kommentare kurz gehalten werden, zum anderen sollten sie aber die Funktion eines Programmblocks gut verständlich wiedergeben. Dabei muss nicht jede Programmzeile kommentiert werden, vielmehr ist es angebracht, bestimmte logische Einheiten eines Codes in Klartext zu erläutern. Der Kommentar

// IDE 1.8.5

liefert einen Hinweis auf die verwendete IDE-Version. Die erste aktive Zeile

int ledPin = 13; // Definitions

legt Pin 13 als ledPin fest. Dieser Pin ist sowohl auf dem Playground-Board als auch auf dem Arduino über einen Vorwiderstand fest mit einer LED verbunden. Pin 13 wird daher oft für Testausgaben genutzt. Mit dieser Festlegung kann nun an allen Stellen im Sketch "ledPin" geschrieben werden, wenn der Port Nummer 13 gemeint ist. Durch solche Definitionen wird die Programmierarbeit erheblich erleichtert. Insbesondere bei umfangreicheren Programmen ist es nicht mehr möglich, alle Portnummern und ihre jeweiligen Belegungen im Kopf zu behalten. Namen mit Bedeutungen, sogenannte "sprechende" Bezeichnungen erleichtern daher die Programmierarbeit ganz erheblich. Bei der nächsten Anweisung

void setup()

handelt es sich um eine Spezialität von Processing. Hier wird unter anderem festgelegt, welche Aufgaben die einzelnen Pins auf dem jeweiligen Board erfüllen sollen. In unserem Fall wird der oben definierte ledPin als Ausgang genutzt:

pinMode(ledPin, OUTPUT);

Diese "setup"-Anweisung ist in einem Arduino-Sketch immer erforderlich, selbst wenn sie keine einzige Definition enthält. Durch den Aufruf von setup werden nämlich auch interne Abläufe gestartet, welche die Arbeit mit dem Arduino erst ermöglichen.

● 30


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

Mit

void loop()

erfolgt dann der Start des Hauptprogramms. In Mikrocontrollern läuft das Hauptprogramm nahezu ausschließlich in einer Endlosschleife (englisch "loop") ab. Da Controller nicht über eigene Betriebssysteme verfügen, darf die Hauptprogrammschleife nicht verlassen werden. Würde das Ende eines Programms erreicht, bliebe der Controller einfach stehen und könnte erst nach der Durchführung eines Resets wieder die Arbeit aufnehmen. Die Endlosschleife sorgt also dafür, dass der Prozessor solange arbeitet, bis die Betriebsspannung abgeschaltet wird. Mit

digitalWrite(ledPin, HIGH);

wird der ledPin auf "HIGH"-Potential gesetzt. Das bedeutet, dass die LED-Anode auf eine Spannung von 5 V gelegt wird. Dadurch beginnt die LED zu leuchten. Die Leuchtdauer der LED wird mit

delay(1000);

// wait 1 sec = 1000 ms

festgelegt. Damit erhält der Prozessor den Auftrag, 1000 ms = 1 s zu warten. Abschließend wird mit

digitalWrite(ledPin, LOW); // LED off

die LED wieder ausgeschaltet und bei dunkler LED nochmals eine Pause von 1 s eingelegt. Dann beginnt das gesamte Spiel wieder von vorn, da das Hauptprogramm ja in einer Endlosschleife abläuft. Die LED blinkt damit nun mit einer Periodendauer von 2 s, was einer Frequenz von f = 1/(2s) = 0,5 Hz entspricht. 2.4 Praxisanwendung: Alarmanalgen-Simulator Als erste Praxisanwendung kann ein Alarmanlagensimulator aufgebaut werden. Derartige Geräte werden durchaus auch in verschiedenen Variationen eingesetzt. Das Kernelement bildet eine LED, die in regelmäßigen Abständen kurz aufblitzt. Solche Simulatoren werden an geeigneter Stelle, beispielsweise in einem Fahrzeug, eingebaut. Sie sind von einer scharf geschalteten Alarmanlage nicht zu unterscheiden, und zumindest Gelegenheitsdiebe lassen sich damit von einem Einbruch abschrecken. Das zugehörige Programm sieht folgendermaßen aus und findet sich auch im Programmpaket wieder:

● 31


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

// Alarm_simulator.ino // IDE 1.8.5 int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(3000); }

Die Unterschiede zum Blink-Sketch bestehen in den folgenden Änderungen: 1. Die Kommentarzeilen, welche mit "//" beginnen, wurden angepasst. 2. Der Pin für die LED wurde von 13 auf 2 geändert. Damit ist nun die dort angeschlossene externe LED aktiv. 3. Die Werte in der Funktion "delay" wurden von jeweils 1000 auf 100 bzw. 3000 geändert. Damit wird aus dem regelmäßigen Blinken ein kurzes Aufblitzen. Wenn der neue Sketch geladen wird, blitzt die angeschlossene LED nun im Abstand von jeweils 3 Sekunden kurz auf. Der Alarmanlagensimulator ist nun einsatzbereit! Für eine reale Anwendung müsste man jetzt nur noch eine LED über einen Vorwiderstand und etwas längere Drähte mit dem Board verbinden und diese an geeigneter Stelle in ein Fahrzeug einbauen. 2.5 SOS-Notsignale Eine weitere nützliche Anwendung ist eine automatische SOS-Bake. Diese könnte in Notsituationen sogar Leben retten. Zum Aussenden des bekannten SOS-Signals muss eine LED zunächst 3x kurz dann 3x lang und schließlich wieder 3x kurz aufblinken. Diese Signalfolge soll sich dauerhaft wiederholen. Man kann den Code für den Alarmanlagensimulator sehr einfach so abändern, dass die LED das gewünschte Signal sendet. Anschließend kann die eigene Lösung mit dem nachfolgenden Musterprogramm verglichen werden.

● 32


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

/// SOS_simple.ino // IDE 1.8.5 int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW);

delay(1000);

digitalWrite(led, HIGH); delay(400); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(400); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(400); digitalWrite(led, LOW);

delay(1000);

digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW);

delay(1000);

delay(2000); }

Natürlich ist dies nicht die eleganteste Methode, aber man sieht, dass so bereits ohne genaue Kenntnis der verwendeten Programmiersprache eigene Projekte realisierbar sind. In späteren Kapiteln wird noch genauer darauf eingegangen, wie man ein derartiges Programm wesentlich effizienter implementieren kann. Dennoch erfüllt das Programm seinen Zweck. Verwendet man als LED einen besonders lichtstarken Typ, so kann die Schaltung beispielsweise in See- oder Bergnot durchaus nützlich sein. Das Programm wird später mit Hilfe von weiteren Anweisungen, sowie als Grundlage für die Erstellung eigener Bibliotheken noch eine wichtige Rolle spielen.

● 33


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

2.6 C und "Processing" - Ein Vergleich Die ersten Beispiele zeigten, dass die Processing-Programme der Arduino-IDE für Einsteiger sehr leicht zu lesen sind. Dennoch basiert Processing auf der klassischen Programmiersprache "C". Die in C so beliebten Abkürzungen werden hier jedoch vermieden und durch wesentlich leichter verständliche Anweisungen ersetzt. Der einfache Blink-Sketch ist mit Grundkenntnissen der englisch Sprache bereits recht gut lesbar. Man kann ohne große Vorkenntnisse schon vermuten, dass eine Leuchtdiode (LED) in einem bestimmten Rhythmus geschaltet wird. Ein entsprechendes Standard-Programm in C sieht da schon wesentlich kryptischer aus: // blink_C.ino #define F_CPU

16e6

#include <avr/io.h> #include <util/delay.h> int main(void) { DDRB = 0b00100000; while (1) { PORTB|=(1<<5); _delay_ms(1000); PORTB&=~(1<<5); _delay_ms(1000); } return 0; }

Insbesondere durch die für C typischen Bitmanipulationen und die logischen Operatoren (|, &, ~, << etc.) wird der embedded C-Code als schwer lesbar empfunden. Andererseits wird aber auch bereits bei diesem einfachen Programmbeispiel die enge Verwandtschaft zwischen Arduino-Processing und C deutlich. In der Tat ist es sogar so, dass sich im Hintergrund der einfachen Arduino-IDE ein kompletter AVR-GCC-Compiler verbirgt. Die simplen "Einstiegsanweisungen" wie "digitalWrite()" sind dabei nur vorgefertigte Funktionen und Unterprogramme von der gleichen Art, wie sie in späteren Abschnitten noch näher erläutert werden. Deutliche Unterschiede zeigen sich auch in der Programmgröße im .hex-Format:

Blink_1s.ino: Blink_C.ino:

940 Bytes 178 Bytes

Der C-Code benötigt als weniger als 20% des Speicherplatzes im Vergleich zum Processing-Sketch. Auch in der Ablaufgeschwindigkeit ist der reine C-Code der Processing-Version deutlich überlegen.

● 34


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

Maximale "Blinkfrequenz" (ohne Delay):

C: Processing:

2.667 MHz = 16 MHz / 6 Taktzyklen 0.145 MHz = 16 MHz / 110 Taktzyklen

Die beiden folgenden Oszillogramme verdeutlichen dies.

Abbildung 2.4: Mit Processing programmiertes Rechtecksignal

Abbildung 2.5: Direkt in C programmiertes Rechtecksignal

â—? 35


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Hierbei ist zu beachten, dass das obere Signal mit 1 Mikrosekunde pro Skalenteil, das untere dagegen mit 100 Nanosekunden pro Skalenteil aufgenommen wurde. 2.7 Ausgaben auf das Display Ein weiterer besonderer Vorteil des AVR-Playgrounds liegt darin, dass es über ein integriertes alphanumerisches Display verfügt. Damit lassen sich ohne großen Aufwand Zahlen und Texte ausgeben und darstellen. Das Display eignet sich auch ganz hervorragend für einfaches "Debugging", also für die Fehlersuche in einem Programm oder Sketch. Für die Ansteuerung steht eine hervorragende Bibliothek zur Verfügung. Diese kann unter https://github.com/olkal/LCD_ST7032 kostenlos aus dem Internet geladen werden. Um die Bibliothek zu installieren, muss zunächst die ZIP-Datei "LCD_ST7032-master.zip" heruntergeladen und entzippt werden. Dann ist ein neues Unterverzeichnis "LCD_ST7032" unter dem Ordner "libraries" im Arduino-Verzeichnis zu erstellen. Abschließend sind die beiden im ZIP-Archiv enthaltenen Dateien in das neu erstellte Verzeichnis zu kopieren. Damit steht die Bibliothek in der IDE zur Verfügung. In ähnlicher Weise können auch weitere Bibliotheken installiert werden. Details dazu finden sich im Abschnitt "4.3 Erweiterte Möglichkeiten: Einfügen von Bibliotheken". Dort wird nochmals genau beschrieben, wie Bibliotheken eingesetzt und installiert werden. Falls die Installation korrekt durchgeführt wurde, ist das Display nun einsatzbereit. Der folgende Sketch zeigt, wie man Texte und Daten auf dem Display anzeigen kann: // LCD_ST7032_test_LIB.ino // IDE 1.8.5 #include <LCD_ST7032.h> LCD_ST7032 lcd; float counter = 10; void setup() { lcd.begin(); lcd.setcontrast(24); //contrast value range is 0-63, try 25@5V or 50@3.3V //as a starting value } void loop() { lcd.setCursor(0, 0);

//LINE 1, ADDRESS 0

lcd.print("LCD-Test"); // Write the counter on the second line... lcd.setCursor(1, 0);

● 36


Kapitel 2 • Die Programmier- und Entwicklungsumgebung

lcd.print(counter/10.0, 1); // lcd.write(‘.’); // lcd.print(counter%10, DEC); // lcd.write(‘ ‘); delay(500); counter++; }

Nach dem Laden des Sketches sollte das Display wie in der folgenden Abbildung aussehen:

Abbildung 2.6: Das LC-Display in Aktion Weitere Informationen zum Einsatz und zur Ansteuerung des Displays finden sich im Kapitel 19: Alphanumerische- LC-Displays. Nachdem die Grundfunktionen des Bords erfolgreich getestet wurden, steht einem tieferen Einstieg in die Welt der Mikrocontroller-Programmierung nichts mehr im Weg. Das folgende Kapitel liefert eine fundierte Einführung in die Programmierung in Processing und C.

● 37


Mikrocontroller-Technik - Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Index Symbolen 6-Pin-Schnittstelle 275

J Jumper-Kabel 303

A A/D-Wandler, 150 API-Key 297 Arduino-IDE 70 Arduino-Klon 22 Arduino-kompatiblen Bootloader 276 Arduino-Programmierumgebung 25

K Keypads 115 Klimadaten 272

B Baudrate 154 Bauteilesortiment 305 Bibliotheken 70 Bootloader 275 BPW40 304 Bussysteme 257, 271 C Channel-ID benötigt 297 Chip-Select-Leitung 274 D DHT-11

150

E Elektretmikrofon 153 F Fernbedienung 245 Feuchte- 150 Funktionen 63 H HD44780-LCD 271 I 271 I2C I²C-Sensoren 272 I²C-Systme 271 ICSP- 275 ICSP-Schnittstelle 275 In Circuit Serial Programming 275

● 310

L Libraries 70 LIBs 70 Login-Page erfolgen 297 M Master-Slave-Bus-System 272 Modul 280 N Netzwerk-Controller 262 P Port-Auswahlliste 26 Programmer 276 Programmieroberfläche 25 Programmierung 275 Pull-up-Widerständen 272 R RFID-Modul 280 RFID-System 282 S SainSmart UNO 22 Single-Chip-Netzwerk-Interface 304 SPI-Bus 274 Spike 301 SPI-Port 275 SPI-Schnittstelle 275 T Tastatur 115 Thingspeak 297 W W5100-Modul 304


Index

W5100-Shield 304 Wired-AND-Schaltung 272 WLAN 260 Z ZIP-Datei 70

â—? 311



Mikrocontroller-Technik Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board

Dr. Günter Spanner

Der Autor des vorliegenden Buches ist seit über 20 Jahren im Bereich der Elektronikentwicklung und der Physikalischen Technologie für verschiedene Großkonzerne tätig. Neben seiner Tätigkeit als Dozent hat er sehr erfolgreich Fachartikel und Bücher zum Thema Elektronik, Halbleitertechnik und Mikrocontroller veröffentlicht sowie Kurse und Lernpakete zu diesen Themen erstellt. ISBN 978-3-89576-337-3

Elektor-Verlag GmbH 52072 Aachen www.elektor.de

Mikrocontroller haben sich in den letzten Jahren in praktisch allen Bereichen der modernen Technik etabliert. In zunehmendem Maße dringen sie auch in die Gebiete der Künstlichen Intelligenz und der Robotertechnik vor. Das vorliegende Buch gibt eine umfassende Einführung in die Welt der Controller-Technik mit all ihren Facetten, von der einfachen Steuerung über die Sensor-Technik bis hin zur Datenübertragung in das Internet. Als Basis dafür dient das von Elektor entwickelte AVRPlayground-Board. Das Board kann mit Controllern der ATmega-Familie bestückt werden und ist mit dem bekannten Arduino-System kompatibel, so dass auch die verschiedenen Arduino-Hardware-Erweiterungen verwendet werden können. Für die Programmierung kommt die Sprache „C“ zum Einsatz. Auch hier wird im Buch auf das Arduino-System zurückgegriffen. Die frei verfügbare Arduino-Entwicklungsumgebung erlaubt den leichten Einstieg, ohne dass später Einschränkungen in Kauf genommen werden müssten. Die Hardware-nahe Programmierung steht dabei besonders im Fokus. Nach der Erläuterung von grundlegenden Anwendungen wird auf die anspruchsvolleren Themen wie Interrupts, Timer und Counter, Pulsweitenmodulation und Analog-Digital-Wandlung eingegangen. Praktische Anwendungen können sowohl mit einem Arduino als auch mit dem AVR-Playground-Board durchgeführt werden. Da das AVR-Playground-Board bereits über eine Vielzahl von Peripherie-Einheiten verfügt, sind nur noch wenige externe Bauteile erforderlich. Das Board kann im Elektor-Shop unter www.elektor.de/129009-72 bezogen werden.

LEARN DESIGN SHARE

● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEA SIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● D HARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN N ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LE SIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ●


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.