一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

用ARDUINO LEONARDO自制物理按鍵精靈(預(yù)算20)

 金剛光 2020-01-04

ARDUINO從入門到創(chuàng)客帶師第一彈 按鍵精靈(物理)

玩游戲不想重復(fù)簡單操作怎么辦?

不想按空格了

簡單做個基于ARDUINO單片機(jī)開發(fā)板的物理按鍵精靈吧

Leonardo相較前文的其他型號開發(fā)板直接使用了ATmega32u4的USB通信功能,取消了USB轉(zhuǎn)UART芯片??梢钥吹缴蠄DLEONARDO的標(biāo)準(zhǔn)ARDUINO開發(fā)板并沒有之前D1或者UNO的USB轉(zhuǎn)串口芯片CH341或者CP210X,而是直接用的USB直連MCU, 這使得它不僅可以作為一個虛擬的COM端口,還可以作為鼠標(biāo)或者鍵盤連接到計算機(jī)。ATmega32u4提供了UART TTL(5V)的通信方式,32u4還允許通過USB在電腦上虛擬COM端口來進(jìn)行虛擬串行(CDC)通信。這個芯片使用標(biāo)準(zhǔn)的USB串行驅(qū)動(在Windows上需要一個.inf文件),可以作為一個全速USB2.0設(shè)備。本文就是利用搭載這個型號單片機(jī)的開發(fā)板作為虛擬HID設(shè)備使用

HID是Human Interface Device的縮寫,由其名稱可以了解HID設(shè)備是直接與人交互的設(shè)備,例如鍵盤、鼠標(biāo)與游戲桿等。不過HID設(shè)備并不一定要有人機(jī)接口,只要符合HID類別規(guī)范的設(shè)備都是HID設(shè)備,利用LEONARDO做按鍵精靈就可以不需要人來操作單片機(jī)直接利用單片機(jī)的程序輸出,沒有人機(jī)接口

和其他的標(biāo)準(zhǔn)開發(fā)板一樣,LEONARDO標(biāo)準(zhǔn)板的左下方有個5.5*2.1DC輸入口,直流電源經(jīng)過AMS1117穩(wěn)壓給開發(fā)板供電,可以輸入6V-20V。但是,如果低于7V,5V引腳將提供小于5V的電源,控制板可能會不穩(wěn)定。如果使用大于12V的電源穩(wěn)壓器可能過熱,從而損壞電路板。推薦的范圍是7V-12V。ATmega32u4具有32KB的Flash(其中4KB被引導(dǎo)程序使用)。它還有2.5KB的SRAM和1KB的EEPROM

其實LEONARDO的實際應(yīng)用方向上來看基本都是作為HID方向的,無論是BADUSB還是模擬鍵鼠,相比更常見的UNO活著基于8266的D1等開發(fā)板來說其實使用面更窄?,F(xiàn)在大伙都喜歡搞物聯(lián)網(wǎng),什么東西都要弄個WIFI芯片連上網(wǎng),就顯得高大上了。就連小米的臺燈都帶個8266,對著手機(jī)說話就可以定時開關(guān)燈或者調(diào)亮度調(diào)色之類的,也許過不了多長時間對著手機(jī)說話就可以給廁所沖水,如果出門想起來家里廁所忘了沖,可以對手機(jī)說話就能讓廁所沖水,非常實用。

有一說一ESP8266成本便宜應(yīng)用范圍廣而且性能相比之下還更高,還能享受ARDUINO的環(huán)境和庫,編程習(xí)慣友好當(dāng)然用的人就多了。

硬件部分:

