Digital Pin | Verwendet |
---|---|
#0 | TX |
#1 | RX |
#2 | frei |
#3 | MP3 Shield |
#4 | MP3 Shield |
#5 | frei |
#6 | MP3 Shield |
#7 | MP3 Shield |
#8 | frei |
#9 | frei |
#10 | frei |
#11 | MP3 Shield |
#12 | MP3 Shield |
#13 | MP3 Shield |
Als analoge Pins stehen A0 bis A5 zur Verfügung, die auch als digitale Eingänge verwendet werden können. Ein analoger Pin wird für den Potentiometer (Lautstärkeregelung) benötigt. Somit stehen insgesamt 10 Pins als digitale Eingänge vom Arduino-Board zur Verfügung. Weitere 7 Pins werden, falls benötigt,vom MP3 Shield zur Verfügung gestellt (https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/gpio-pins).
Der Programmcode ist leicht verändert worden. Zum einen wird die LED nicht mehr verwendet. Dadurch ist die Logik des Programmcodes vereinfacht worden. Zum anderen werden Arrays verwendet, deren Inhalt über eine Schleife abgearbeitet wird. Dadurch konnten Codezeilen gespart werden, im Vergleich zum Ausprogrammieren der Logik für jeden einzelnen Pin.
// constants won't change // the number of the pushbutton pins const int buttonPins[] = { 2, 5, 8, 9, 10, A0, A1, A2, A3, A4 }; // variables will change // variable for reading the pushbutton status int buttonStates[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // variable for remember the number of button pressed int counters[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // the setup routine runs once when you turn the device on or you press reset void setup() { // initialize the pushbutton pins as input and enable internal pull-up resistor for (int i = 0; i < (sizeof(buttonPins) / sizeof(int)); i++) { pinMode(buttonPins[i], INPUT_PULLUP); } // disable LED L pinMode(13, OUTPUT); digitalWrite(13, LOW); // initialize serial communication at 9600 bits per second Serial.begin(9600); } // the loop routine runs over and over again forever void loop() { int state; // go through all button pins for (int i = 0; i < 10; i++) { // read the state of the pushbutton value state = digitalRead(buttonPins[i]); // recognize state changes: button pressed and button released if (state != buttonStates[i]) { // remember new button state buttonStates[i] = state; // print out the state of the button Serial.print(buttonPins[i]); Serial.print(" State changed "); Serial.println(buttonStates[i]); // button is pressed if (buttonStates[i] == LOW) { // increment number of button pressed counters[i]++; // print out the number of button pressed Serial.print(buttonPins[i]); Serial.print(" counter: "); Serial.println(counters[i]); } // button is released else { // print out new line Serial.println(); // wait before next click is recognized delay(100); } } } }
Nächstes Mal werde ich mir eine Alternative für "Mehrere Knöpfe" mit analogen Pins anschauen.
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