Sunday, November 16, 2014

Audino - Arduino MP3-Player (6) - Mehrere Knöpfe (digital)

Der Aufbau der Schaltung für mehrere Knöpfe ist nicht sonderlich anders als für einen Knopf. Es können sowohl digitale als auch analoge Pins verwendet werden. Hier sind 5 digitale und 5 analoge Pins verwendet worden. Alle werden als digitale Eingänge verwendet. Bei der Wahl der Pins ist berücksichtigt, welche Pins das MP3 Shield verwendet und welche nicht (https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/pinouts).

Digital PinVerwendet
#0TX
#1RX
#2frei
#3MP3 Shield
#4MP3 Shield
#5frei
#6MP3 Shield
#7MP3 Shield
#8frei
#9frei
#10frei
#11MP3 Shield
#12MP3 Shield
#13MP3 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

  1. Auswahl der Komponenten
  2. Das Entwicklungsbrett
  3. Das erste Einschalten
  4. Die Entwicklungsumgebung
  5. Knöpfe (digital)
  6. Mehrere Knöpfe (digital)
  7. Mehrere Knöpfe (analog)
  8. Potentiometer
  9. Das MP3 Shield
  10. Auswahl der Komponenten 2
  11. Auswahl der Komponenten (Zusammenfassung) 
  12. Punkt-Streifenrasterplatine und Knöpfe
  13. Punkt-Streifenrasterplatine und weitere Komponenten
  14. Das Gehäuse
  15. Sketch 1 (setup-Methode)
  16. Sketch 2 (loop-Methode)
  17. Sketch 3 (Der komplette Code)
  18. PC-Software


No comments:

Post a Comment