這次其實非常簡單,只需要采購一個開發(fā)板就可以了,搜索的時候最好是按銷量來,一般天貓的東西普遍比較貴但是它們買了搜索所以如果不仔細(xì)看的話很容易買貴,大伙都不是傻子同樣的東西賣的價格相差太遠(yuǎn)當(dāng)然沒人買了。所以按實際銷量來的話搜索結(jié)果里的標(biāo)價比較接近商品的實際價值。一般買左上那個17.2包郵的NANO小板型就行,右上那個20塊錢的標(biāo)準(zhǔn)版也可以 LEONARDO更多的應(yīng)用方向并不需要太多的IO,除非你打算拿它DIY機(jī)械鍵盤……圖吧垃圾佬會需要自己DIY機(jī)械鍵盤?二手鍵盤30塊錢一個,不能再多。洗一下接著用

此外咱個人來說只要鍵盤手感好是不是機(jī)械的完全無所謂,機(jī)械鍵盤再機(jī)械,也沒有咱自己30塊錢收的打字機(jī)鍵盤機(jī)械,這可真是純·機(jī)械鍵盤,手感那是真的爽,手勁不夠大的話都打不出字

之所以現(xiàn)在的機(jī)械鍵盤這么多人喜歡主要還是普通的廉價鍵盤手感太次,筆記本也好臺式機(jī)也好,大多數(shù)的鍵盤都不是什么好東西,如今IBM也不在了很少有人再覺得用筆記本自帶的鍵盤和指點(diǎn)桿出門真的可以不需要鍵鼠的感覺,現(xiàn)在的筆記本鍵盤手感基本沒比敲桌子好到哪,所以也無外乎有人面對投影鍵盤也能用得下去。而我個人覺得臺式機(jī)的話大多數(shù)人也并不會上羅技……羅技的鍵盤真的好用,相比機(jī)械也不差。

此外本篇教程的契機(jī)就是因為機(jī)械鍵盤連按空格太吵所以才會需要硬件模擬按鍵……其實我個人對于鍵盤的要求是要靜音,手感好是其次,咱過去最極限的時候為了靜音讓鍵盤實現(xiàn)零噪音甚至可以在實體店花高價去買可以折起來的“軟”鍵盤,那是真的手感基本和啃輪胎一樣但是確實沒有噪音,媽媽再也不知道我在電腦桌干什么了。

不要相信什么意大利原裝進(jìn)口,這東西都是開源的,Arduino的硬件原理圖、電路圖、IDE等軟件和核心庫都是開源的,開發(fā)人員可以在開源協(xié)議的范圍內(nèi)任意修改原始設(shè)計及相應(yīng)的代碼。華強(qiáng)北產(chǎn)的和所謂意大利的沒有本質(zhì)區(qū)別。即使是華強(qiáng)北的開發(fā)板,用的也都是質(zhì)量合格的元件,不存在質(zhì)量問題。根據(jù)實際經(jīng)驗反倒是高價的所謂正版更容易GG,至少咱以前實驗室的沙雕同學(xué)是炸的155的開發(fā)板,咱自己十塊二十塊的倒是一直用到現(xiàn)在。

LEONARDO需要用USB數(shù)據(jù)線連接到電腦,這個一般的開發(fā)板都會給,不給也頂多加一兩塊錢。此外LEONARDO用的是MICROUSB接口,一般這種接口的老式數(shù)據(jù)線一般人家都會有,如果沒有的話買一兩根質(zhì)量好點(diǎn)的線也沒多錢,1米5的針織軟包屏蔽線兩根也就10多塊錢包郵

