ℹ️ Document Conversion Notice: This page was converted from the original file for easier reading. Diagrams/images may appear only in the original PDF below.
Document preview
File info: application/pdf · 12 pages · 331.01KB

Errata-Dokument

Korrekturen und Ergänzungen zum Buch Mikrocontroller-Praxiskurs für Arduino-Fortgeschrittene, 1. Auflage

Seite 25, 34, 36, 82

Das Datenblatt des Mikrocontrollers ATmega328P hat im Literaturverzeichnis die Nummer [13].

Seite 31

Originalsatz: Mit #include <avr/wdt.h> (siehe Einsteigerkurs in Literaturverzeichnis [1]) kann man eine Watchdog-Library in einen Arduino-Sketch einbinden.

Ersetzen durch: Mit #include <avr/wdt.h> (siehe C-Kurs in Literaturverzeichnis [29]) kann man eine Watchdog-Library in einen Arduino-Sketch einbinden.

Seite 74

Command Antwort des HC-05 Beispiel
Werkseinstellung OK AT+ORGL
AT+ORGL3

Die Ziffer 3 ist hier falsch, sie muss entfernt werden. Das richtige Command ist in der Spalte Beispiel angegeben.

Seite 79

Die Pfostenleisten JP1, JP21 und JP3 auf dem USBasp

Mit den Pfostenleisten JP1, JP21 und JP3 können die unterschiedlichen Betriebsarten des USBasp eingestellt werden.

Ergänzende Information: Je nach Hersteller des USBasp(-Klons) können die Bezeichnungen und Beschriftungen der drei Pfostenleisten von den hier genannten abweichen! Dies ist vor allem dann der Fall, wenn der Hersteller auch andere Änderungen am Originalschaltplan von Thomas Fischl vorgenommen hat.

Seite 87

Ergänzende Information: Projekt 24 zeigt, dass der Treiber »libusb0 (v1.2.7.3)« aus »libusb-win32 (v1.2.7.3)« mit dem in die Arduino IDE integrierten avrdude (siehe Abschnitt 5.14) Probleme zu haben scheint. In Projekt 24 wird dieser Treiber daher durch den Treiber »libusbK« ersetzt.

Seite 92

Open Serial Plotter – öffnet den Seriellen Plotter. Der Button ist gegenüber Version 1.8.19 neu hinzugekommen, in Version 1.8.19 wird der Plotter nur im Menü Tools (Werkzeuge) geöffnet. Statt wie in Version 1.8.19 in einem neuen Window öffnet sich der Plotter jetzt in einem Tab unterhalb des Editors.

Die in rot gedruckte Aussage muss entfernt werden.

Ergänzende Information: In Version 2.x der IDE wurde die Unterteilung in Abschnitte und auch die Auflösung des Plotters in horizontaler Richtung geändert, siehe unten.

Zusätzliche Information zum seriellen Plotter der Arduino IDE 2.3.3:

[Warning] In der momentan aktuellsten Version 2.3.3 der Arduino IDE ist die x-Achse des Seriellen Plotters nur in 4 Abschnitte unterteilt und hat nur noch eine Auflösung von 50 Punkten in horizontaler Richtung statt der bisherigen 500 Punkte aus Version 1.x der Arduino IDE. Auch die Beschriftung der x-Achse erscheint etwas "seltsam". Diese "kümmerliche" Auflösung von nur 50 Punkten in x-Richtung ist für die meisten Anwendungen viel zu wenig.

Da der Serielle Plotter in der Form von Version 2.3.3 praktisch nicht zu verwenden ist, muss nach einer Alternative gesucht werden.

  1. Die einfachste Möglichkeit ist die Rückkehr zur Version 1.8.19 der Arduino IDE bei Projekten, die den seriellen Plotter benötigen. Es besteht die Möglichkeit, sowohl die Version 1.8.19 als auch die jeweils aktuellste Version der IDE parallel auf einem Rechner zu betreiben. Die Version 1.8.19 verwendet noch den „guten alten“ Plotter mit einer Unterteilung in 5 Abschnitte und einer Auflösung von 500 Punkten in horizontaler Richtung.
  2. Eine (etwas umständlichere) Möglichkeit ist die Umstellung der Auflösung des neuen Plotters auf ebenfalls 500 Punkte in x-Richtung. Leider ist nirgends offiziell dokumentiert, wie diese Einstellung geändert werden kann. Es bleibt nur zu hoffen, dass die „Arduino-Macher“ in einer der nächsten Versionen der IDE zur ursprünglichen Auflösung von 500 Punkten und zur ursprünglichen Unterteilung in 5 Abschnitte zurückkehren oder – noch besser – die Auflösung in x-Richtung einstellbar machen.

