1.1s Spickzettel

Sammlung für die lokale Formelsammlung 🤠.

Beispielsketch

Sketch nennt man bei Arduino die Entwürfe für ein Programm. Ein Sketch ist eine Textdatei z.B. “Beispiel” mit der Endung .ino also Beispiel.ino. Die Datei muss sich in einem gleichnamigen Ordner hier Beispiel befinden.

#define BOARD_LED D13    // grüne LED auf dem Board
#define USER_BUTTON PC13 // blauer Taster auf dem Board
#define WARTEZEIT 500    // Festlegen eines Wertes

void setup(){   // Einmalige Ausführung beim Start => Initialisierungen...
  pinMode(BOARD_LED, OUTPUT);  // Pin als Ausgang schalten
  pinMode(USER_BUTTON,INPUT);  // Pin als Eingang schalten
  Serial.begin(9600); // Serielle Schnittstelle starten und Baudrate festlegen
}

void loop(){ // Wird staendig, endlos ausgefuehrt, darin steht das Hauptprogramm
  int a;
  a = digitalRead(USER_BUTTON);     // Wert von USER_BUTTON einlesen
  digitalWrite(BOARD_LED,a);        // Wert auf BOARD_LED ausgeben
  Serial.print("USER_BUTTON ist "); // Text auf Serieller Schnittstelle ausgeben
  Serial.println(a);                // Wert auf Serieller Schnittstelle ausgeben und Neue Zeile ausgeben
  delay(2*WARTEZEIT);               // warte 2*500ms = 1s
}

Dafür #define

Die Pins am µC haben Bezeichnungen wie D13 oder PC13. Damit die Bedeutung klarer und der Programmtext verständlicher wird können besser verständliche Namen dafür mit #define definiert werden. Eine Textersetzungsmaschine, der Präprozessor ersetzt z.B. alle Vorkommen von BOARD_LED in D13 bevor der Compiler den Quellcode zur Bearbeitung bekommt. Bei 2*WARTEZEIT bekommt der Compiler 2*500 als Text und wertet dies zu 1000 aus.
#define Definitionen sollten immer durchgehend Groß geschrieben werden, wie Konstanten, damit man erkennt das dies keine Variablen sind.

Der Präprozessor kann noch viel mehr, alle Zeilen, die mit # beginnen sind für ihn bestimmt.

Im setup()

Im setup() wird die Hardware initialisiert, d.h. für die gewünschte Funktion eingestellt. Im Beispiel wird die Funktion der Pins D13 und PC13 festgelegt. Auch wird die serielle Schnittstelle aktiviert, damit Daten vom µC zum Rechner gesendet werden können.

In der loop()

Das Unterprogramm loop() wird ständig ausgeführt, darin befindet sich die µC-Hauptschleife (Main-Loop), die für das ständige Einlesen und Verarbeiten der Eingänge sorgt.

Serial-Schnittstelle

Damit können Daten zum Rechner übertragen werden. Die Übertragungsgeschwindigkeit ist bei Arduino normalerweise 9600 Baud, d.h. 9600 Bitwechsel pro Sekunde. Sie kann aber auch auf höhere Geschwindigkeiten eingestellt werden, dann braucht die Übertragung weniger Zeit, es können mehr Zeichen pro Sekunde übertragen werden. Ich verwende oft 115200 Baud. Im Seriellen Monitor von Arduino kann die Übertragungsgeschwindigkeit angepasst werden.

Logische Werte bei Arduino / C

In Java gibt es true und false. Bei Arduino gibt es HIGH und LOW. Mit der Maus über HIGH sieht man schnell, dass es ein #define HIGH 0x1 gibt. Also wird HIGH vom Präprozessor in 0x1 also 1 übersetzt. Arduino basiert auf C/C++ dabei gilt wenn der Wert 0 ist bedeutet das false alle anderen Werte !=0 bedeuten true.

Ausgänge festlegen und verwenden

Im Setup mit pinMode(portPin, mode) festlegen. Normalerweise ist dabei mode = OUTPUT.
Der Pin-Zustand kann dann mit digitalWrite(portPin, wert) gesteuert werden. Wobei Einschalten mit wert = HIGH (= 1) oder jedem Wert !=0 funktioniert. Ausschalten funktioniert mit LOW (=0).

Eingänge festlegen und verwenden

Im Setup mit pinMode(portPin, mode) festlegen. Normalerweise bei unserem Board mode = OUTPUT_PULLDOWN. Weil die Taster und Schalter gegen VCC geschaltet sind und es keinen externen PullDown-Widerstand gibt.
Der Pin-Zustand kann mit digitalRead(portPin) gelesen werden, die Rückgabe ist 0 oder 1 entspricht false oder true.

delay()

Zeitwarte-Funktion. Z.B. delay(1000) verzögert die weitere Programmausführung um 1000ms = 1s.