Go Down

Topic: Digitaler Eingang immer 1? (Read 612 times) previous topic - next topic

maeckes

Hi!

Ich wollte mir nen kleinen Zähler aufbauen.
Immer wenn 5V auf den digitalen Eingang geschaltet werden, soll der Zaehler inkrementiert werden.

Code: [Select]
int Zaehler= 0;

void setup()
{Serial.begin(9600);
}

void loop()
{
if (digitalRead(1) == HIGH){
Zaehler++;
Serial.print(Zaehler);
delay (250);
}
}


Aber sobald ich auf den digitalen Eingang 5V lege, zählt der im 250ms-Takt hoch....
Bremsen kann ich ihn nur, in dem ich den Eingang auf Masse lege.

Wie kann das sein?

Gruß
Morris

J3RE

Du darfst nur bei einer positiven Flanke des Signals inkrementieren. Denn nach 250ms ist deine if-Bedingung immer noch erfüllt deswegen wird weiter gezählt.

Grüße,
J3RE

jurs


Aber sobald ich auf den digitalen Eingang 5V lege, zählt der im 250ms-Takt hoch....
Bremsen kann ich ihn nur, in dem ich den Eingang auf Masse lege.

Wie kann das sein?


Wieso nicht?
Das ist doch genau das, was Du für die Loop programmiert hast:
1. Wenn Eingang HIGH, dann zähle den Zähler hoch
2. Warte 250 ms
3. Mache mit 1. weiter

Wenn Du die Anzahl der Tastendrücke zählen möchtest, arbeite vielleicht lieber das "ButtonStateChange" Beispiel durch:
http://arduino.cc/en/Tutorial/ButtonStateChange

maeckes

Hi!

Danke Euch!

Habe den code von "ButtonStateChange" 1zu1 kopiert.
Funktioniert trotzdem nicht...

Bei 5V am Eingang wird inkrementiert. Aber es dauert etwa 15sek, bis der Eingang "weg ist".
Also erst danach kommt die Meldung "off"..?

Gruß
Morris

Doc_Arduino

Hallo,

es kann sein das noch Tastenprellen im Spiel ist. Mit was legst Du das Eingangssignal um?
Sonst guck Dir das nochmal http://erik-bartmann.de//download/ArduinoInterruptsteuerungTeil1.pdf
Tschau
Doc Arduino

Go Up