Input

digitalRead

digitalWrite-Block
Für Erklärung auf einzelne Komponenten klicken.

Block

Mit dem digitalRead Block können die Pins des Microcontrollers ausgelesen werden.

Allerdings ist damit nur eine digitale Auslesung möglich. "Digital" bedeutet, dass der Wert des Eingangs nur zwei verschiedene Zustände einnehmen kann. In der Digitaltechnik kennt man diese Zustände als HIGH und LOW, beziehungsweise logisch 1 oder logisch 0. Praktisch bedeutet dies, dass am als Eingang gewählten Pins entweder eine Spannung von über 3 Volt anliegt, dann wäre der Eingang HIGH. Wenn eine Spannung von weniger als 3 Volt gegenüber dem GND Pin anliegt, dann ist der Eingang LOW.

Pin

Ein wählbarer Parameter dabei ist der Pin. Wie der Name schon vermuten lässt, kann man durch diesen Parameter den Pin wählen, der ausgelesen weden soll. Die Nummer des jeweiligen Pins kann auf dem Arduino selbst abgelesen werden wo die Benennung aufgedruckt ist. Es können die digitalen Pins 0 bis 13 oder die analogen Pins A0 bis A5 gewählt werden. Die Pinbezeichnung ist in aller Regel auf die Platine des Arduinos aufgedruckt.

Beispiel

In diesem Beispiel soll eine LED in Abhängigkeit des Eingangssignals an Pin 2 angesteuert werden. Die LED ist über einen Vorwiderstand an den digitalen Pin 5 angeschlossen. Wenn am Pin 2 ein Signal anliegt, soll die LED Blinken. Wenn kein Signal anliegt, dann soll die LED durchgehend leuchten. Hier wird der falls und sonst Block verwendet, welche eine Bedingung überprüfen und anhand dieser dann einen Code entweder ausführt oder überspringt. Wenn ein Signal anliegt, dann ist der digitalRead Block TRUE und der falls Block führt die Blink Sequenz aus. Wenn kein Signal anliegt dann ist der digitalRead Block FALSE und der sonst Block setzt den Pin 5 auf HIGH.

In ArduBlock könnte diese Funktion dann folgendermaßen aussehen:

Beispiel zum digitalRead Block

Code

Im Code wird der Block mit der Funktion digitalRead(Pin) realisiert. Wobei für Pin hier die entsprechende Pinnummer eingetragen wird.

Im Code würde das Beispiel folgendermaßen aussehen:

if (digitalRead(2)) {
  digitalWrite( 5 , HIGH );
  delay( 1000 );
  digitalWrite( 5 , LOW );
  delay( 1000 );
}
else {
  digitalWrite( 5 , HIGH );
}