Digitaler Eingang immer 1?

Hi!

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

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

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

maeckes:
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:

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

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

maeckes:
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?

Im Beispiel http://arduino.cc/en/Tutorial/ButtonStateChange ist auch eins Schaltbild vorhanden. Dort wird ein Pulldown-Widerstand verwendet (R1 an Masse und Eingang).

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

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

Habe nun mal etwas umprogrammiert und "Pull Up"-Widerstände einprogrammiert

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