Go Down

Topic: Digitaler Eingang immer 1? (Read 682 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

jurs


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


Weißt Du, was ein PullDown-Widerstand ist?
Hast Du einen PullDown-Widerstand in Deiner Schaltung?

uwefed

Im Beispiel http://arduino.cc/en/Tutorial/ButtonStateChange ist auch eins Schaltbild vorhanden. Dort wird ein Pulldown-Widerstand verwendet (R1 an Masse und Eingang).
Quote
The circuit:
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
* LED attached from pin 13 to ground (or use the built-in LED on
   most Arduino boards)


Ich würde keinen Interrupt verwenden. Das ist bei dieser Problematik nicht notwendig und verschärft das Problem mit dem Prellen nur mehr.

Grüße Uwe

maeckes

Lege ganz stumpf mit ner Jumperleitung die 5V auf den Eingang.

Habe nun mal etwas umprogrammiert und "Pull Up"-Widerstände einprogrammiert
Code: [Select]
digitalWrite (Eingang, HIGH)
Schalte nun auf Masse - ist ja genauso gut.

Habe jedoch noch ein kleines Problem zu bewältigen.
Ich möchte den Arduino an einem Motorrad nutzen und dort den Neutralschalter (schaltet gegen Masse) auswerten.
Der Arduino soll über ein 5V KFZ-Netzteil mit Hohlstecker versorgt werden.
Wird er dann wohl die Motorrad-Masse als Eingang am IO-Eingang erkennen?

Gruß
Morris

Go Up