色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arduino進行USB音量控制

王晾其 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-22 17:44 ? 次閱讀

使用快捷鍵調節電腦音量非常方便,許多多媒體鍵盤都內置有該功能。但是如果您的鍵盤沒有,您可以使用Arduino、一個旋鈕和一些代碼來構建該工具。本指南將介紹如何添加外部的庫,并使用Arduino來控制您的PC。
poYBAGPy0x6AArf6AAI-EWDG6og790.jpg

如何使用Arduino控制您的計算機

為了用Arduino控制計算機,我們將使用一種名為Leonardo的變體Uno。與Uno不同的是,該板基于4ATmega32u4芯片組,這種芯片組本身支持USB通信,從而可以使開發板用作鼠標和鍵盤。方便的一點是,這也使該板可以發送媒體控制命令,類似于鍵盤上的音量、播放和暫停按鈕的工作原理
但是,為了使用這些媒體命令,您需要在Arduino IDE中啟用一個額外的庫。庫中包含了可以執行各種特定任務的附加代碼,而Arduino IDE自帶有一些用于控制伺服系統、鼠標或鍵盤等常用功能的庫。與此同時,IDE還包含一個可搜索的附加庫目錄,可以進一步擴展您的項目。
在這里我們將可以找到所需要的媒體控制庫。在Arduino IDE中,進入Sketch > Include library > Manage librarie…然后搜索“hoodloader”,點擊“Install(安裝)”。現在,您就可以在IDE中使用HID項目庫了。我們將在下文代碼部分向您展示如何將其引用到您的草圖中。

所需工具

有很多種方法可以構建該特定工具,從技術上講,可以使用帶有Hoodloader2 庫的 Arduino Uno來實現。但是,此方法的設置過程不在本指南的范圍內,所以我們會重點關注被設計為默認用作USB鼠標或鍵盤的Arduino模型。在這一思路下,您將需要以下工具:

Arduino Leonardo pYYBAGPy0yGATcDGAAC75ctvbCg917.jpg
一個電位器
這是一個簡單的三引腳輸入元件,帶有一個附加的旋鈕或控制盤。通過調節功率吞吐量,該輸入可以調整Arduino內部的一個值,我們可以將其用作音量控制。
poYBAGPy0uKAQ_eTAAAX0GkEJ3A940.jpg
Arduino IDE
如果您尚未設置Arduino IDE, 您可以點擊此處查看之前的指南
pYYBAGPy0k2AN7DzAAAw7VCpJJQ071.png

您還需要一根微型USB線(如果您身邊沒有的話),以及一臺可以工作的計算機。
本指南是為Windows用戶設計的,雖然也適用于使用其他操作系統的用戶,但是在細節上可能會有所不同。

代碼

