Hallo Robin,
prima - da geht also schon was los.
In deiner Schaltung haben die Taster keine Dropdown-Widerstände gegen GND. Das habe ich in einigen Beispielen so gesehen und wird dort empfohlen. Sind die Deiner Meinung nach überflüssig?
Das kommt darauf, wie Du die Logik des Tasters machen willst.
Wenn Du - darauf basiert die Schaltung ohne Widerstand - den Pin mit
Code:
const int tasterPin = 5;
byte tasterZustand;
…
void Setup()
{
pinMode(tasterPin, INPUT_PULLUP);
}
schaltest, liegt der Eingang immer auf HIGH und wird dann LOW, solange der Taster gedrückt wird. Der "pull up"-Widerstand nach +5V ist im Arduino eingebaut.
Code:
void loop()
{
tasterZustand = digitalRead(tasterPin); // HIGH wenn Taster nicht betätigt, LOW wenn gedrückt.
}
Manche sind damit nicht glücklich und wollen LOW sehen, wenn der Taster nicht gedrückt ist und HIGH wenn er betätigt wird, wie z.B.
hier im Digital In Tutorial. Dann brauchst Du den DropDown zur Strombegrenzung, weil sonst bei Tastenbetätigung ein Kurzschluß zwischen Masse und 5V erzeugt würde. Dann darf aber der Pin-Mode nur INPUT sein (ohne PULLUP).
Das ist letztlich eine Geschmacksfrage und spart einen extern zu verbauenden Widerstand.
Ideen/Anregungen für den Sketch:
Wenn möglich Datenerfassung (Abfrage der Tasterzustände), -verarbeitung (was soll in Abhängigkeit von den Daten passieren) und Ausgabe (welche Lampe soll leuchten, welche nicht) voneinander trennen und nacheinander in Codeblöcken abhandeln. Diese Teile können dann auch jeweils eigene Funktionen sein (dat' kriegen wir aber vielleicht später
).
Dabei helfen eigene Zustandsvariablen für jeden der Taster und für den gewünschten Ausgangszustand jeder LED.
Gruß Walter
Tante Edith sagt: Ralf war schneller und kürzer
Allerdings würde ich statt dem digitalWrite(pin, HIGH) auf einen als Eingang deklarierten Pin heutzutage doch lieber INPUT_PULLUP verwenden.