Seite 3

Wenn man unbedingt den neuen Plotter verwenden möchte, muss man diese Default-Einstellung solange manuell ändern, bis der neue Plotter in ein verwendbares Format gebracht worden ist – und das bei jedem neuen Release der IDE erneut!

Im Arduino-Forum findet sich dazu ein Beitrag von John Lincoln, der die Vorgehensweise erklärt (https://forum.arduino.cc/t/serial-plotter-output-too-fast/1233965).

Hier in blauer Kursivschrift die deutsche Übersetzung des Artikels von John Lincoln:

In Version 2.x.x der IDE ist der Serielle Plotter eine Webanwendung, die als Teil der Arduino IDE installiert wird. Da er als Webanwendung läuft, kann der gebündelte Quellcode auf dem lokalen Rechner geändert werden.

Das Paket ist im Installationsordner der Arduino IDE zu finden:

C:\Benutzer\Ihr Benutzername\AppData\Lokal\Programme\Arduino IDE\resources\app\lib\backend\resources\arduino-serial-plotter-webapp\static\js\main.35ae02cb.chunk.js

Diese Datei kann bearbeitet werden, um die Anzahl der aufgezeichneten Punkte zu ändern.

Sie müssen den Eintrag:

U=Object(o.useState)(50)

ändern in:

U=Object(o.useState)(500)

Suchen Sie in Notepad oder Notepad++ einfach nach 'U=Object(o.useState)' und ändern Sie (50) in (500) oder wie immer Sie wollen.

Sie können es jederzeit wieder ändern, wenn Sie es wünschen.

Seite 4

Bild: John Lincoln

Tipp: Wenn Sie sich dafür entscheiden, notieren Sie sich die Vorgehensweise, da Sie den Vorgang bei jeder Aktualisierung der IDE wiederholen müssen.

Ergänzende Information:

Hinweis: Wenn die Arduino-IDE zur Verwendung durch alle Benutzer des PCs installiert wurde, lautet der Verzeichnispfad: C:\Program Files\Arduino IDE\resources\app\lib\backend\resources\arduino-serial-plotter-webapp\static\js\main.35ae02cb.chunk.js

Anmerkung: Das File main.35ae02cb.chunk.js kann nur mit Administratorrechten bearbeitet und gespeichert werden. Es muss deshalb als Administrator geöffnet werden. Alternativ kann man seine Eigenschaften so ändern, dass es alle Nutzer bearbeiten und speichern dürfen.

Nach einer Änderung der Einstellung gemäß der oben beschriebenen Vorgehensweise konnte z.B. Abbildung 121 auch mit dem neuen Plotter der Version 2.3.3 wieder wie gewohnt mit einer Auflösung von 500 Punkten in horizontaler Richtung auf dem Seriellen Plotter 2.x angezeigt werden.

Seite 94 oben: Der C-Kurs hat im Literaturverzeichnis die Nummer [29].

Seite 97

Originalabschnitt: Bei der Übergabe der Parameter gemäß der obigen Definition der Function werden die übergebenen Zahlenwerte auf den Stack kopiert (siehe Abschnitt 4.1.3). Von dort werden sie in die lokalen Variablen im Rumpf der Function übertragen.

Ersetzen durch: Bei der Übergabe der Parameter gemäß der obigen Definition der Function werden die übergebenen Parameter auf den Stack kopiert (siehe Abschnitt 4.1.3). Hier werden sie als lokale Variablen im Rumpf der Funktion verwendet.

Seite 130

In der Beschreibung der Methode:

float computeVolts (
      int16_t adcValue
    )

fehlt die Beschreibung des Parameters adcValue:

Parameter: adcValue

Der Wert, für den die entsprechende Spannung berechnet werden soll.

Seite 133

Ergänzende Information zum Abschnitt »Die Darstellung der Abtastwerte auf dem Seriellen Plotter«

Die Auflösung der horizontalen Achse des Seriellen Plotters beträgt ab Version 2.x der Arduino IDE statt der bisherigen 500 nur noch "kümmerliche" 50 Punkte. Mit dieser Auflösung ist eine vernünftige Anzeige des gescannten Signalverlaufs nicht möglich! Zur Anzeige des aufgezeichneten Signalverlaufs verwendet man deshalb zweckmäßigerweise den Seriellen Plotter der Arduino IDE 1.8.19 oder ändert die Auflösung des „neuen“ Plotters auf 500 Punkte (siehe obige Anmerkungen zu Seite 92).

Seite 135

Tabelle 9 ersetzen durch:

timebaseIndex Time/Div Scan Time Tconv
T130us 130 µs 650 µs 6.5 µs
T325us 325 µs 1.625 ms 6.5 µs
T650us 650 µs 3.25 ms 6.5 µs
T1_3ms 1.3 ms 6.5 ms 13 µs
Time/Div Scan Time Tconv
T2_6ms 2.6 ms 13 ms 26 µs
T5_2ms 5.2 ms 26 ms 52 µs
T10_4ms 10.4 ms 52 ms 104 µs
T20_8ms 20.8 ms 104 ms 104 µs
T52ms 52 ms 260 ms 104 µs
T104ms 104 ms 520 ms 104 µs

Tabelle 9: Zeitbasen und Umsetzungszeiten der Library FastADC

Seite 140

Ergänzende Informationen zu Tabelle 10:

Bei der Methode getConversionTime() den Beschreibungstext

Original: Der Rückgabewert der Methode getConversionTime() ist die aktuell eingestellte Umsetzungszeit Tconv des Analog/Digital-Converters.

Ersetzen durch: Der Rückgabewert der Methode getConversionTime() ist eine Zahl, die der aktuell eingestellten Umsetzungszeit Tconv des Analog/Digital-Wandlers entspricht.

Die Library FastADC wurde um die Methode getScanTimeText() zur Abfrage des Zeichenstrings für den Wert der Scan Time (die Zeit für die Abtastung aller 500 Punkte) der als Parameter timebaseIndex übergebenen Zeitbasis ergänzt:

void getScanTimeText (
      uint8_t timebaseIndex,
      char* text
    )

getScanTimeText() schreibt einen aus 6 Zeichen plus Terminator '\0' bestehenden Text-String in ein Zeichenketten-Array im Sketch des Anwenders.

Der Text-String ist der Wert der Scan Time (siehe Tabelle 9) der als Parameter timebaseIndex übergebenen Zeitbasis und kann z. B. auf das LCD ausgegeben werden.

Parameter:

  • timebaseIndex: Index zur Einstellung der Zeitbasis Time/Div gemäß Tabelle 9
  • text: Pointer auf ein Array im Sketch des Anwenders, in das der Text-String geschrieben werden soll.

Beispiel:

char text[7]; // Platz für 6 Zeichen plus '\0'
    Adc.getScanTimeText(T20_8ms, text);

In das Array text wird die dem timebaseIndex T20_8ms entsprechende Zeichenkette "104ms " geschrieben.

Seite 187

In der Erklärung zu Zeile 40 von Projekt 6.1 muss statt des Dezimalkommas ein Dezimalpunkt stehen:

Wir addieren also noch den Wert 0.5 zu dem Exponentialwert und erhalten:

y = (1.021983957 x 1) + 0.5 = 1.021983957 x 0.5

Seite 190

Die erste Zeile

Original: In Projekt 1 haben wir ein „Ruckeln" der Leuchtintensität der linear gedimmten LED bei kleinen Werten festgestellt, das als störend empfunden werden könnte.

von Projekt 6.2 ersetzen durch: In Projekt 1 haben wir ein „Ruckeln" der Leuchtintensität der exponentiell gedimmten LED bei kleinen Werten festgestellt, das als störend empfunden werden könnte.

Seite 210

Ergänzende Information zu Projekt 6.4

[Warning] Wenn der Serielle Plotter in Version 2.3.3 (oder höher) der Arduino IDE nur 50 statt der erforderlichen 500 Punkte in horizontaler Richtung anzeigt, liegt das an seiner Standardeinstellung, die seit Version 2.x der Arduino IDE geändert wurde. Um eine korrekte Anzeige wie in Abbildung 121 zu erhalten, muss diese Einstellung korrigiert werden (wie wie oben in den Anmerkungen zu Seite 92 beschrieben).

Alternativ kann auch der Serielle Plotter der Arduino IDE 1.8.19 verwendet werden, der eine Unterteilung in 5 Abschnitte und eine Auflösung von 500 Punkten in x-Richtung hat (siehe obige Anmerkungen zu Seite 92).

Seite 254

Die Zeilen

107 | condition = DARKNESS; // Index des letzten Status-Namens
    108 | lastPrinted = NO_STATE; // Index des letzten Status-Namens

ersetzen durch

107 | condition = DARKNESS; // Initialisierungszustand der FSM
    108 | lastPrinted = NO_STATE; // der letzte auf dem LCD angezeigte Status

Seite 274

Die Zeile

51 | // Function wird ausgeführt, wenn der Taster K5 gedrückt wird

ersetzen durch

51 | // Function wird ausgeführt, wenn der Taster K1 gedrückt wird

Seite 301

Den Satz

Anschließend zeigt loop() mit der Leuchtdiode LD12 (siehe Tabelle 15) das Warten auf das Triggerereignis an und aktiviert die Methode record() der Library FastADC, die den Abtastvorgang durchführt und die gescannten Werte in das Array convArray[] speichert.

ersetzen durch

Anschließend zeigt loop() mit der Leuchtdiode LD12 (siehe Tabelle 16) das Warten auf das Triggerereignis an und aktiviert die Methode record() der Library FastADC, die den Abtastvorgang durchführt und die gescannten Werte in das Array convArray[] speichert.

Seite 305, Seite 319

Ergänzende Information am Ende von Projekt 13 und 14:

[Warning] Wenn der Serielle Plotter in Version 2.3.3 (oder höher) der Arduino IDE nur 50 statt der erforderlichen 500 Punkte in horizontaler Richtung anzeigt, liegt das an seiner Standardeinstellung, die seit Version 2.x der Arduino IDE geändert wurde. Um eine korrekte Anzeige wie in Abbildung 121 zu erhalten, muss diese Einstellung korrigiert werden (wie wie oben in den Anmerkungen zu Seite 92 beschrieben).

Alternativ kann auch der Serielle Plotter der Arduino IDE 1.8.19 verwendet werden, der eine Unterteilung in 5 Abschnitte und eine Auflösung von 500 Punkten in x-Richtung hat (siehe obige Anmerkungen zu Seite 92).

Seite 321

Auf Seite 321 wird an drei Stellen auf Abbildung 121 Bezug genommen.

Richtig ist:

Dazu lesen wir das letzte Wandlungsergebnis des ADS1115 ein (Pfeil in Abbildung 121 Abbildung 164).

HIGH-Pegel (③ in Abbildung 121 Abbildung 164)

LOW-Pegel (④ in Abbildung 121 Abbildung 164)

Seite 346

Ergänzende Information zu Abschnitt »Eingabe und Test des Sketches«:

Da der Serielle Plotter der IDE in Version 2.3.3 nicht zufriedenstellend funktioniert, verwenden wir den Seriellen Plotter der IDE 1.8.19 (siehe obige Anmerkungen zu Seite 92).

Seite 356

Hier ist Library SoftwareSerial einmal zuviel:

Zeilen 16 ... 17

Deklaration der beiden Objektvariablen Serial_HC05 und Lcd. Über diese Variablen greifen wir auf die Methoden der in den Zeilen 5 ... 6 in den Sketch eingebundenen Libraries SoftwareSerial Library SoftwareSerial und LiquidCrystal_I2C zu. Bei der Deklaration von Serial_HC05 werden als ...

Seite 361

Die Bildunterschrift

Original: Abbildung 183: Überprüfung der BIND-Adresse des Masters und neuer Verbindungsmodus: Verbinden nur mit festgelegter Adresse

ersetzen durch: Abbildung 183: Überprüfung der BIND-Adresse des Masters und neuer Verbindungsmodus: Nur mit gespeicherter Adresse verbinden

Seite 376

Den Satz

Um die längeren Schieberegler auf dem Panel unterzubringen, stellen wir das Raster des Panels wie in Abbildung 188 auf 13 x 7 ein.

ersetzen durch

Um die längeren Schieberegler auf dem Panel unterzubringen, stellen wir das Raster des Panels wie in Abbildung 188 auf 13 x 9 ein.

Seite 376 (Abbildung 188)

Abbildung 188 ersetzen durch:

Eine grafische Benutzeroberfläche mit dem Titel "LED Brightness Control". Sie zeigt mehrere Schieberegler für Farben wie Rot, Gelb, Grün und Blau. Darunter befindet sich eine Einstellung für "Grid Size" (Rastergröße), die auf "13 X 9" eingestellt ist. Auf der rechten Seite befindet sich eine Liste von UI-Elementen wie "Pads", "Panel 9", "Accelerometer", "Indicators", "Graphs", "Terminals", "Panel Notes", "Import/Export", "Library", "Clear", und "Grid Size".

Seite 402

Den Abschnitt

Nach dem Hochladen des Sketches schließen wir die Arduino IDE und trennen die Versorgungsspannung des MCCAB Trainingsboards ab. Wir verbinden das Modul HC-05 mit dem MCCAB Trainingsboard gemäß Abbildung 190 in Projekt 19.

ergänzen wie folgt:

Nach dem Hochladen des Sketches schließen wir die Arduino IDE und trennen die Versorgungsspannung des MCCAB Training Boards ab. Wir verbinden das Modul HC-05 mit dem MCCAB Trainingsboard gemäß Abbildung 190 in Projekt 19 unter Beachtung der im Einführungstext dieses Projekts erwähnten Ausnahmen: Abweichend von Abbildung 190 verbinden wir den Status-Pin STATE des HC-05 mit Pin A0 der Stiftleiste SV6. Auf die Position S+K1 der Stiftleiste JP2 darf kein Jumper gesteckt sein!

Seite 486

Richtig ist:

Hier das Beispiel für Test 1:

Senden Sie die Nummer des gewünschten Tests via Seriellen Monitor: 1

Test 1: S1..S4 und LEDs LD10..LD20 + L: Schalter betätigen und LEDs überprüfen

Folgende Verbindungen auf dem MCCAB Trainingsboard herstellen:

JP1: alle Positionen offen

JP2: Brücken auf S+K1..S+K4, S+K5..S+K6 offen

JP6: Brücken auf den Positionen D2..D12

Test nach Herstellung der Verbindungen durch ein Zeichen vom Monitor starten:

Seite 506

8 Literaturverzeichnis, Einträge [17] bis [20]:

Bei einer Überprüfung im Juni 2024 waren unter den Links der Einträge [17] bis [20] die betreffenden Manuals und Datenblätter zum Thema HC-05 gespeichert.

Bei einer erneuten Überprüfung nach dem Druck des Buches im November 2024 waren die Links (durch einen Hackerangriff?) auf andere, potentiell gefährliche Sites im Netz umgeleitet worden!

Es wird dringend abgeraten, die im Literaturverzeichnis unter [17] bis [20] angegebenen Links zu aktivieren!

Deshalb im Literaturverzeichnis die Einträge [17] bis [20] ersetzen durch:

  • [17] Ling Xin: Module Data Sheet HC-05, REV 2.0. Guangzhou HC Information Technology Co., Ltd., Datum im Dokument nicht angegeben: https://www.elektor.de/21028
  • [18] HC Serial Bluetooth Products – User Instructional Manual. Keine Angaben zu Autor, Verlag oder Firma und Datum im Dokument: https://www.elektor.de/21028
  • [19] HC-03/05 Embedded Bluetooth Serial Communication Module AT command set. Last revised: April, 2011. Keine Angaben zu Autor und Verlag oder Firma im Dokument: https://www.elektor.de/21028

Um dem Leser trotzdem einen Zugriff auf diese drei Manuals bzw. Datenblätter zum Thema HC-05 zu ermöglichen, stehen sie ihm auf der Site des Elektor-Verlags zur Verfügung (siehe auch Abschnitt 9.3 Download-Quellen).

Seite 516

9.3 Download-Quellen 3. bis 4.:

Im Download-Verzeichnis die Einträge 3. bis 4. ersetzen durch:

9.3 Download-Quellen 10. bis 13.:

Bei einer Überprüfung im Juni 2024 waren unter den angegebenen Links die betreffenden Manuals und Datenblätter zum Thema HC-05 gespeichert.

Bei einer erneuten Überprüfung nach dem Druck des Buches im November 2024 waren die Links (durch einen Hackerangriff?) auf andere, potentiell gefährliche Sites im Netz umgeleitet worden!

Es wird dringend abgeraten, die Download-Links 10. bis 13. zu aktivieren!

Um dem Leser trotzdem einen Zugriff auf die Manuals und Datenblätter zum Thema HC-05 zu ermöglichen, stehen sie ihm auf der Site des Elektor-Verlags zur Verfügung.

Im Download-Verzeichnis die Einträge 10. bis 13. ersetzen durch:

  • 10. Ling Xin: Module Data Sheet HC-05, REV 2.0. Guangzhou HC Information Technology Co., Ltd., Datum im Dokument nicht angegeben: https://www.elektor.de/21028
  • 11. HC Serial Bluetooth Products – User Instructional Manual. Keine Angaben zu Autor, Verlag oder Firma und Datum im Dokument: https://www.elektor.de/21028
  • 12. HC-03/05 Embedded Bluetooth Serial Communication Module AT command set. Last revised: April, 2011. Keine Angaben zu Autor und Verlag oder Firma im Dokument: https://www.elektor.de/21028

Original Document

If the viewer doesn’t load, open the PDF directly.