Programming Arduino (TM) Next Steps
Going further with Sketches
Simon Monk
McGraw Hill
ISBN: 978-0-07-183026-3
Die kurze Rezension: ein neues Highlight von Simon Monk.
Die lange Version:
Dieses Buch ist für fortgeschrittene Arduino-Anwender (oder mutige Neulinge) geschrieben. Das erste Kapitel beginnt (wie üblich) mit der Einführung, was Arduino ist, der Installation der IDE und dem Hochladen des allgegenwärtigen Blink-Sketches – ähnlich knapp wie diese Beschreibung des Kapitels. Ferner wird beschrieben, was auf einem Arduino-Board zu sehen ist.. Ein Vorstellung der Arduino-Familie und eine Auffrischung in C rundet dieses Kapitel ab. Vor allem der erste Teil ist in anderen Büchern (z.B. Simon Monk, „Programming Arduino: Getting Started with Sketches“) wesentlich ausführlicher beschrieben – wie der Titel schon nahelegt, soll das Buch keine Einführung sein.
Das zweite Kapitel schaut dem Arduino (hardware- und softwaremäßig) unter die Haube. Hier wird nützliches Hintergrundwissen vermittelt. Das Kapitel beginnt mit dem Aufbau eines Mikrocontrollers und einer Beschreibung, welche Mikrocontroller in der Arduino-Familie verbaut werden. Anschließend wirft Monk einen Blick auf die Dateien der IDE, die ein Anwender normalerweise nicht zu sehen bekommt (allen voran Arduino.h und main.cpp). Weiterhin erklärt Monk den Weg vom Sketch in der IDE zum ausführbaren Code im Arduino. Zum Schluß des Kapitels wird erklärt, wie ein Arduino mit AVR Studio (Atmels proprietäre Software zur Programmierung der Atmel-Mikrocontroller) programmiert werden kann.
Die nächsten drei Kapitel beschäftigen sich mit Dingen, die über die „normale“ Arduino-Benutzung hinausgehen. Zuerst vermittelt Monk Kenntnisse in Interrupt-Programmierung. Er beschreibt, dass Interrupts die sequentielle Ausführung eine Programms unterbrechen, was für Vor- und Nachteile dies hat, und was zu beachten ist. Außer diesen Hardware-Interrupts beschreibt Monk noch Timer-Interrupts.
Drei weitere Kapitel erläutern Methode zur Optimierung eines Sketches. Das Kapitel zur Beschleunigung wiederholt im Wesentlichen das, was für jede Programmiersprache auf jeder Hardware gültig ist. Nur das Ende des Kapitels ist Arduino-spezifisch. Aber auch erfahrenen Programmierern sei die Lektüre zur Auffrischung empfohlen.
Das Kapitel über Energiesparen ist wieder Arduino-spezifisch. Allein dieses Kapitels wegen lohnt sich der Kauf des Buches. Dass und wie Teile des Mikrocontrollers abgeschaltet werden können, findet man sonst nicht so einfach zusammengestellt. Auch die Beschreibung, wie ein Mikrocontroller für eine gewisse Zeit schlafen geschickt werden kann, ist hilfreich.
Ein Großteil des letzten Kapitels dieses Abschnitts sollte erfahrenen Programmieren wieder bekannt vorkommen. Im Gegensatz zu einem PC hat ein Mikrocontroller nur sehr begrenzt Speicherplatz; Monk gibt die üblichen Tipps zur Reduzierung des Programmgröße.
Weiter geht es mit der Erklärung diverser Protokolle: I2C, 1-Wire, SPI, UART, USB. Diese Erklärungen beschränken sich nicht auf die Verwendung der bestehenden Bibliotheken, sondern Simon Monk erklärt den Aufbau der Protokolle und Bibliotheken.
Ein weiteres Kapitel beschäftigt sich mit der Netzwerk-Programmierung. Dies wird an Hand des Ethernet- und des WiFi-Shield wird ausführlich erklärt. Als Beispiel wird ein einfacher Webserver auf dem Arduino aufgesetzt.
Mit digitaler Signalverarbeitung beschäftigt sich das nächste Kapitel. Obwohl ein Arduino dafür eigentlich zu klein ist, beschreibt Monk die Verarbeitung von Signalen bis hin zur schnellen Fourier-Transformation (FFT).
Schließlich erklärt Monk, wie in einem Sketch mehrere Aufgaben (quasi) parallel abgearbeitet werden können. Programmierern, die es gewohnt sind auf größeren Systemen parallele Aktionen zu programmieren, können hier lernen, dass man auf Threads u.ä. verzichten kann.
Im letzten Kapitel schreibt Monk eine Library und erklärt die dafür nötigen Schritte bis zur Veröffentlichung auf der arduino.cc.
Insgesamt ist dieses Buch für fortgeschrittene Arduinistas sehr zu empfehlen – für Anfänger ist es eher eine Herausforderung.