Tipps + Tricks

Inhaltsverzeichnis

IR-Auslöser für Pentax-Kameras

Akku-Ladekurve

Wir bauen uns eine Piepliothek!

Ein Automat ohne delay()

Pimp my Code!
Tipps + Tricks



Tipps + Tricks

ANSI-Steuersequenzen

Wer ANSI-Steuersequenzen verwenden möchte, sollte zu einem sogenannten Terminalprogramm greifen, da der serielle Monitor der Arduino-IDE mit solchen Sequenzen nichts anfangen kann. Ich verwende minicom unter Debian GNU/Linux 7.

Wer nach einem Terminalprogramm sucht, sollte darauf achten, dass es VT100-kompatibel ist.

Beispiele:

Serial.print("\33[2J");   // Terminalfenster loeschen
Serial.print("\33[?25l"); // Cursor ausschalten
Serial.print("\33[0;0H"); // Cursor "home" (nach links oben)

Eine Liste aller Steuersequenzen befindet sich hier.

Zufallszahlen

Wer sich ein bisschen intensiver mit Computern oder dem Arduino beschäftigt, erfährt irgendwann, dass erzeugte Zufallszahlen nur „pseudo-zufällig“ sind und aus einem Pool mit begrenztem Vorrat stammen. Obendrein erhält man unter gleichen Startbedingungen immer die gleiche Folge von Zufallszahlen.

Wer tatsächlich zufällige Zufallszahlen benötigt, sollte den Zufallsgenerator mit dem Befehl randomSeed() initialisieren – zum Beispiel mit dem Wert von millis() beim ersten Tastendruck. Wenn es keine Taste gibt, nimmt man den Wert eines nicht beschalteten Eingangs.

Die Funktion randomSeed() bewirkt, dass der Startpunkt der Zufallszahlen-Folge an einer anderen Position liegt.

Im Code sieht das zum Beispiel so aus:

randomSeed(analogRead(0));

Am besten bringt man das im Setup-Teil eines Sketches unter.

Siehe auch den entsprechenden Abschnitt in der Referenz.

Auf Tastendruck warten

Soll ein Sketch erst dann mit seiner Arbeit beginnen, wenn man einen Taster drückt, baut man eine entsprechende Abfrage bzw. Warteschleife in setup() ein. Den Taster verbindet man so mit einem Pin, dass er ihn im gedrückten Zustand mit Masse/GND verbindet.

Wenn man den Pin vor der Warteschleife mit

pinMode(tasterPin, INPUT_PULLUP);

konfiguriert, genügt eine Zeile wie

while(digitalRead(tasterPin)==HIGH) {}

und der Arduino fährt erst dann fort, wenn der Taster betätigt wird.

INPUT_PULLUP bewirkt, dass der „Pull-up-Widerstand“ des Pins aktiviert wird. Auf diese Weise ist der Zustand des Pins bei nicht gedrücktem Taster immer HIGH.


Nach oben Inhaltsverzeichnis

Valid HTML 4.01 Transitional