hochzählen funktioniert nicht

Hallo zusammen

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...
...
}

Hast Du einen Pullup-Widerstand am Taster?

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?

Grüße Uwe

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.

Zu allem findest du Basis-Beispiele in der IDE.

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.

Was heißt AK ?

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.

michael_x:
Was heißt AK ?

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.

weil du es bist :slight_smile:

AK = Arbeitskraft

ja ich meine u.a. das Beispiel

  1. Digital
    State change detection (edge detection)

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.