Hallo Forum,
keine Ahnung, was hier grundlegendes schief geht, aber ich möchte einen int einen hochzählen, wenn ich einen Knopf drücke, allerdings ist wichtig, dass es mit einem interrupt passiert, da der Knopf auch sehr schnell gedrückt werden kann.
Meine Idee:
volatile int counter=0;
long letzterAusloeser=0;
int bouncetime=2000; // in millisec
void setup()
{
pinMode(3, INPUT);
//digitalWrite(3,LOW);
attachInterrupt(1, zaehl, RISING);
Serial.begin(9600);
}
void loop()
{
Serial.println(counter);
delay(500);
}
void zaehl()
{
counter++;
}
um das Debouncing etc kann ich mich kümmern, aber warum dreht mein int counter so durch und vor allem, warum bleibt er stehen, wenn ich den Knopf durchdrücke?
Zur Schaltung:
Knopf mit 47kOhm zwischen 5V und Pin 3.
Der Knopf ist ein handelsüblicher Knopf, den man runter drückt, dann gibts Kontakt - lässt man los, ist der Kontakt weg.
Also ich hab wirklich schon alles erdenkliche probiert, aber der counter bzw die Methode "zaehl" hat nichts mit dem zutun, was ich erwarte, nämlich hoch zu zählen wenn das Logiklevel von 0 auf 1 steigt.
Lese ich den Pin ohne die Interrupts aus, passt es perfekt. 0 wenn nicht gedrückt, 1 wenn gedrückt.
Dass mal ein paar mal doppelt gezählt würde (bouncing), ist mir klar, aber das, was ich sehe ist kein bouncing.
Ich hoffe, es kann mir jemand helfen.
VG
Daniel