Digital-Analog-Wandler (DAC)

Das Arduino Uno R4 WiFi ist mit einem integrierten DAC (Digital-Analog-Wandler) ausgestattet. Ein DAC ist entscheidend für die Umwandlung digitaler Signale in ihre analogen Gegenstücke, eine Funktionalität, die besonders wichtig in Anwendungen wie der Audiobearbeitung, der Erzeugung analoger Signale und anderen Szenarien ist, die präzise analoge Ausgaben erfordern.

Der DAC auf dem Uno R4 WiFi bietet eine Auflösung von bis zu 12 Bit und liefert echte analoge Ausgabefähigkeiten, die die Leistung von PWM-Pins übertreffen.

../_images/05_dac.png

Musik mit DAC abspielen

Schaltplan

../_images/05_dac_bb.png

Code Hochladen

Öffnen Sie die Datei 05-dac.ino, die sich unter elite-explorer-kit-main\r4_new_feature\05-dac befindet, oder fügen Sie den folgenden Code in Ihre Arduino IDE ein.

Bemerkung

Bitte platzieren Sie die Datei pitches.h im selben Verzeichnis wie den Code, um eine ordnungsgemäße Funktion zu gewährleisten.

Dieses Projekt nutzt das Arduino und den DAC (Digital-Analog-Wandler), um die ikonische Melodie von Super Mario Bros zu spielen. Es verwendet eine Bibliothek namens analogWave zur Erzeugung von Sinuswellen und eine weitere Bibliothek, pitches.h, zur Definition der Notenfrequenzen.

  • melody[]: Dieses Array enthält die zu spielenden Noten zusammen mit ihren Dauern. Noten werden durch vordefinierte Töne (z.B. NOTE_E5) dargestellt, und Dauern werden in Form von Schlägen repräsentiert (z.B. 4 für eine Viertelnote). Sie können versuchen, Ihre eigene Melodie zu komponieren, indem Sie die Noten und Dauern im Array melody[] ändern. Wenn Sie interessiert sind, gibt es ein Repository auf GitHub (robsoncouto/arduino-songs), das Arduino-Code für verschiedene Lieder bereitstellt. Obwohl deren Ansatz von diesem Projekt abweichen mag, können Sie sich an ihren Noten und Dauern orientieren. (Ersetzen Sie einfach das melody[] im entsprechenden Track durch den Code in diesem Projekt.)

  • tempo : Das Tempo für dieses Projekt ist auf 200 BPM (Beats Per Minute) eingestellt, das zur Berechnung der Dauer jeder Note verwendet wird. Die Änderung dieses Werts verändert die Geschwindigkeit der Songaufführung.

  • Sinuswellengenerator: Die Funktion sine der Bibliothek analogWave initialisiert einen 10 Hz Sinuswellengenerator, der zur Ausgabe der Noten über den DAC verwendet wird.

  • Notendauer: Basierend auf dem eingestellten Tempo und der Schlagzahl für jede Note wird die Dauer jeder Note berechnet.

  • Spielen und Pause: Jede Note wird für 85% ihrer berechneten Dauer gespielt, gefolgt von einer 15% Pause, um zwischen den Noten zu unterscheiden.

  • Schleife: Nachdem die Melodie abgespielt wurde, setzt der Code automatisch zurück und beginnt erneut zu spielen.

Dies ist ein Beispiel, das demonstriert, wie man Arduino und externe Hardware (DAC) zur Musikgenerierung verwendet. Es zeigt auch, wie man Arrays und Schleifen verwendet, um die Logik der Musikwiedergabe zu vereinfachen.

Referenz