首先,以下是我們將使用的草圖中的完整代碼:
#include
int potpin = 0; // Assign analog pin to potentiometer
int val = 0; // Variable to read value from potentiometer, starts at 0
int oldVolume = 0; // Used to compare volume levels
int currentVolume = 0; // Used to compare volume levels
void setup() {
Serial.begin(9600); // This will allow you to read the current value of the dial
}
void loop() {
val = analogRead(potpin); // Reads potentiometer value (between 0 and 1023)
val = map(val, 0, 1023, 0, 50); // Scale value to volume (value between 0 and 50)
Serial.print(val); // Print dial/volume position
Serial.println(); //
if (val != oldVolume) {
if(val > oldVolume){
//delay(100);
Consumer.write(MEDIA_VOLUME_UP);
currentVolume = currentVolume + 2;
oldVolume = val;
}
else{
//delay(100);
Consumer.write(MEDIA_VOLUME_DOWN);
currentVolume = currentVolume – 2;
oldVolume = val;
}
}
}
如果您想直接跳到接線部分,可以將此代碼復制到IDE中并上傳。現在,我們來解釋一下這個草圖中的一些重要部分。
#include
該命令將會把您之前添加到草圖中的媒體控制庫進行引用。這使我們可以使用稍后將討論的那些命令。雖然通過菜單將Hoodloader庫添加到您的IDE也可以使其在草圖中可用,但是該行代碼對于需要使用其中所包含命令的任何草圖都是必需的。
int potpin = 0; // Assign analog pin to potentiometer
int val = 0; // Variable to read value from potentiometer, starts at 0
int oldVolume = 0; // Used to compare volume levels
int currentVolume = 0; // Used to compare volume levels
這里的第一行從電位器(按鈕/控制盤)啟動信號。然后將控制盤的位置分配給val變量。這用于提高或降低音量。
由于無法直接分配音量級別,草圖會指示PC以2為增量來提升或降低音量級別(Windows音量級別范圍為0到100),直到調整到所需的音量級別。之后的兩個變量oldVolume和currentVolume在每次循環迭代中都會進行比較,直到它們與控制盤輸出的級別匹配。
val = analogRead(potpin); // Reads potentiometer value (between 0 and 1023)
val = map(val, 0, 1023, 0, 50); // Scale value to volume (value between 0 and 50)
這兩行代碼用于讀取控制盤的位置,然后將該值映射到0到50的范圍中。通常,電位器可以讀取0到1023范圍內的值,但這比我們所需要的變化范圍大得多,所以我們需要將范圍壓縮到0到50。
由于Windows的音量調整范圍是0到100,并且每執行一次音量增大或減小命令,音量級別的增量為2,所以這可以使控制盤的最小和最大值對應于Windows中的最小和最大音量級別。
if (val != oldVolume) {
if(val > oldVolume){
Consumer.write(MEDIA_VOLUME_UP);
currentVolume = currentVolume + 2;
oldVolume = val;
}
else{
Consumer.write(MEDIA_VOLUME_DOWN);
currentVolume = currentVolume – 2;
oldVolume = val;
}
}
在這個基本循環中,會將來自控制盤的值和之前的音量級別進行比較。只要沒有發生任何變化,該循環中的代碼就不會被執行。一旦控制盤發生了移動,循環代碼將開始執行。如果控制盤向上移動,那么循環將會執行MEDIA_VOLUME_UP命令,直到系統音量與控制盤位置相匹配。如果控制盤向下移動,循環將改為執行MEDIA_VOLUME_DOWN命令。
該命令是使用HID項目API的 Consumer.write()函數來發送的。該命令還可用于諸如媒體暫停、媒體播放或靜音等工作。您可以嘗試添加更多的輸入元件,如按鈕,并調整草圖對其進行使用。
poYBAGPy0yuAAfYlAAKYhn2KnjE911.jpg
接線
現在您已經了解代碼是如何工作的了,接下來可以將草圖上傳到您的Arduino Leonard。上傳后,您可以開始連接電位器。這個項目的接線很簡單:
● 將電位器的第一個引腳連接到GND。
● 將中間引腳連接到模擬引腳A0。
● 將電位器的最后一個引腳連接到5V引腳。
● 將Leonardo上的微型USB端口連接到計算機
雖然在許多Arduino項目中,只要有電源,就可以在不使用計算機的情況下運行,但是在本項目中,很顯然是需要連接計算機的。
在使用此版本的草圖時,最好在首次啟動Arduino時將計算機音量和控制盤都設置為零。但是,為了使其更加靈活,您也可以嘗試添加Consumer 庫中的其他命令來自動調低系統音量,以便您在首次連接使用時將其與您的控制盤同步。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png
DevicePlus 編輯團隊
設備升級版適用于所有熱愛電子和機電一體化的人。

