Pages: [1]   Go Down
Author Topic: Digitaler Eingang immer 1?  (Read 497 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 135
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi!

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

Code:
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
Logged

Austria
Offline Offline
Full Member
***
Karma: 2
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 134
Posts: 2854
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 135
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
God Member
*****
Karma: 13
Posts: 842
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Tschau
Doc Arduino

Germany S-H
Offline Offline
Faraday Member
**
Karma: 134
Posts: 2854
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 135
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Habe nun mal etwas umprogrammiert und "Pull Up"-Widerstände einprogrammiert
Code:
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
Logged

Pages: [1]   Go Up
Jump to: