Töne erzeu­gen mit dem Tas­ten­feld

Lese­zeit: 3 Minu­ten

Töne mit dem Seri­el­len Moni­tor erzeu­gen

Navi­ga­ti­on

Bei einem Tas­ten­druck soll ein Ton wie­der­ge­ge­ben wer­den, die Tas­ten * und # schal­ten den Ton wie­der aus.

NoteFre­quenzTas­te auf dem Tas­ten­pad
c'261Tas­te 1
d'293Tas­te 2
e'329Tas­te 3
f'349Tas­te 4
g'391Tas­te 5
a'440Tas­te 6
h'493Tas­te 7
c''523Tas­te 8

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

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

  • Laut­spre­cher
  • Tas­ten­feld 3×4
  • 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)

Ver­wen­de die Biblio­thek und die Varia­blen des Tas­ten­felds.

// Keypad einbinden und Arrays definieren 
include <Keypad.h> 

// die Pins für die 3 Spalten  
byte SpaltenPins[SPALTEN] = { 2, 3, 4 };   

// die Pins für die 4 Reihen  
byte ReihenPins[REIHEN] = { 8, 9, 10, 11 }; 

// TastenFeld →  Name des Keypads   
// →  Zuordnung der Pins zu den REIHEN und SPALTEN des Arrays   
Keypad TastenFeld = Keypad(makeKeymap(Tasten), ReihenPins, SpaltenPins,  REIHEN, SPALTEN);

Defi­nie­re zusätz­li­che Varia­ble:

char gedrueckteTaste;
int LAUTSPRECHER = 13;

Die gedrück­te Tas­te wird mit switch abge­fragt:

void loop() 
{  
  // gedrückte Taste abfragen 
  gedrueckteTaste = TastenFeld.getKey(); 
  
  // wenn eine Taste gedrückt wurde 
  if (gedrueckteTaste)   
  {   
    // Taste zur Kontrolle anzeigen       
    Serial.print(gedrueckteTaste);  

     // je nach gedrückter Taste wird der Lautsprecher mit der  
     // entsprechenden Frequenz angesprochen 
    switch (gedrueckteTaste)  
    {   
      case '1':      
        tone(LAUTSPRECHER, 261);  
        break;   
      case '2':
        tone(LAUTSPRECHER, 293);   
        break;   
      case '3':  
        tone(LAUTSPRECHER, 329); 
        break; 
      case '4': 
        . . .   
        . . .  
    } 
  } 
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 21. Mrz 2020 @ 13:32