今天我要給大家介紹的是來自omriharel (GitHub)的“deej”項目。這樣就可以通過外部硬件控制音量,不僅可以控制整體音量,還可以控制個人程序或設(shè)備,如揚聲器、耳機(jī)或PC上連接的麥克風(fēng)。例如,單個程序的音量可以獨立混合。
按如下方式將旋轉(zhuǎn)編碼器連接到Nano上。
旋轉(zhuǎn)編碼器的數(shù)量可以根據(jù)需要變化。其中三個用于說明目的。
軟件
安裝deej
在您的計算機(jī)上安裝deej軟件,以便它可以相應(yīng)地設(shè)置設(shè)備上的音量。
從項目的GitHub頁面下載,下載最新版本的deej.exe文件并移動到新目錄下。
如果您的計算機(jī)上安裝的不是Windows操作系統(tǒng),則需要自己編譯該文件。您可以在GitHub存儲庫中找到更多相關(guān)信息。
單片機(jī)編程
首次使用Nano微控制器,需要先編寫CH340的驅(qū)動程序。
為了更容易地讀取編碼器值,需要使用encoder .h庫。這可以像往常一樣通過集成庫管理器安裝,也可以作為Arduino IDE中的.zip文件安裝。
通過在Arduino IDE中選擇正確的板和COM端口下載Nano以下代碼。如果上傳有問題,轉(zhuǎn)到Tools>Processor并選擇Atmega328P (Old Bootloader)。
首先,集成編碼器庫并創(chuàng)建編碼器的對象。在setup()中初始化串行監(jiān)視器。在下面的循環(huán)()中,確定編碼器位置,如果需要,將其限制在10位值范圍內(nèi)。由于編碼器每旋轉(zhuǎn)包含32步,因此值乘以50的因數(shù)。然后通過串行接口將這些數(shù)據(jù)以指定的格式傳輸?shù)接嬎銠C(jī)。
通過在Arduino IDE中打開串行監(jiān)視器并檢查當(dāng)編碼器轉(zhuǎn)動時監(jiān)視器中的值是否相應(yīng)變化來測試設(shè)置。
軟件配置
一旦硬件測試成功,現(xiàn)在就可以配置軟件,在后臺通過串行端口讀取這些值。
為此,創(chuàng)建配置。使用任何編輯器在前面創(chuàng)建的目錄中創(chuàng)建Yaml文件(或者,這里的示例文件可以從這里下載)。
該配置文件包含以下5個配置項:
?slider_mapping
相應(yīng)的功能在這里被分配給編碼器。以下功能是可能的:
?主控一般音量
麥克風(fēng):控制連接的麥克風(fēng)/輸入設(shè)備
程序名。exe:控制指定程序的音量
deej。Unmapped:控制所有未使用上述命令選擇的程序
deej。當(dāng)前:控制當(dāng)前程序的音量(打開和窗口打開)
Speaker (xyz):控制指定的設(shè)備,必須指定整個顯示名稱。輸入和輸出設(shè)備都可以使用。
system:控制Windows系統(tǒng)卷
例子:
slider_mapping:
0:主
1: spotify.exe
2: deej.current
多個功能也可以分配給一個通道。簡單地使用如下列表:
x:
函數(shù)1
功能2
注意:對于多行yaml配置部分,請注意縮進(jìn)!
invert_sliders
該命令用于改變方向。這意味著0% - 100% <=> 100% - 0%
例子:
invert_sliders:假
com_port
這里必須指定微控制器的串行COM端口。這可以在Arduino IDE或Windows設(shè)備管理器中確定。
例子:
com_port: COM6
baud_rate
串行通信的速度必須與通過serial .begin()設(shè)置的速度匹配。
例如:baud_rate: 9600
noise_reduction
此設(shè)置項僅在使用電位器而不是旋轉(zhuǎn)編碼器時才重要,因為這可以補償ADC的值波動,即所謂的噪聲。
設(shè)置選項:高;違約;低
例子:
noise_reduction:高
最后,您可以用3D打印機(jī)打印一個支架來測試編碼器與面包板的結(jié)合。這是一個簡單的支架,可以快速打印并連接到面包板上。歡迎您根據(jù)您的想法在CAD程序中調(diào)整模型。
結(jié)論
現(xiàn)在你可以使用三個旋轉(zhuǎn)編碼器來改變整體音量,Spotify的音量和你目前使用的程序的音量。您還可以添加更多的旋轉(zhuǎn)編碼器來單獨控制更多的程序或設(shè)備。許多擴(kuò)展和修改是可能的,這里沒有限制你的創(chuàng)造力。
本文編譯自hackster.io