在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino進(jìn)行USB音量控制

王晾其 ? 來(lái)源:DevicePlus ? 作者:DevicePlus ? 2023-02-22 17:44 ? 次閱讀

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

如何使用Arduino控制您的計(jì)算機(jī)

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

所需工具

有很多種方法可以構(gòu)建該特定工具,從技術(shù)上講,可以使用帶有Hoodloader2 庫(kù)的 Arduino Uno來(lái)實(shí)現(xiàn)。但是,此方法的設(shè)置過(guò)程不在本指南的范圍內(nèi),所以我們會(huì)重點(diǎn)關(guān)注被設(shè)計(jì)為默認(rèn)用作USB鼠標(biāo)或鍵盤的Arduino模型。在這一思路下,您將需要以下工具:

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

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

代碼

首先,以下是我們將使用的草圖中的完整代碼:
#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;
}
}
}
如果您想直接跳到接線部分,可以將此代碼復(fù)制到IDE中并上傳?,F(xiàn)在,我們來(lái)解釋一下這個(gè)草圖中的一些重要部分。
#include
該命令將會(huì)把您之前添加到草圖中的媒體控制庫(kù)進(jìn)行引用。這使我們可以使用稍后將討論的那些命令。雖然通過(guò)菜單將Hoodloader庫(kù)添加到您的IDE也可以使其在草圖中可用,但是該行代碼對(duì)于需要使用其中所包含命令的任何草圖都是必需的。
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
這里的第一行從電位器(按鈕/控制盤)啟動(dòng)信號(hào)。然后將控制盤的位置分配給val變量。這用于提高或降低音量。
由于無(wú)法直接分配音量級(jí)別,草圖會(huì)指示PC以2為增量來(lái)提升或降低音量級(jí)別(Windows音量級(jí)別范圍為0到100),直到調(diào)整到所需的音量級(jí)別。之后的兩個(gè)變量oldVolume和currentVolume在每次循環(huán)迭代中都會(huì)進(jìn)行比較,直到它們與控制盤輸出的級(jí)別匹配。
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范圍內(nèi)的值,但這比我們所需要的變化范圍大得多,所以我們需要將范圍壓縮到0到50。
由于Windows的音量調(diào)整范圍是0到100,并且每執(zhí)行一次音量增大或減小命令,音量級(jí)別的增量為2,所以這可以使控制盤的最小和最大值對(duì)應(yīng)于Windows中的最小和最大音量級(jí)別。
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;
}
}
在這個(gè)基本循環(huán)中,會(huì)將來(lái)自控制盤的值和之前的音量級(jí)別進(jìn)行比較。只要沒(méi)有發(fā)生任何變化,該循環(huán)中的代碼就不會(huì)被執(zhí)行。一旦控制盤發(fā)生了移動(dòng),循環(huán)代碼將開(kāi)始執(zhí)行。如果控制盤向上移動(dòng),那么循環(huán)將會(huì)執(zhí)行MEDIA_VOLUME_UP命令,直到系統(tǒng)音量與控制盤位置相匹配。如果控制盤向下移動(dòng),循環(huán)將改為執(zhí)行MEDIA_VOLUME_DOWN命令。
該命令是使用HID項(xiàng)目API的 Consumer.write()函數(shù)來(lái)發(fā)送的。該命令還可用于諸如媒體暫停、媒體播放或靜音等工作。您可以嘗試添加更多的輸入元件,如按鈕,并調(diào)整草圖對(duì)其進(jìn)行使用。
poYBAGPy0yuAAfYlAAKYhn2KnjE911.jpg
接線
現(xiàn)在您已經(jīng)了解代碼是如何工作的了,接下來(lái)可以將草圖上傳到您的Arduino Leonard。上傳后,您可以開(kāi)始連接電位器。這個(gè)項(xiàng)目的接線很簡(jiǎn)單:
● 將電位器的第一個(gè)引腳連接到GND。
● 將中間引腳連接到模擬引腳A0。
● 將電位器的最后一個(gè)引腳連接到5V引腳。
● 將Leonardo上的微型USB端口連接到計(jì)算機(jī)
雖然在許多Arduino項(xiàng)目中,只要有電源,就可以在不使用計(jì)算機(jī)的情況下運(yùn)行,但是在本項(xiàng)目中,很顯然是需要連接計(jì)算機(jī)的。
在使用此版本的草圖時(shí),最好在首次啟動(dòng)Arduino時(shí)將計(jì)算機(jī)音量和控制盤都設(shè)置為零。但是,為了使其更加靈活,您也可以嘗試添加Consumer 庫(kù)中的其他命令來(lái)自動(dòng)調(diào)低系統(tǒng)音量,以便您在首次連接使用時(shí)將其與您的控制盤同步。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png
DevicePlus 編輯團(tuán)隊(duì)
設(shè)備升級(jí)版適用于所有熱愛(ài)電子和機(jī)電一體化的人。

