Sunday, December 14, 2014

Audino - Arduino MP3-Player (7) - Mehrere Knöpfe (analog)


Um Pins zu sparen (falls diese knapp sein sollten), können die Knopfdrücke mehrerer Knöpfe auch über einen analogen Pin registriert werden (spanischer Blogeintrag dazu). Hier sind 11 Knöpfe verwendet worden. Über einen analogen Pin wird festgestellt welcher Knopf gedrückt worden ist.




Dabei werden mehrere Widerstände in Reihe geschaltet. Die Knöpfe werden so angebracht, dass bei einem Knopfdruck eine Parallelschaltung entsteht, durch die eine bestimmte Anzahl von Widerständen übersprungen wird. Der Messpunkt liegt hinter dem siebten Widerstand. Dadurch kann die Reihenschaltung auf zwei Elemente zusammengefasst werden. Das erste Element umfasst die ersten sieben Widerstände und das zweite Element umfasst die letzten sechs Widerstände. Durch einen Knopfdruck entsteht nun eine Spannungsänderung, die über den analogen Eingang ausgelesen werden kann. Über den gemessenen Spannungswert kann auf den gedrückten Knopf geschlossen werden.


Dazu der passende Programmcode, der den gelesen Wert am analogen Pin A5 ausgebiet. Zudem wird, falls eine Taste gedrückt worden ist, die Nummer dieser Taste ausgegeben.

// constants won't change

// the number of the pin that is used for the pushbuttons
const int buttonsPin = A5;

// variables will change

// variable for the pressed button
int pressedButton = 0;

// the setup routine runs once when you turn the device on or you press reset
void setup()
{
    // initialize serial communication at 9600 bits per second
    Serial.begin(9600);
}

// the loop routine runs over and over again forever
void loop()
{
    // check if a button is pressed
    pressedButton = CheckButtons();
 
    if (pressedButton != 0)
    {
        Serial.print("Taste: ");
        Serial.println(pressedButton);
        delay(100);
    }
}

// returns 0 if no button is pressed,
// else the number of the pressed button is returned (1 - 11)
int CheckButtons()
{
    int buttonsPinValue = analogRead(buttonsPin);
    int pressedButton = 0;
 
    Serial.println(buttonsPinValue);
 
    if (buttonsPinValue > 823)
    {
        // button 6 has a value of about 878
        pressedButton = 6;
    }
    else if (buttonsPinValue > 725)
    {
        // button 5 has a value of about 768
        pressedButton = 5;
    }
    else if (buttonsPinValue > 649)
    {
        // button 4 has a value of about 683
        pressedButton = 4;
    }
    else if (buttonsPinValue > 586)
    {
        // button 3 has a value of about 614
        pressedButton = 3;
    }
    else if (buttonsPinValue > 535)
    {
        // button 2 has a value of about 559
        pressedButton = 2;
    }
    else if (buttonsPinValue > 492)
    {
        // button 1 has a value of about 512
        pressedButton = 1;
    }
    else if (buttonsPinValue > 450)
    {
        // if no button is pressed the value is of about 473
        pressedButton = 0;
    }
    else if (buttonsPinValue > 400)
    {
        // button 8 has a value of about 427
        pressedButton = 11;
    }
    else if (buttonsPinValue > 340)
    {
        // button 10 has a value of about 372
        pressedButton = 10;
    }
    else if (buttonsPinValue > 267)
    {
        // button 9 has a value of about 307
        pressedButton = 9;
    }
    else if (buttonsPinValue > 178)
    {
        // button 8 has a value of about 228
        pressedButton = 8;
    }
    else if (buttonsPinValue > 0)
    {
        // button 7 has a value of about 128
        pressedButton = 7;
    }
    return pressedButton;
}

Nächstes Mal werde ich mir die Verwendung eines Potentiometers 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