Der Programmcode schaltet solange der Knopf gedrückt wird die LED an. Wird der Knopf wieder losgelassen, wird die LED wieder ausgeschaltet. Jeder Knopfdruck wird gezählt. Der aktuelle Status des Knopfs und die Anzahl der Knopfdrücke wird über eine serielle Kommunikation ausgegeben.
// constants won't change const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change int buttonState = 0; // variable for reading the pushbutton status int counter = 0; // variable for remember the number of button pressed // the setup routine runs once when you turn the device on or you press reset void setup() { // initialize the LED pin as an output pinMode(ledPin, OUTPUT); // initialize the pushbutton pins as input and enable internal pull-up resistor pinMode(buttonPin, INPUT_PULLUP); // initialize serial communication at 9600 bits per second Serial.begin(9600); } // the loop routine runs over and over again forever void loop() { // read the state of the pushbutton value int state = digitalRead(buttonPin); // recognize state changes: button pressed and button released if (state != buttonState) { // remember new button state buttonState = state; // print out the state of the button Serial.print("2 State changed "); Serial.println(buttonState); // button is pressed if (buttonState == LOW) { // turn LED on digitalWrite(ledPin, HIGH); // increment number of button pressed counter++; // print out the number of button pressed Serial.print("2 counter: "); Serial.println(counter); } // button is released else if (buttonState == HIGH) { // turn LED off digitalWrite(ledPin, LOW); } } }
Dieser Programmcode kann für Aktionen verwendet werden, die ausgeführt werden sollen, solange ein Knopf gedrückt ist. Eine Alternative zu dieser Logik ist es, dass eine Aktion bei einem Knopfdruck nur einmal ausgeführt werden soll. Dazu das folgende Beispiel. Der Programmcode schaltet bei einem Knopfdruck die LED an, bei einem weiteren Knopfdruck wieder aus. Jeder Knopfdruck wird gezählt. Der aktuelle Status des Knopfs, der LED und die Anzahl der Knopfdrücke wird über eine serielle Kommunikation ausgegeben.
// constants won't change const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change int buttonState = 0; // variable for reading the pushbutton status int ledState = 0; // variable for reading the LED status int counter = 0; // variable for remember the number of button pressed // the setup routine runs once when you turn the device on or you press reset void setup() { // initialize the LED pin as an output pinMode(ledPin, OUTPUT); // initialize the pushbutton pins as input and enable internal pull-up resistor pinMode(buttonPin, INPUT_PULLUP); // initialize serial communication at 9600 bits per second Serial.begin(9600); } // the loop routine runs over and over again forever void loop() { // read the state of the pushbutton value int state = digitalRead(buttonPin); // recognize state changes: button pressed and button released if (state != buttonState) { // remember new button state buttonState = state; // print out the state of the button Serial.print("2 State changed "); Serial.println(buttonState); // button is pressed and LED is off if (buttonState == LOW && ledState == LOW) { // remember new LED state ledState = HIGH; // turn LED on digitalWrite(ledPin, HIGH); // print out the state of the LED Serial.print("2 Set high "); Serial.println(ledState); // increment number of button pressed counter++; // print out the number of button pressed Serial.print("2 counter: "); Serial.println(counter); } // button is pressed and LED is on else if (buttonState == LOW && ledState == HIGH) { // remember new LED state ledState = LOW; // turn LED off digitalWrite(ledPin, LOW); // print out the state of the LED Serial.print("2 Set low "); Serial.println(ledState); // increment number of button pressed counter++; // print out the number of button pressed Serial.print("2 counter: "); Serial.println(counter); } // button is released else if (buttonState == HIGH) { // print out new line Serial.println(); // wait before next click is recognized delay(100); } } }
Als nächstes werde ich die Schaltung und den Programmcode um weitere Knöpfe erweitern.
Weitere Blogeinträge
- Auswahl der Komponenten
- Das Entwicklungsbrett
- Das erste Einschalten
- Die Entwicklungsumgebung
- Knöpfe (digital)
- Mehrere Knöpfe (digital)
- Mehrere Knöpfe (analog)
- Potentiometer
- Das MP3 Shield
- Auswahl der Komponenten 2
- Auswahl der Komponenten (Zusammenfassung)
- Punkt-Streifenrasterplatine und Knöpfe
- Punkt-Streifenrasterplatine und weitere Komponenten
- Das Gehäuse
- Sketch 1 (setup-Methode)
- Sketch 2 (loop-Methode)
- Sketch 3 (Der komplette Code)
- PC-Software
No comments:
Post a Comment