Ihre Browserversion ist veraltet. Wir empfehlen, Ihren Browser auf die neueste Version zu aktualisieren.

Ereignisse zählen

Aufgabe

Es soll gezählt werden, wie oft ein Taster gedrückt wurde.

Anschluss an den Arduino

Material

  • Arduino
  • 1 Taster
  • 1 Widerstand 1kΩ
  • Breadboard
  • Leitungen

 

Beschreibung

Ein Anschluss des Tasters wird an 5Volt angeschlossen, der andere an einen digitalen Pin (hier Pin 8).

Wird der Taster gedrückt, dann liegt an Pin 8 eine Spannung von 5 Volt an (HIGH), die vom Mikrokontroller registriert wird.

 

Der 1kΩ Widerstand dient als Pulldown-Widerstand.

Vorüberlegungen

Die erste Überlegung ist, dass man eine Variable „Tasterzahl“ definiert, die erhöht wird, wenn am digitalen Pin 8 ein HIGH anliegt.

Der Wert der Variablen „Tasterzahl“ wird dann im seriellen Monitor ausgegeben.

Das Problem ist, dass die Variable ständig um 1 erhöht wird, solange der Taster gedrückt wird. Man kann den Wert auch beim kürzesten Druck nicht um 1 erhöhen.

Das liegt am Prellen des Schalters und an der schnellen Verarbeitung des Arduino.

 

Wenn man eine kurze Verzögerung einbaut, wird das Prellen ausgeschaltet, es ändert jedoch nichts daran, dass der Wert immer weiter erhöht, wenn der Taster lange gedrückt wird:

 

 

Die Lösung: Es darf nur hochgezählt werden, wenn der Taster gedrückt ist UND wenn er vorher nicht gedrückt war.

Man muss eine Variable einführen, die anzeigt ob der Taster schon gedrückt war oder nicht.

 

Das ArduBlock-Programm

Bedeutung der einzelnen Blöcke

(Steht unter dem Block keine Erklärung, dann wurde er bereits in einem Tutorial erklärt)

 

 

Der digitale Pin 8 wird abgefragt. Liegt an ihm eine Spannung von 5V (HIGH) an, dann erhält die Variable „TASTER“ den Wert „wahr“, sonst den Wert „falsch.

 

 

 

Es wird überprüft ob die Variable „TASTER“ den Wert „wahr“ hat und ob die Variable „VORHER“ den Wert „falsch“ hat. Wenn beides zutrifft, dann wird der Wert der Variable „ANZAHL“ um 1 erhöht.

 

 

 

Es wird überprüft, ob der Wert der Variable „TASTER“ „wahr“ ist. Falls ja, dann erhält die Variable „VORHER“ den Wert „wahr“, sonst den erhält sie den Wert „falsch“.

Damit weiß man bei der nächsten Abfrage, ob der Taster beim letzten Mal gedrückt war oder nicht.

Der Arduino-Sketch

(Steht keine Erklärung, dann wurde der Befehl bereits in einem Tutorial erklärt)

 

1 bool _ABVAR_1_TASTER; // Die Variable ABVAR_1_TASTER wird angelegt. Sie kann nur die Werte „wahr“ (Taster gedrückt) oder „falsch“ (Taster nicht gedrückt) annehmen.
2 bool _ABVAR_2_VORHER;  // Die Variable ABVAR_2_VORHER wird angelegt. Sie kann nur die Werte „wahr“ (Taster war zuletzt gedrückt) oder „falsch“ (Taster zuletzt nicht gedrückt) annehmen.
3  int _ABVAR_3_ANZAHL;  // Die Variable ABVAR_3_ANZAHL wird angelegt. Sie kann ganze Zahlen annehmen.
4  void setup()                                  
5  {  
6       _ABVAR_1_TASTER = false;  // Den Variablen werden Werte zum Start zugeordent.  
7       _ABVAR_2_VORHER = false;
8       _ABVAR_3_ANZAHL = 0;
9       Serial.begin(9600);  
10       pinMode( 8 , INPUT);  // Pin 8 ist ein digitaler Eingang
11  }  
12  void loop()  
13  {  
14       _ABVAR_1_TASTER = digitalRead( 8) ;  // Pin 8 wird abgefragt und das Ergebis wird gespeichert.
15       delay( 100 );  
16         if (( _ABVAR_1_TASTER && !( _ABVAR_2_VORHER ) ))  // Wenn die Variable _ABVAR_1_TASTER den Wert „wahr“ und (&&) die Variable _ABVAR_2_VORHER den Wert“falsch“ (!) hat, dann...
17  {  
18       ABVAR_3_ANZAHL = ( _ABVAR_3_ANZAHL + 1 ) ;  // ...wird der alte Wert der Variablen ABVAR_3_ANZAHL um 1 erhöht und unter dem Namen ABVAR_3_ANZAHL gespeichert.
19  }  
20       Serial.print( "ANZAHL" );          
21       Serial.print( _ABVAR_3_ANZAHL );  
22      Serial.println("");  
23      if (_ABVAR_1_TASTER)  // Wenn die Variable ABVAR_1_TASTER gedrückt ist (“wahr”) hat, dann …
24  {  
25       _ABVAR_2_VORHER = HIGH ;    // ... soll die Variable ABVAR_2_VORHER „wahr“ sein.
26  }  
27       else  // ... sonst ...
28  {  
29       _ABVAR_2_VORHER = LOW ;  // ... soll die Variable ABVAR_2_VORHER „falsch“ sein.
30  }  
31  }  

Cookie-Regelung

Diese Website verwendet Cookies, zum Speichern von Informationen auf Ihrem Computer.

Stimmen Sie dem zu?