Lautstärkeregelung mit "deej" und AZ Nano - AZ-Delivery

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

Rotary encoder

Breadboard

Dupont Kabel

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>

Encoder enc1(
3, 4);
Encoder enc2(
8, 9);
Encoder enc3(
11, 12);

int val1, val2, val3;

void setup() {
 
Serial.begin(9600);
}

void loop() {
  val1 = enc1.
read() * 50;
  val2 = enc2.
read() * 50;
  val3 = enc3.
read() * 50;
 
if(val1 > 4096) {
    val1 =
4096;
    enc1.
write(80);
  }
 
else if(val1 < 0) {
    val1 =
0;
    enc1.
write(0);
  }

 
if(val2 > 4096) {
    val2 =
4096;
    enc2.
write(80);
  }
 
else if(val2 < 0) {
    val2 =
0;
    enc2.
write(0);
  }

 
if(val3 > 4096) {
    val3 =
4096;
    enc3.
write(80);
  }
 
else if(val3 < 0) {
    val3 =
0;
    enc3.
write(0);
  }


 
Serial.println((String)val1 + "|" + (String)val2 + "|" + (String)val3);
 
delay(10);
}

 

Sketch Download

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.

Druckbare .stl Datei

Anpassbare .step Datei

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.

Für arduinoProjekte für anfänger

1 commento

room6675

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.

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione