Arduino- Physical Computing für Bastler, Designer und Geeks. (Amzon Partnerlink) vom O’Reilly Verlag ist laut eigener Aussage das erste deutschsprachige Buch zum Thema Arduino. Ich habe im Dezember letzen Jahres ein Exemplar der ersten Auflage gekauft, weil mich das Thema Arduino interessiert und ich einfach mal ein bischen damit rumprobieren wollte. Leider merkt man dem Buch an, dass es unbedingt das erste deutschsprachige sein wollte. Auch wenn mir die Texte und Beschreibungen gut gefallen, es hapert an einer anderen, sehr bedeutenden Stelle: dem Beispielcode.

Fast kein einziges Programm in diesem Buch kommt fehlerfrei daher und vielen merkt man an, dass niemand Korrektur gelesen hat. Dabei wäre es so einfach gewesen: schnell die Schaltung zusammengesteckt, Programm mit Copy & Paste auf den Arduino geworfen und nachsehen ob es funktioniert. Da ich zumindest ein paar Grundlagen in Sachen Programmierung beherrsche war es kein großer Aufwand die Fehler zu finden und zu korrigieren und sicherlich habe ich dadurch deutlich mehr gelernt als durch stumpfes abtippen. Aber für jemandwn, für den das alles ganz neu ist, kann es sicherlich schnell frustierend werden.

Daher habe ich mir überlegt, dass ich eine kleine Serie starte in der ich die Fehler aufzeige und die korrigierten Codebeispiele poste.

Los geht es in Kapitel 3 auf Seite 90. Ziel ist es zwei LEDs mit einem Schalter zu steuern. In Grundzustand soll LED 1 leuchten und LED 2 nicht, bei gedrücktem Schalter umgekehrt. Im Buch steht folgender Code:

int val = digitalRead(schalter);
int ledPin1 = 13;
int ledPin2 = 12;
int schalter = 2;
void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(schalter, INPUT);
  digitalWrite(schalter, HIGH);
}
void loop() {
  int val = digitalRead(schalter);
  if (val == HIGH) {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
  }
  else {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
  }
}

Zwei Dinge stimmen hier nicht.

Zum einen die erste Zeile, diese liest den Input vom Schalter und schreibt diesen in den Integer val. Da sie diesen auch gleich erschafft macht es keinen Sinn, dass sie oben bei der Definition der Variablen steht. Korrekt platziert findet sie sich auch noch einmal in der ersten Zeile des Loops. Die erste Zeile kann also weggelassen werden.

Der zweite Fehler findet sich im Setup Block und ist sogar noch trivialer: es wurde vergessen einen zweiten digitalen Pin für die zweite LED als Output zu definieren.

Der korrigierte Code:

int ledPin1 = 13;
int ledPin2 = 12;
int schalter = 2;
void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(schalter, INPUT);
  digitalWrite(schalter, HIGH);
}
void loop() {
  int val = digitalRead(schalter);
  if (val == HIGH) {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
  }
  else {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
  }
}

9 Responses to “APC001: Arduino – Physical Computing für Bastler, Designer & Geeks (O’Reilly)”

  1. Johna251 says:

    Hey I am so excited I found your website, I really found you kkkaccakgddd

  2. I think what you published made a bunch of sense. However, think about this, what if you were to create a awesome headline?
    I mean, I don’t wish to tell you how to run your website,
    but suppose you added something that grabbed people’s attention? I
    mean APC001: Arduino – Physical Computing für Bastler, Designer & Geeks (O

  3. fantastic points altogether, you just won a brand new reader.
    What could you suggest about your publish that you
    just made some days in the past? Any sure?

  4. obviously like your web site however you need to test the spelling on several of your posts.

    A number of them are rife with spelling problems and I find it
    very troublesome to inform the truth nevertheless I’ll surely come again again.

  5. Amos says:

    always i used to read smaller posts that as well clear their motive,
    and that is also happening with this article
    which I am reading at this time.

  6. Hello, i believe that i saw you visited my website so i
    came to go back the want?.I am attempting to to
    find issues to improve my site!I guess its good enough to make use of some of your ideas!!

  7. I enjoy what you guys are usually up too. Such clever work and
    reporting! Keep up the wonderful works guys I’ve added you guys to blogroll.

  8. Hi there it’s me, I am also visiting this
    site daily, this web site is really pleasant and the users are actually sharing fastidious thoughts.

  9. Generally I do not read post on blogs, however I would like to say that
    this write-up very pressured me to take a look
    at and do so! Your writing style has been surprised
    me. Thank you, very nice article.

Leave a Reply