審核編輯黃宇


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7962

    瀏覽量

    265130
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6472

    瀏覽量

    187363
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用PCM2706C作為USB轉(zhuǎn)I2S,無(wú)法通過(guò)桌面右下角的音量控制欄來(lái)控制音量,為什么?

    使用PCM2706C作為USB轉(zhuǎn)I2S,win7系統(tǒng)驅(qū)動(dòng)正常,播放音樂(lè)正常, 但是無(wú)法通過(guò)桌面右下角的音量控制欄來(lái)控制音量,只能通過(guò)播放器的音量控
    發(fā)表于 10-17 07:06

    請(qǐng)問(wèn)PCM1794如何實(shí)現(xiàn)音量控制?

    目前,我們用 PCM1794 + OPA1612 做了一款機(jī)頂盒,PCM1794 通過(guò) I2S 和 CPU 連接,通過(guò)硬件對(duì) PCM1794 進(jìn)行配置,板子回來(lái)在測(cè)試的時(shí)候發(fā)現(xiàn)無(wú)法通過(guò)軟件實(shí)現(xiàn)音量控制,請(qǐng)問(wèn)如何實(shí)現(xiàn)音量控制,謝
    發(fā)表于 10-30 08:33

    WINDOWS API 應(yīng)用,系統(tǒng)音量控制

    系統(tǒng)音量控制,其它控制一樣,改下參數(shù)即可實(shí)現(xiàn),如實(shí)現(xiàn)窗口無(wú)邊透明等,都可以用此函數(shù)!
    發(fā)表于 10-18 13:53

    分享一個(gè)不錯(cuò)的使用Arduino Leonardo PC音量控制的項(xiàng)目

    描述Arduino Leonardo PC 音量控制這是一個(gè)使用 Arduino Leonardo、電位計(jì)和 10 個(gè) LED 來(lái)控制計(jì)算機(jī) (PC)
    發(fā)表于 09-01 06:18

    電子音量控制電路

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

    音量控制M62446的驅(qū)動(dòng)C程序

    音量控制M62446的驅(qū)動(dòng)C程序音量控制M62446
    發(fā)表于 07-07 17:48 ?7247次閱讀

    基于USB控制器設(shè)計(jì)的Windows音量控制

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

    電子音量控制電路

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

    用于專業(yè)音頻的有源音量控制的BOM

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

    微軟Windows 10的全新內(nèi)置音量控制

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

    音量控制器如何設(shè)置_音量控制器的作用

    音量控制器,顧名思義就是說(shuō)它是一種控制音量的輸出的一種設(shè)備,主要是應(yīng)用在一些聲音的處理和對(duì)音頻的音量控制。它的使用就是把會(huì)傷害到聽(tīng)力的那些音頻轉(zhuǎn)換成為一些信號(hào),再通過(guò)
    發(fā)表于 05-29 09:45 ?7055次閱讀

    Arduino Leonardo PC音量控制開(kāi)源分享

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

    如何使用Digispark進(jìn)行音量控制

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

    音量控制系統(tǒng)開(kāi)源分享

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

    等響度音量控制電路

    等響度音量控制電路圖,用于功放主音量控制
    發(fā)表于 06-25 09:25 ?4次下載
    主站蜘蛛池模板: 久久啊| 久久国产乱子伦精品免| 免费成人黄色| ts视频在线观看| 看全黄大片狐狸视频在线观看| 五月婷婷综合基地| 色资源网| 一级黄色片在线看| 成年在线视频| 激情五月婷婷综合| 老外一级黄色片| 国久久| 国产在线美女| 成人精品亚洲人成在线| 国产一级片免费| 狠狠做久久深爱婷婷97动漫| 欧美三级在线观看视频| 日韩电影天堂网| 五月天激激婷婷大综合丁香| 曰本毛片| 99热久| 不卡视频一区二区| 午夜性福利| 欧美第一网站| 美女色18片黄黄色| 久久亚洲欧美成人精品| 美女又黄又免费| 成人三级毛片| 欧美黄色片在线播放| 久久成人影视| 4480yy私人午夜a级国产| 亚洲精品资源在线| 视频一区中文字幕| 黄免费看| 伊人久久大香线蕉综合网站| kkkbo色综合| 色综合天天综合中文网 | aa黄色大片| 伊人操| 午夜精品一区二区三区在线观看| 午夜精品网站|