Moin!
Ich hänge gerade daran einen funktionierenden Zähler zu bauen, der beim Drücken eines Tasters einen Zähler hochzählen lässt. Hört sich ja nicht so schwer an, ne?
Sah dann so aus (in Kurzform, der ganze code ist angehängt):
state = digitalRead(set_pin);
if (laststate != state)
{
if (state)
{
clicks++;
update_lenght();
lcd_show();
delay (2);
}
}
laststate = state;
Das Ergebnis: Der Zähler zählt beim Drücken hoch. Leider auch beim Loslassen.
Der Kontext:
Ich möchte ein Kabellängenmessgerät bauen um die Länge von Mikrofonkabeln zu messen. Dazu läuft das Kabel durch zwei Rollen, eine von ihnen mit einem Taster, der viermal pro Umdrehung gedrückt wird. Der Aufbau ist mit Fischertechnik realisiert und wird gesteurt von meinem Arduino Uno mit Display plus Backpack. In dem ganzen Sketch ist in auskommentierter Form auch mein erster Ansatz, der das gleiche Ergebnis liefert.
Natürlich könnte ich meine errechnete Länge einfach durch 2 teilen, ich will aber natürlich wissen wo das Problem liegt. Interessanterweise funktioniert das Skript, wenn ich die negative Flanke abfrage, also
if (state == 0)
frage. Wie gesagt, ich möchte aber das Problem und seine Lösung wissen.
Vielen Dank schonmal.
Gruß,
Sepur
Kabel_messgeraet.ino (1.39 KB)