Spiel­uhr Tastenpad

// Frequenzen: c' d' e' f' g' a' h' c'' 
int Tonleiter[] = 
{261, 293, 329, 349, 391, 440, 493, 523, 493, 440, 391, 349,  329, 293, 261}; 

// Länge der Töne "Tonleiter" in Millisekunden 
int TonlaengeTonleiter[] = 
{200, 200, 200, 200, 200, 200, 200, 200, 200, 200,  200, 200, 200, 200, 200, 200}; 

// Frequenzen "Alle meine Entchen“ 
int AlleMeineEntchen[] = 
{261, 293, 329, 349, 391, 391, 440, 440, 440, 440, 391, 440, 440, 440, 440, 391, 349, 349, 349, 349, 329, 329, 391, 391, 391, 391,  261}; 

// Länge der Töne "Alle meine Entchen“ in Millisekunden 
int TonlaengeAlleMeineEntchen[] = 
{250, 250, 250, 250, 500, 500, 250, 250, 250,  250, 500, 250, 250, 250, 250, 500, 250, 250, 250, 250, 500, 500, 250, 250, 250,  250, 500, 500}; 

// Frequenzen "Bruder Jakob“ 
int BruderJakob[] = 
{349, 391, 440, 349, 349, 391, 440, 349, 440, 466, 523,  440, 466, 523 }; 

// Länge der Töne "Bruder Jakob“ in Millisekunden 
int TonlaengeBruderJakob[] = 
{500, 500, 500, 500, 500, 500, 500, 500, 500, 500,  1000, 500, 500, 1000}; 

// Frequenzen "Backe backe Kuchen“
int BackeKuchen[] = 
{440, 440, 493, 493, 440, 369, 293, 440, 440, 493, 493, 440,  
369};

// Länge der Töne "Backe backe Kuchen“ in Millisekunden 
int TonlaengeBackeKuchen[] = 
{250, 250, 250, 250, 500, 250, 250, 250, 250, 250,  250, 500, 250};

int LAUTSPRECHER = 4; 
int Taster;
int Analogwert;

void setup()
{
  // wenn der Wert der gedrückten Taste angezeigt werden soll
  // Serial.begin(9600);
}

int Tasterabfrage()
{
  int Analogwert = analogRead(A0);
  
  // kurzes delay() -> doppelten Tastendruck so weit wie möglich verhindern
  delay(200);

  /* 
     A0 gibt je nach Taster einen Wert aus
     über den Seriellen Monitor wird dieser Wert angezeigt
     und kann dann eventuell angepasst werden
  */
  // Serial.println(Analogwert);

  switch (Analogwert)
  {
    case 0 ... 20:
      Taster = 1;
      break;
    case 30 ... 60:
      Taster = 2;
      break;
    case  70 ... 120:
      Taster = 3;
      break;
    case 150 ... 200:
      Taster = 4;
      break;
    case 300 ... 400:
      Taster = 5;
      break;
    default:
      return 0;
  }

  // gedrückten Taster zurückgeben
  return Taster;
}

void loop()
{
  Taster = Tasterabfrage();

  // Taste links
  if (Taster == 1)
  {
    // Alle meine Entchen
    for (int i = 0; i < sizeof(AlleMeineEntchen) / sizeof(AlleMeineEntchen[0]); i ++)
    {
      tone(LAUTSPRECHER, AlleMeineEntchen[i]);
      delay(TonlaengeAlleMeineEntchen[i]);
      delay(10);
      noTone(LAUTSPRECHER);
    }
  }

  // Taste oben Mitte
  // backe backe Kuchen spielen
  if (Taster == 2)
  {
    // Backe backe Kuchen
    for (int i = 0; i < sizeof(BackeKuchen) / sizeof(BackeKuchen[0]); i ++)
    { 
      tone(LAUTSPRECHER, BackeKuchen[i]);
      delay(TonlaengeBackeKuchen[i]);
      delay(20);
      noTone(LAUTSPRECHER);
    }
  }
  
  // Taste unten Mitte
  // Tonleiter spielen
  if (Taster == 3)    

  {
    for (int i = 0; i < sizeof(Tonleiter) / sizeof(Tonleiter[0]); i ++)
    {
      tone(LAUTSPRECHER, Tonleiter[i]);
      delay(TonlaengeTonleiter[i]);
      delay(10);
      noTone(LAUTSPRECHER);
    }
  }

  // Taste rechts
  // Bruder Jakob spielen
  if (Taster == 4)
  {
    // Bruder Jakob
    for (int i = 0; i < sizeof(BruderJakob) / sizeof(BruderJakob[0]); i ++)
    {
      tone(LAUTSPRECHER, BruderJakob[i]);
      delay(TonlaengeBruderJakob[i]);
      delay(10);
      noTone(LAUTSPRECHER);
    }
  }
}