Engadget hat das erste Bild vom Droid 2 in der R2-D2 Edition. Jetzt noch schnell die X-Wing Navigation installieren und ab gehts.

I want!

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);
  }
}

NVIDIA GTX 460Vor kurzem ist mir pünklich zum Release von StarCraft II meine Grafikkarte abgeraucht. Glücklicherweise hatte ich da gerade das Review zur GTX 460 bei AnandTech gelesen und sie sofort bestellt. Bisher bin ich mit der GraKa voll zufrieden. Falls jemand gerade mit dem Gedanken spielt, seinen Rechner aufzurüsten ohne arm zu werden, kann ich die Karte nur weiterempfehlen. Zumal man ja auch noch die SLI Option hat, falls es dann doch ein bischen mehr sein soll. BenchmarkReviews.com hat ein GTX 460 SLI Gespann gegen die derzeitige Grafikkartenelite antreten lassen und dabei bestätigt, dass die kleine GeForce mit den großen mithalten kann und dabei noch ein fantastisches Preis-Leistungs-Verhältniss hat.

Der Snowblog ist zurück!

Nachdem ich von meinem ersten Blogversuch dermaßen angeödet war, dass ich das ganze Ding schlußendlich gewiped habe, starte ich jetzt mit Rev.2 einen neuen Versuch.

Das Hauptproblem von Rev.1 war, dass ich keine Themen und kein Konzept hatte. Ich hab über alles und nix gebloggt und im nachhinein betrachtet war es eine Ansammlung von Belanglosigkeiten, Musikvideos, Memes und Themen, die durch andere Blogger deutlich besser abgedeckt waren.

In Rev.2 wird es zwar auch um Themen gehen, die vermutlich an anderer Stelle besser abgedeckt werden, aber dafür interessieren sie mich und für euch gibts ja die links zur Quelle. Die Themen werden DIY (vor allem Arduino), Android (mit Schwerpunkt HTC Desire, zumindest solange ich eins habe) und Computerkram (Hardware, Gaming) sein. Vermutlich wird sich auch weiterhin mal ein Musikvideo, Mem oder etwas Befindlichkeitsquatsch hier reinverirren, aber ich werde mich bemühen es nicht zu übertreiben.

Als ersten umfangreicheren Post wirds hier demnächst ein Desire 101 geben. Zwar sind die ganzen Anleitungen zum Rooten, Debranden, Flashen und so weiter schon lange im Netz, aber leider über diverse Seiten und Forenthreads verteilt. Und wenn euch eine kompakte Übersicht nicht interessiert, habe ich zumindest ein schnelles Nachschlagwerk für mich.