Spiel­uhr mit dem Tas­ten­pad

Lese­zeit: 5 Minu­ten
Navi­ga­ti­on

Benö­tig­te Bau­tei­le:

  • Laut­spre­cher
  • Tas­ten­pad
  • Lei­tungs­dräh­te

Baue die Schal­tung auf:
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Wer­den die Tas­ten des Tas­ten­pads gedrückt, wird eine Melo­die abge­spielt:

  • Tas­te 1: Ton­lei­ter von C1 bis C2
  • Tas­te 2: Bru­der Jakob
  • Tas­te 3: Alle mei­ne Ent­chen
  • Tas­te 4: Backe Backe Kuchen
  • Tas­te 5: Wie­der­ga­be anhal­ten

Defi­nie­re die ➨Arrays für die Fre­quen­zen der Töne und die Län­ge der Töne in Mil­li­se­kun­den.

Hier fin­dest du eine ➨Über­sicht über die Fre­quen­zen.

// wird für switch ... case benötigt 
# include <stdio.h> 

// 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“ in Millisekunden 
int TonlaengeBackeKuchen[] = 
{250, 250, 250, 250, 500, 250, 250, 250, 250, 250,  250, 500, 250};

int LAUTSPRECHER = 4; 
int Taster;
int Analogwert;

Der setup-Teil muss vor­han­den sein, bleibt aber leer.

void setup()
{
  // bleibt leer
}

Ver­wen­de die Funk­ti­on ➨Tas­ter­ab­fra­ge.

Im loop-Teil wird der gedrück­te Tas­ter abge­fragt und in einer for-Schleife die Ton­fol­ge mit den dazu­ge­hö­ri­gen Ton­län­gen gespielt.

Die for-schleife wird vom ers­ten bis zum letz­ten Ele­ment des Arrays aus­ge­führt.

size­of() bestimmt die Anzahl der Ele­men­te eines Arrays. Hier­zu wird zunächst der Spei­cher­platz in Bytes bestimmt den alle Ele­men­te als Sum­me bele­gen, anschlie­ßend wird die­ser Wert durch den vom ers­ten Ele­ment beleg­ten Spei­cher­platz geteilt.

Wei­te­re Infor­ma­tio­nen

void loop()
{
  Taster = Tasterabfrage();
  if (Taster == 1)
  {
    // Tonleiter spielen
    for (int i = 0; i < sizeof(Tonleiter) / sizeof(Tonleiter[0]); i ++)
    {
      tone(LAUTSPRECHER, Tonleiter[i]);
      delay(TonlaengeTonleiter[i]);
      delay(10);
      noTone(LAUTSPRECHER);
    }
  }
   
  // Bruder Jakob spielen
  if (Taster == 2)
  {
    // Bruder Jakob
    for (int i = 0; i < sizeof(BruderJakob) / sizeof(BruderJakob[0]); i ++)
    {
      Taster = Tasterabfrage();
      if (Taster == 5)
      {
        noTone(LAUTSPRECHER);
        break;
      }
      tone(LAUTSPRECHER, BruderJakob[i]);
      delay(TonlaengeBruderJakob[i]);
      delay(10);
      noTone(LAUTSPRECHER);
    }
  }
  
  // Alle meine Entchen spielen
  if (Taster == 3)
  {
     . . . 
     . . .
  }
} 


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 29. Dez 2019 @ 14:28