
Bei einem Tastendruck auf dem Tastenfeld soll jeweils ein Ton der Tonleiter zwischen C' und C'' wiedergegeben werden.
Note | Frequenz | Taste auf dem Tastenpad |
---|---|---|
c' | 262 | Taste 1 |
d' | 294 | Taste 2 |
e' | 330 | Taste 3 |
f' | 349 | Taste 4 |
g' | 392 | Taste 5 |
a' | 440 | Taste 6 |
h' | 494 | Taste 7 |
c'' | 523 | Taste 8 |

Hier findest du eine 🔗Übersicht (externer Link, abgerufen am 10.9.2023) über alle Frequenzen.

⇒Töne erzeugen Serieller Monitor
Benötigte Bauteile:
- Lautsprecher
- Tastenfeld 3×4
- Leitungsdrähte
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Du benötigst die Bibliothek Adafruit Keypad:

Das Tastenfeld besteht aus Reihen und Spalten, die von unten nach oben in einem ⇒zweidimensionalen Array angeordnet werden:

Binde die benötigte Bibliothek ein und definiere die Variablen.
#include "Adafruit_Keypad.h"
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] = { 3, 4, 5 };
// die Pins für die 4 Zeilen
byte ReihenPins[REIHEN] = { 6, 7, 8, 9 };
// TastenFeld ⇒ Name des Keypads
// -> Zuordnung der Pins zu den REIHEN und SPALTEN des Arrays
Adafruit_Keypad Tastenfeld = Adafruit_Keypad(makeKeymap(Tasten), ReihenPins, SpaltenPins, REIHEN, SPALTEN);
Der setup-Teil:
void setup()
{
// Tastenfeld starten
Tastenfeld.begin();
pinMode(LAUTSPRECHER, OUTPUT);
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
}
Der loop-Teil.
Die gedrückte Taste wird mit ⇒switch abgefragt. Die Tastencodes entsprechen dem ASCII-Code.
void loop()
{
// gedrückte Taste lesen
Tastenfeld.tick();
while (Tastenfeld.available())
{
keypadEvent Taste = Tastenfeld.read();
// wenn die Taste losgelassen wurde -> Lautsprecher ausschalten
if (Taste.bit.EVENT == KEY_JUST_RELEASED) noTone(LAUTSPRECHER);
// solange die Taste gedrückt wird -> Ton abspielen
if (Taste.bit.EVENT == KEY_JUST_PRESSED)
{
// gedrückte Taste anzeigen
Serial.print("ASCII: " +String(Taste.bit.KEY) + "\t");
Serial.print("Taste: ");
Serial.println((char)Taste.bit.KEY);
/*
Tastencode entspricht dem ASCII-Code:
49 = 1
50 = 2
. . .
56 = 8
*/
switch (Taste.bit.KEY)
{
// C'
case 49:
tone(LAUTSPRECHER, 262);
break;
// D
case 50:
tone(LAUTSPRECHER, 294);
break;
// E
case 51:
tone(LAUTSPRECHER, 330);
break;
// F
case 52:
tone(LAUTSPRECHER, 350);
break;
// G
case 53:
tone(LAUTSPRECHER, 392);
break;
// A
case 54:
tone(LAUTSPRECHER, 440);
break;
// H
case 55:
tone(LAUTSPRECHER, 495);
break;
// C''
case 56:
tone(LAUTSPRECHER, 523);
break;
}
}
}
}
Verwandte Anleitungen:
- Farbenspiele mit einem LED-Streifen
- Farbenspiele mit einer RGB-LED
- Jukebox mit Klingeltönen
- Länder-Info
- LEDs mit einem Tastenpad schalten
- Multiplikations-Taschenrechner
- Pin-Eingabe
- Pin-Eingabe mit LCD und Servomotor
- Spieluhr mit dem Tastenpad
Letzte Aktualisierung: