
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 über die Frequenzen.

⇒Töne erzeugen Serieller Monitor
Benötigte Bauteile:
- Lautsprecher
- Tastenfeld 3x4
- 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #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:
1 2 3 4 5 6 7 8 9 10 11 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 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:
Letzte Aktualisierung:






