Anfängerfrage: Zählerfunktion

Tach,

hab mir auch vor kurzer zeit ein arduino zugelegt und experimentier damit nu ein bischen rum.

Wollte eine Zählfunktion programmieren die bei jedem Tasterdruck einen Wert um 1 erhöht, egal wie lange der Taster gedrückt wurde.

bekomms einfach net hin, wie würdet ihr das realisieren?

danke schon ma im vorraus
greetz
akrlfix

Im Prinzip so.

Und bei "// turn LED on:" dann eben den Zähler hochzählen. :wink:

Der Trick dabei ist: Beide Zustände des Tasters auszuwerten. Sprich:

Taster betätigt (und bleibt gedrückt), dann ist die erste Bedingung erfüllt.
Taster losgelassen, dann wird erst gezählt. Somit die zweite Bedingung erfüllt.

Oder eben die Situation umkehren: Taster gedrückt, es zählt um eins weiter. Wartet dann bis der Taster wieder losgelassen wurde, bevor es weitergehen kann :wink:

Also ein kompletter High-Low Zyklus muss durchlaufen werden, damit die Zählung passiert.

Bedenke jedoch folgendes: Die meisten Taster sind nicht "entprellt". Dies führt unweigerlich zu Fehlzählungen. Diese kann man wiederrum durch Zeitschleifen minimieren.

Das kommt dabei raus, wenn man programmiert, im Forum liest und gleichzeitig Fernseh guckt... ;D

Realizer hat natürlich Recht. :wink:

Natürlich könnte man jetzt hingehen und sich erst einmal die Beschreibung der Bouce Library anschauen. Dehren Funktion es ist digitale Eingänge zu entprellen. Und damit auch einen daran angeschlossenen Taster.

Bounce library for Arduino:
http://www.arduino.cc/playground/Code/Bounce

habs endlich hinbekommen :slight_smile:

funzt ganz gut auch ohne debounce, geht aber bestimmt auch eleganter

const int buttonPin = 12;

int buttonState = 0;
int counter = 0;
int buttonStateHIGH = 0;

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);     
}

void loop(){
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) 
  {     
    buttonStateHIGH = 1;
  } 
  if (buttonState == LOW && buttonStateHIGH == 1)
  {
    counter++;
    buttonStateHIGH = 0;
  }
  Serial.println(counter);
}

besten dank für die hilfe

greetz
akrlfix