Hab vor kurzem mit einem Starter-Kit begonnen in die Welt des Programmierens einzutauchen.
Ich möchte bei einem Programm eine Variable "Status" jeweils um 1 hochzählen damit ich in den nächsten Programmschritt gelange. Hab das gemäss Beispiel unten aufgebaut.
Das Problem ist nun aber, dass der Status nicht hochgezählt wird und ich so nicht die Funktionen nacheinander ausführen kann. Wo liegt da mein Fehler?
Danke schonmal für die Tipps.
int Status=0;
int Taster=2;
void setup () {
pinmode (Taster, INPUT);
void loop () {
digitalRead(Taster);
if (Taster==LOW && Status==0) {
mach etwas;
}
if (Taster==HIGH && Status==0) {
Status++;
mach etwas;
}
if (Status==1) {
Status++;
mach etwas;
}
...usw...
...
}
digitalRead(Taster);
if (Taster==HIGH && Status==0) {
Taster ist die Nummer des Pins wo der Taster dranhängt das ist aber nicht der zustand des Eingengspins.
digitalRead(Taster); macht nichts. wohin gibst Du den gelesenen Wert?
lies dich mal ein wenig ein zum Thema Tasterbeschaltung/ Pullup
wenn das klappt, ergänze aus Serial.begin() und Serial.print Ausgaben damit du siehst was dein Programm wirklich macht.
In deinem Fall wird nämlich passieren, dass die If's nur so alle durchrauschen. Da du den Taster gar nicht so schnell loslassen kannst, dass nur der erste IF erfüllt ist. Du musst daher auf State Detection achten und vermutlich deine Taster auch softwaremäßig debouncen.
Hallo
und zum Testen und Lernen muss der Sketch nicht mit voller AK rennen, sonst wird dir der Bildschirm mit Informationen zugenagelt. Ich verwende als Softwarezeitlupe die Zeitgeberfunktion BLINKWITHOUTDELAY aus dem IDE.
Ich finde noiascas Tip zu Entprellen und Wechsel erkennen (das meint er wohl mit "State Detection") sinnvoller.
Wenn man jedes erneute Drücken nur einmal protokolliert (und auch nur einmal die entsprechende Funktion ausführt) sollte eine Serielle Testausgabe lesbar bleiben, auch ohne eine Softwarezeitlupe.
Ich finde noiascas Tip zu Entprellen und Wechsel erkennen (das meint er wohl mit "State Detection") sinnvoller.
Wenn man jedes erneute Drücken nur einmal protokolliert (und auch nur einmal die entsprechende Funktion ausführt) sollte eine Serielle Testausgabe lesbar bleiben, auch ohne eine Softwarezeitlupe.