Heute möchte ich Ihnen das Projekt “deej” von omriharel (GitHub) vorstellen. Dieses ermöglicht die Lautstärkesteuerung über externe Hardware und nicht nur die Steuerung der Gesamtlautstärke, sondern auch einzelner Programme oder Geräte wie Lautsprecher, Kopfhörer oder des angeschlossenen Mikrofons Ihres PCs.
Somit kann beispielsweise die Lautstärke der einzelnen Programme unabhängig gemischt werden.
Hardware
AZ-Nano USB-C oder AZ-Nano V3
Verbinden Sie die Rotary Encoder wie folgt mit dem Nano.

Die Anzahl an Rotary Encodern kann beliebig variiert werden. Zur Veranschaulichung werden 3 Stück verwendet.
Software
deej installieren
Installieren Sie die Software deej auf Ihrem Computer, damit diese die Lautstärke auf dem Gerät entsprechend einstellen kann.
Laden Sie von der GitHub Seite des Projekts die deej.exe Datei des neuesten Releases herunter und verschieben Sie diese in ein neues Verzeichnis.
Falls Sie auf Ihrem Computer ein anderes Betriebssystem als Windows installiert haben, müssen Sie die Datei selbst kompilieren. Nähere Informationen dazu finden Sie im GitHub Repository.
Microcontroller-Programmierung
Falls Sie das erste Mal mit dem Nano Mikrocontroller arbeiten, müssen Sie zuerst noch den CH340 Treiber installieren.
Für das einfachere Auslesen der Encoder-Werte wird noch die Encoder.h Bibliothek benötigt. Diese kann wie gewohnt über den integrierten Library-Manager, oder als .zip Datei in der Arduino IDE installiert werden.
Laden Sie auf den Nano den folgenden Code unter Auswahl des richtigen Boards und COM-Port in der Arduino IDE.
Bei Problemen mit dem Upload wechseln Sie unter Tools>Processor auf Atmega328P (Old Bootloader).
#include <Encoder.h> |
Am Anfang wird die Encoder Library eingebunden und Objekte für die Encoder erstellt. Im setup() wird der Serielle Monitor initialisiert. Im darauf folgenden loop() wird die Encoder-Stellung ermittelt und gegebenenfalls auf den 10-bit Wertebereich begrenzt. Da die Encoder 32 Schritte auf eine Umdrehung umfassen, wird der Wert mit dem Faktor 50 multipliziert. Daraufhin werden diese im vorgegebenen Format über die serielle Schnittstelle auf den Computer übertragen.
Testen Sie den Aufbau, indem Sie in der Arduino IDE den Seriellen Monitor öffnen und kontrollieren, ob sich beim Drehen der Encoder die Werte im Monitor entsprechend ändern.
Software-Konfiguration
Nachdem die Hardware erfolgreich getestet ist, können Sie nun die Software, welche im Hintergrund die Werte über den Seriellen Port ausliest, konfigurieren.
Erstellen Sie dazu die config.yaml Datei im vorher erstellten Verzeichnis mit einem beliebigen Editor (alternativ kann die Beispieldatei hier heruntergeladen werden).
In dieser Konfigurations-Datei gibt es folgende fünf Einstellungspunkte:
slider_mapping
Hier werden den Encodern die entsprechenden Funktionen zugewiesen. Möglich sind folgende Funktionen:
master: steuert die generelle Lautstärke
mic: steuert das angeschlossene Mikrofon/Eingabegerät
Programmname.exe: steuert die Lautstärke des angegebenen Programms
deej.unmapped: steuert alle nicht mit oben genanntem Befehl gewählte Programme
deej.current: steuert die Lautstärke des Programms im Fokus (geöffnet und Fenster offen)
Lautsprecher (xyz): steuert das angegebene Gerät, der ganze angezeigte Name muss angegeben werden. Es können sowohl Ein- als auch Ausgabegeräte verwendet werden.
system: steuert die Windows Systemlautstärke
Beispiel:
slider_mapping:
0: master
1: spotify.exe
2: deej.current
Es können auch mehrere Funktionen auf einen Kanal gelegt werden. Verwenden Sie dazu einfach eine Liste wie folgt:
x:
- Funktion 1
- Funktion 2
Anmerkung: Bei einem mehrzeiligen yaml-Konfigurationsabschnitt ist auf die Einrückung zu achten!
invert_sliders
Mit diesem Befehl kann die Richtung gewechselt werden. Das heißt 0% - 100% <=> 100% - 0%
Beispiel:
invert_sliders: false
com_port
Hier muss der serielle COM-Port des Mikrocontrollers angegeben werden. Dieser kann entweder in der Arduino IDE oder im Windows Gerätemanager ermittelt werden.
Beispiel:
com_port: COM6
baud_rate
Die Geschwindigkeit der seriellen Kommunikation muss mit der über Serial.begin() eingestellten übereinstimmen.
Beispiel:
baud_rate: 9600
noise_reduction
Dieser Einstellungspunkt ist nur von Bedeutung, wenn Sie anstatt Rotary-Encodern ein Potentiometer verwenden, da hiermit die Wertschwankung, das sogenannte Rauschen, des ADCs kompensiert wird.
Einstellungsmöglichkeiten: high; default; low
Beispiel:
noise_reduction: high
Zum Schluss können Sie eine Halterung mit einem 3D-Drucker ausdrucken, um die Encoder in Verbindung mit dem Breadboard zu testen. Hierbei handelt es sich um eine einfache Halterung, die schnell gedruckt werden kann und an das Breadboard gesteckt wird. Gerne können Sie das Modell in einem CAD-Programm nach Ihren Vorstellungen anpassen.
Fazit
Jetzt können Sie mit drei Rotary-Encodern die Gesamtlautstärke, die Lautstärke von Spotify und die Lautstärke des gerade verwendeten Programms ändern. Gerne können Sie auch noch mehr Rotary Encoder hinzufügen, um mehr Programme oder Geräte individuell zu steuern.
Hier sind viele Erweiterungen und Modifikationen möglich, der Kreativität sind keine Grenzen gesetzt.
Viel Spass beim Nachbauen :)
Spotify und Spotify Premium sind eingetragene Marken von Spotify AB. Dieser Blog steht in keiner Verbindung zu Spotify AB und wird weder von Spotify AB gesponsert noch unterstützt. Alle in diesem Beitrag verwendeten Markennamen, Logos und Warenzeichen gehören ihren jeweiligen Eigentümern und werden ausschließlich zur Beschreibung oder Identifikation verwendet.
1 commentaire
room6675
Ich nutze dazu allerdings einen Arduino pro micro, welcher einen direkten USB-Anschluß integriert hat und sich als HID-Device programmieren läßt. Somit braucht man keine Treiber installieren und emuliert damit die Tastatureingaben und Mausbewegungen/-klicks simulieren. Den Taster nehm ich für die Stummschaltung.