審核編輯黃宇


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7976

    瀏覽量

    265527
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187558
收藏 人收藏

    評論

    相關推薦

    使用PCM2706C作為USB轉I2S,無法通過桌面右下角的音量控制欄來控制音量,為什么?

    使用PCM2706C作為USB轉I2S,win7系統驅動正常,播放音樂正常, 但是無法通過桌面右下角的音量控制欄來控制音量,只能通過播放器的音量控
    發表于 10-17 07:06

    請問PCM1794如何實現音量控制

    目前,我們用 PCM1794 + OPA1612 做了一款機頂盒,PCM1794 通過 I2S 和 CPU 連接,通過硬件對 PCM1794 進行配置,板子回來在測試的時候發現無法通過軟件實現音量控制,請問如何實現音量控制,謝
    發表于 10-30 08:33

    WINDOWS API 應用,系統音量控制

    系統音量控制,其它控制一樣,改下參數即可實現,如實現窗口無邊透明等,都可以用此函數!
    發表于 10-18 13:53

    分享一個不錯的使用Arduino Leonardo PC音量控制的項目

    描述Arduino Leonardo PC 音量控制這是一個使用 Arduino Leonardo、電位計和 10 個 LED 來控制計算機 (PC)
    發表于 09-01 06:18

    電子音量控制電路

    電子音量控制電路 TC9153是東芝公司推出的CMOS高保真音量控制專用集成電
    發表于 12-05 13:46 ?6880次閱讀
    電子<b class='flag-5'>音量控制</b>電路

    音量控制M62446的驅動C程序

    音量控制M62446的驅動C程序音量控制M62446
    發表于 07-07 17:48 ?7254次閱讀

    基于USB控制器設計的Windows音量控制

    基于USB控制器設計的Windows音量控制器 介紹一種使用MAX3420作為USB控制器、ATtiny 13作為微處理器設計的Windo
    發表于 03-29 15:12 ?3262次閱讀
    基于<b class='flag-5'>USB</b><b class='flag-5'>控制</b>器設計的Windows<b class='flag-5'>音量控制</b>器

    電子音量控制電路

    電子音量控制電路 TC9153是東芝公司推出的CMOS高保真音量控制專用集成電路。該電路的特點是功耗低,電流約為1~3mA。失真小,THD≤0.005%。音量衰減范圍
    發表于 07-29 14:43 ?6236次閱讀
    電子<b class='flag-5'>音量控制</b>電路

    用于專業音頻的有源音量控制的BOM

    本文介紹了用于專業音頻的有源音量控制的BOM。
    發表于 11-21 15:40 ?14次下載
    用于專業音頻的有源<b class='flag-5'>音量控制</b>的BOM

    微軟Windows 10的全新內置音量控制

    追溯到2018年,有爆料表明Windows 10內置音量控制可能會在將來的版本中進行重大改進。由于某些原因,微軟決定推遲Windows 10的新音量控制,但該功能似乎會在今年晚些時候卷土重來。
    的頭像 發表于 03-09 14:21 ?2328次閱讀

    音量控制器如何設置_音量控制器的作用

    音量控制器,顧名思義就是說它是一種控制音量的輸出的一種設備,主要是應用在一些聲音的處理和對音頻的音量控制。它的使用就是把會傷害到聽力的那些音頻轉換成為一些信號,再通過
    發表于 05-29 09:45 ?7087次閱讀

    Arduino Leonardo PC音量控制開源分享

    電子發燒友網站提供《Arduino Leonardo PC音量控制開源分享.zip》資料免費下載
    發表于 08-12 10:35 ?5次下載
    <b class='flag-5'>Arduino</b> Leonardo PC<b class='flag-5'>音量控制</b>開源分享

    如何使用Digispark進行音量控制

    電子發燒友網站提供《如何使用Digispark進行音量控制.zip》資料免費下載
    發表于 11-04 14:33 ?0次下載
    如何使用Digispark<b class='flag-5'>進行</b><b class='flag-5'>音量控制</b>

    音量控制系統開源分享

    電子發燒友網站提供《音量控制系統開源分享.zip》資料免費下載
    發表于 12-01 15:14 ?0次下載
    <b class='flag-5'>音量控制</b>系統開源分享

    等響度音量控制電路

    等響度音量控制電路圖,用于功放主音量控制
    發表于 06-25 09:25 ?4次下載
    主站蜘蛛池模板: 免费人妻无码AV不卡在线| 人性本色联盟| 日日操夜夜摸| 99久久99久久精品| 伦理片飘花免费影院| 中文字幕人成人乱码亚洲影视S| 精品精品国产yyy5857香蕉| 亚洲精品福利在线| 日日啪无需播放器| www.久艹| 日本红怡院亚洲红怡院最新| 超碰97视频在线观看| 日本邪恶少女漫画大全| 国产99久久久欧美黑人刘玥| 天龙八部慕容属性加点| 国产女人91精品嗷嗷嗷嗷| 亚洲国产高清视频在线观看| 和美女啪啪啪动态图| 伊人伊人伊人| 暖暖视频免费观看高清完整版 | 张津瑜的9分58秒7段免费| 美女18黄| 啊轻点啊再深点视频免费| 少妇高潮A视频| 国产自啪偷啪视频在线| 一二三四在线观看高清电视剧 | 99热久久这里只有精品| 青青草国产精品久久| 国产1000部成人免费视频| 羞羞在线观看| 久久亚洲精品中文字幕| 99热久久视频只有精品6国产| 日本久久久WWW成人免费毛片丨| 国产精品1区2区| 一本久道久久综合狠狠躁AV| 毛片免费在线视频| 动漫女主被扒开双腿羞辱| 亚洲久久少妇中文字幕| 男人J桶女人P视频无遮挡网站| 俄罗斯美女啪啪| 亚洲在线2018最新无码|