Töne erzeu­gen mit dem Tastenfeld

Lese­zeit: 4 Minu­ten
Lösung
Seite als PDF

Töne mit dem Seri­el­len Moni­tor erzeugen


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 Tastenpad
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 (exter­ner Link, abge­ru­fen am 21.11.2020) über alle Frequenzen.

Benö­tig­te Bauteile:

  • 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.

# include <Keypad.h>

String Eingabe;
int LAUTSPRECHER = 13;

// Größe des Tastenfeldes
// 3 Spalten
const byte SPALTEN = 3;

// 4 Zeilen
const byte REIHEN = 4;

// die Ziffern/Zeichen:
// Array 3 x 4
char Tasten[REIHEN][SPALTEN] = {
  {'#', '0', '*'},
  {'9', '8', '7'},
  {'6', '5', '4'},
  {'3', '2', '1'}
};

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

// die Pins für die 4 Zeilen
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 Variable:

char gedrueckteTaste;
int LAUTSPRECHER = 13;

Die gedrück­te Tas­te wird mit switch abgefragt:

Der setup-Teil:

void setup()
{
  pinMode(LAUTSPRECHER, OUTPUT);
  Serial.begin(9600);
}
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': 
        . . .   
        . . .  
    } 
  } 
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 18. Jul 2021 @ 10:29