| Klaviatur mit Touchsensoren
Touchsensoren Als Touch-Sensoren verwenden wir hier fertige Module, die auf dem Berührungssensor TTP223-BA6 basieren. Das kleine Modul hat
die Abmessungen 11.5 x 8 mm und kann durchaus für eine kleine Mini-Tastatur angewendet werden. Die Sensoren arbeiten im Bereich von
2,5 bis 5,5, V und eignen sich damit sehr gut für eine Zusammenarbeit mit Arduino. Durch Anlöten von kleinen Brücken kann das Modul in
vier Betriebsarten betrieben werden. Wir entscheiden uns für den Auslieferungszustand. Hier wird beim Betätigen des Sensors ein
HIGH-Signal generiert. Touchsensor Rückseite Der SpannungsteilerDie Aufgabe wird mithilfe eines Spannungsteilers realisiert. Der Spannungsteiler besteht aus 11 Widerständen. Ein Punkt des
Spannungsteilers wird mit einem analogen Eingang des Arduino verbunden. Die Widerstände des Teilers müssen so ausgewählt werden, dass
bei Betätigen eines Touch-Sensors nur eine bestimmte, dem Sensor zugeordnete Spannung an diesem Punkt auftritt. So kann man anschließend
in dem Programm die Nummer des Sensors ermitteln und ihm eine bestimmte Musiknote zuordnen. Die Schwierigkeit in der Schaltung besteht
also darin, die notwendigen Widerstandswerte zu berechnen. Berechnung der WiderständeTeil des Spannungsteilers Die Abbildung oben zeigt ein Teil des Spannungsteilers. Das Verhalten innerhalb des Spannungsteilers ist an allen P-Punkten
gleich. Nehmen wir als Beispiel den Touch-Sensor Nr. S3. Bei betätigen des Sensors schaltet er durch und sein Ausgang liefert am Punkt P3a
eine Spannung von 4 V. Da der Spannungsteiler mit Masse verbunden ist, fließt durch Widerstände R3, R2, R1 und Ro Strom I. Der Strom muss
auch die Diode D3 passieren. Hier entsteht ein Spannungsabfall von Ud=0,45V. So messen wir am Punkt P3b eine Spannung von U=4-0,45= 3,55 V.
Das Verhalten wiederholt sich an allen P-Punkten.
Tabelle der Widerstände Damit man die Widerstandswerte anschließend leichter einstellen kann, werden in der Schaltung Potenziometer angeschlossen.
Da die einzelnen Intervalle nur 0,3 V betragen, muss man die berechneten Werte ziemlich genau einhalten. Bei Testen der Schaltung kann
man dank Potenziometer manche Widerstände bei Bedarf noch etwas nachjustieren.
Lautsprecher 3W (8 Ohm) Arduino Nano Die Spannung für die Sensoren stellt ein Spannungsregler bereit. Hier wird ein fester Spannungsregler L78L05 (5 VDC)
eingesetzt. Spannungsregler 5 V Der SchaltplanSchaltplan TestschaltungTestschaltung Das ProgrammDie Zuordnung der Frequenzen für jede Taste erledigt das Programm. Die Frequenzen repräsentieren die Töne, die später beim
Betätigen der Tasten aus dem Lautsprecher zu hören sein werden. Die Frequenzen befinden sich in der Variable „Note []“. Damit das Lesen
der Werte im Laufe des Programms einfacher erfolgen kann, sind die Werte rückwärts eingetragen. Da wir nur 10 Tasten verwenden, werden
nur 10 Werte benötigt. Die Werte entstammen der folgenden Tabelle: Noten-Tabelle mit zugehörigen Frequenzen Notensystem In unserem Beispiel entspricht die erste Taste der Note c‘. Ihr wird die Frequenz von 262 Hz zugewiesen.
// *************************************************************************************** // Klaviatur mit Touch-Sensoren // Töne mit passivem Lautsprecher // Arduino Nano, IDE 1.8.13 // *************************************************************************************** int Analog_Pin = 1; int Lautsprecher = 2; int Frequenz; // Frequenzen der Noten // für 10 Tasten beginnend mit c' int Note [] = { 659, 587, 523, 494, 440, 392, 349, 330, 294, 262 }; // Spannungswerte in V * 10 // für 10 Tasten int Spannungswert [] = { 4, 7, 10, 13, 16, 19, 22, 25, 28, 31 }; void setup() { pinMode (Lautsprecher, OUTPUT); // Digitaler Ausgang für Lautsprecher } void loop() { int Wert_Ist = analogRead(Analog_Pin); // Analog Eingang aktuell if (Wert_Ist > 50) { // Start bei ca. 0,25 V for (int i = 0; i < 10; i++) { // 10 Intervalle bilden und untersuchen int U_Wert = Spannungswert [i] * 20; // Faktor 20 =~ 1023/50 int Wert_Min = U_Wert - 31; // untere Grenze eines Intervalls int Wert_Max = U_Wert + 31; // obere Grenze if ((Wert_Ist > Wert_Min) && (Wert_Ist < Wert_Max)) { // Intervall gefunden Frequenz = Note [i]; // Taste Nr.= i, Frequenz zuordnen } } tone (Lautsprecher, Frequenz); // Lautsprecher ON } if (Wert_Ist < 51) { noTone (Lautsprecher); // Lautsprecher OFF } } // ***************************************************************************************
|
Google-Suche auf MEINE-SCHALTUNG.de : |