In diesem Projekt werden wir einen Tongenerator mit Arduino Uno entwickeln. Wir werden Tasten haben, die mit der UNO verbunden sind, und jede von ihnen erzeugt eine andere Tonintensität. Die von der UNO erzeugte Tonfrequenz ist bei jedem internen Ton gleich. Es ist die Intensität des Klangs, die sich mit jedem Drücken ändert. Dies ist der einfachste Weg, mit Arduino Uno ein Klavier zu bauen. Überprüfen Sie auch diese Klavierschaltung.
Die Töne können auf bis zu 20 erhöht werden. Dies ergibt die beste Tonvariation und viel weichere Änderungen. Die Intensität des Tons wird durch PWM (Pulse Width Modulation) geändert. Ein Beispiel für PWM ist in der folgenden Grafik dargestellt.
In PWM ist die Signalfrequenz oder die Signaldauer (Ton + Toff) immer konstant. Nur das Verhältnis von EIN- und AUS-Zeit ändert sich. In der zweiten Grafik in der obigen Abbildung beträgt die Einschaltzeit beispielsweise 80% und die Ausschaltzeit 20% der Gesamtdauer.
In der dritten Grafik beträgt die Einschaltzeit 50% und die Ausschaltzeit 50% der gesamten Dauer. Im ersten Fall haben wir also ein Zollverhältnis von 80% und im zweiten Fall haben wir ein Zollverhältnis von 20%.
Mit dieser Änderung des Tastverhältnisses ändert sich der Effektivwert (quadratischer Mittelwert der Spannung). Wenn diese Spannung an den Summer abgegeben wird, macht sie bei jeder Änderung des Tastverhältnisses ein anderes Rauschen.
Wir werden die UNO so programmieren, dass für jede der Tasten ein PWM-Signal mit unterschiedlichem Tastverhältnis bereitgestellt wird. Wir haben also einen Tongenerator zur Hand, der bei jedem Tastendruck einen anderen Ton erzeugt.
Erforderliche Komponenten
Hardware: Arduino Uno, Netzteil (5 V), 1000 uF Kondensator, 100 nF Kondensator, Summer, Tasten (8 Stück).
Software: AURDINO Nightly oder Atmel Studio 6.2
Schaltplan und Arbeitserklärung
Die Schaltung für den Tongenerator ist in der folgenden Abbildung dargestellt.
Um das Rauschen der Versorgungsspannung herauszufiltern, werden Kondensatoren wie in der Abbildung gezeigt über die Klemmen gelegt.
Die PWM von Arduino Uno kann an jedem der auf der Leiterplatte als „~“ symbolisierten Pins erreicht werden. Es gibt sechs PWM-Kanäle in UNO. Wir können jedoch keine PWM-Pins verwenden, die über den PINS 0-7 eingerichtet wurden, da die PINS für die Tastenschnittstelle bevorzugt werden.
Es gibt einen Grund, PINS 0-7 als Eingänge auszuwählen, da die PINS 0-7 den PORTD des Mikrocontrollers darstellen. Im letzteren Fall können wir also das vollständige BYTE von PORTD übernehmen.
Um nun ein anderes PWM für das Tastverhältnis zu erhalten, verwenden wir den folgenden Befehl.
analogWrite (9, VALUE); |
Aus dem obigen Zustand können wir das PWM-Signal direkt am entsprechenden Pin erhalten. Der erste Parameter in Klammern dient zur Auswahl der Pin-Nummer des PWM-Signals. Der zweite Parameter dient zum Schreiben des Tastverhältnisses.
Der PWM-Wert von Arduino Uno kann von 0 auf 255 geändert werden. Mit "0" als niedrigster Wert auf "255" als höchster Wert. Mit 255 als Tastverhältnis erhalten wir 5 V an PIN9. Wenn das Tastverhältnis 125 beträgt, erhalten wir 2,5 V an PIN9. Wir werden das Tastverhältnis von 0-250 auf 8 Tasten aufteilen, die an PORTD von UNO angeschlossen sind. Hier wähle ich 25 Schritte für jede Schaltfläche, aber es ist Ihre Wahl.
Damit haben wir ein PWM-Signal, dessen Tastverhältnis sich mit jeder Taste ändert. Da dies dem Summer gegeben wird, haben wir einen Tongenerator. Die Arbeitsweise dieses Arduino-basierten Tongenerators wird Schritt für Schritt im unten angegebenen C-Code erläutert.