此外我們還需要做一個觸發(fā),讓開發(fā)板決定什么時候該重復(fù)哪些按鍵,可以是個帶線開關(guān)或者干脆找根杜邦線,上期如果跟著我們做了CPU溫度顯示的話這會兒手上應(yīng)該有現(xiàn)成的杜邦線,到時候可以直接把它接在開發(fā)板上充當(dāng)開關(guān)(以上這段可以//了,實際使用上并沒有設(shè)計程序開關(guān),上電自動執(zhí)行,不想用直接拔了)

如果將來有用這個板子做鼠標(biāo)指點(diǎn)桿或者說搖桿的需求,可以考慮買個XY軸搖桿,三四塊錢吧,如果想簡單做個小鍵盤功能鍵比如音量加減之類的,可以買個矩陣鍵盤,5塊錢左右 需要旋鈕就可以搞個編碼器,總之ARDUINO外號叫電子積木,什么東西只要想要就隨手可以買回來,裝上庫加上代碼就可以用了

軟件部分

首先為完成這個目的,需要庫文件:

#include <Keyboard.h> //USB鍵盤庫(這是鍵盤操作的庫,只能在Arduino Leonardo系列的開發(fā)板上使用,如果在Arduino UNO 上編譯的話,會報錯)

//#include <HID.h> //HID設(shè)備庫(keyboard庫調(diào)用著這個庫)

ARDUINO環(huán)境的安裝咱就不說了,上期造CPU溫度顯示的時候已經(jīng)說過了

建議小白選EXE直接安裝就行了,全自動安裝不用考慮別的太多。

把開發(fā)板通過數(shù)據(jù)線有效連接在電腦上,所謂有效連接就是最好是直接連接USB接口,不經(jīng)過延長線或者轉(zhuǎn)接卡,否則可能會出現(xiàn)供電不足

正常識別之后,驅(qū)動應(yīng)該能自動安裝

WIN7 64位如果裝不上驅(qū)動,請按照這個教程進(jìn)行

反正我遇到這個問題之后直接投降掏出自帶XP的T43接著裝ARDUINO了,反正又不是不能用

我們的目的是把開發(fā)板插入電腦后,自動重復(fù)空格按鍵 能完成目的就行

Arduino的程序結(jié)構(gòu)與傳統(tǒng)的c程序結(jié)構(gòu)有所不同——Arduino程序中沒有main函數(shù)。其實并不是Arduino程序中沒有main函數(shù),而是main函數(shù)的定義隱藏在了Arduino的核心庫文件中。在進(jìn)行Arduino開發(fā)中不直接操作main函數(shù),而是使用setup和loop這兩個函數(shù)。

setup() Arduino控制器通電或者復(fù)位后,就會開始執(zhí)行Arduino的初始化配置(IO口 串口等);

loop() setup函數(shù)執(zhí)行完畢后,Arduino會接著執(zhí)行l(wèi)oop()函數(shù)中的程序。而loop函數(shù)是一個死循環(huán),其中的程序會不斷地重復(fù)運(yùn)行。通常在loop函數(shù)中完成程序的主要功能,如驅(qū)動各種模塊和采集數(shù)據(jù)等。

先在Arduino IDE里新建一個文件,導(dǎo)入資源庫:

#include <Keyboard.h>

然后這個庫常見的函數(shù)如下:開始鍵盤通訊:

Keyboard.begin();//開始鍵盤通訊

按鍵操作:

Keyboard.press();

與按鍵對應(yīng)的是釋放:

Keyboard.release();

Keyboard.releaseAll(); 是松開所有的按鍵;

當(dāng)然還可以輸入:Keyboard.println("");

最后是結(jié)束鍵盤通訊:Keyboard.end();//結(jié)束鍵盤通訊

有了這些就可以實現(xiàn)我們的目的了

此外,對于Keyboard這個庫的命令來說,括號中使用ASCII數(shù)值來確定輸入

ASCII值的表格

特殊按鍵

Failed to find GetFileInformationByHandleEx procedure in kernel32.dll可還行

老話叫缺啥補(bǔ)啥,下載之后解壓/復(fù)制到指定位置就行了

還是不行那就在xp上安裝vc2012/2013運(yùn)行庫

還是一樣報錯,行吧,好在咱還有WIN10,這次的WIN10比上次的好用點(diǎn),至少開機(jī)不會不知道為啥就把筆記本的CPU跑100%還睿頻了

#include <Keyboard.h>

void setup() { // put your setup code here, to run once:}

void loop() {Keyboard.press(32)

Keyboard.release(32) // put your main code here, to run repeatedly:

}

基本上在搞明白庫和函數(shù)之后,ARDUINO大部分的時間都是在改BUG,比如這次的代碼就缺了兩個;——在編譯之后報錯信息會告訴你怎么改,只要你能稍微懂點(diǎn)英文

這樣編譯完成就可以上傳了

然后就成功了,這次上傳完事了之后ARDUINO LEONARDO自動重啟了之后就開始自動鬼畜空格了,完美

這是完整的

#include <Keyboard.h>

void setup() {

// put your setup code here, to run once:

}

void loop() {Keyboard.press(32);

Keyboard.release(32)

// put your main code here, to run repeatedly:

;}

進(jìn)階:加上鼠標(biāo)的操作

游戲中跑步和踩車機(jī)需要用到一個空格,但是舉重需要空格+鼠標(biāo)交替連點(diǎn) 那么實現(xiàn)起來就需要涉及到鼠標(biāo)

這里其實就是在開頭加上個鼠標(biāo)庫#include "Mouse.h"

然后在LOOP的那行代碼底下加上函數(shù)實現(xiàn)Mouse.click(MOUSE_LEFT)反復(fù)按左鍵這么簡單

其實關(guān)于ARDUINO LEONARDO這種USB HID類設(shè)備還有很多比物理按鍵精靈更有意思的玩法,比如自制BADUSB通過固件層實現(xiàn)對設(shè)備的滲透,這個咱可以以后再說

這里有一個可以做一個簡單的自制鼠標(biāo)鍵盤的教程,建議各位觀摩學(xué)習(xí):

Arduino模擬鼠標(biāo)鍵盤-Arduino中文社區(qū)

以上 就這樣

PS:這次阿卡林大佬我在尋求幫助的時候說自己還沒玩過這個,有點(diǎn)意外。好在咱要實現(xiàn)的功能簡單,憑咱自己沒學(xué)過C語言的水平居然也能對付,要么怎么說ARDUINO真的是神器呢,對小白不要太友好。這回兒要是沒有環(huán)境或者像51 STM32那種反人類環(huán)境的話沒準(zhǔn)咱就放棄了,C語言從入門到放棄,太真實了

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品日本女优在线观看| 亚洲av秘片一区二区三区| 内射精子视频欧美一区二区| 搡老妇女老熟女一区二区| 亚洲欧美日韩综合在线成成| 中文字字幕在线中文乱码二区 | 欧美一级特黄大片做受大屁股| 亚洲欧美视频欧美视频| 五月天丁香婷婷一区二区| 国产激情一区二区三区不卡| 精品熟女少妇一区二区三区| 日韩成人中文字幕在线一区| 欧美老太太性生活大片| 日韩三级黄色大片免费观看| 亚洲国产香蕉视频在线观看| 韩国日本欧美国产三级| 国产精品熟女在线视频| 中文字幕一二区在线观看| 黄色国产精品一区二区三区| 亚洲国产性生活高潮免费视频 | 福利新区一区二区人口| 成人午夜爽爽爽免费视频| 国产欧美日韩精品成人专区| 东京热男人的天堂一二三区| 欧美日韩精品久久亚洲区熟妇人| 丰满少妇被粗大猛烈进出视频 | 日韩蜜桃一区二区三区| 国产日韩欧美专区一区| 国产精品美女午夜福利| 福利专区 久久精品午夜| 香蕉网尹人综合在线观看| 欧美国产日本免费不卡| 欧美色婷婷综合狠狠爱| 亚洲欧美日韩色图七区| 草草视频福利在线观看| 国产一区二区三区草莓av| 亚洲国产成人久久99精品| 欧美日韩亚洲国产综合网| 在线观看免费午夜福利| 国产成人精品午夜福利av免费 | 欧美一本在线免费观看|