標題: 用Arduino自制鼠標(游戲控制桿) [打印本頁]
作者: 51黑ff 時間: 2016-9-1 17:58
標題: 用Arduino自制鼠標(游戲控制桿)
1_20121211091254_bkVPX0lNR19pbWFnZTAwMQ==.jpg (295.82 KB, 下載次數: 151)
下載附件
2016-9-1 17:56 上傳
上個月,又有一個鼠標在我手底下陣亡了,作為一個DIY達人,我從盒子里拿出好幾個不太好用的鼠標,準備自己攢一個。突然發現手邊有一塊基于Arduino Leonardo的小型控制板——DFRobot生產的Dreamer Nano,我早就看資料知道Arduino Leonardo能當鼠標或鍵盤用,一直也沒機會試試,正好就用這塊控制板自己制作一個鼠標吧!
1_20121211091225_bkVPX0lNR19pbWFnZTAwNw==.jpg (343.45 KB, 下載次數: 138)
下載附件
2016-9-1 17:56 上傳
圖1 制作所需的材料
q 1、Dreamer Nano或Arduino Leonardo 1個
q 2、面包板 1塊
q 3、按鍵 5個
q 4、面包板U型線 1盒
制作鼠標要用的元件如圖1所示,準備好材料后,就可以搭建硬件。Dreamer Nano(如圖2所示)的核心是Arduino Leonardo,I/O接口采用Nano的形式,方便與面包板配合使用,USB接口采用帶直插定位腳的Mirco USB插座。
1_20121211091219_bkVPX0lNR19pbWFnZTAwOQ==.jpg (217.93 KB, 下載次數: 131)
下載附件
2016-9-1 17:56 上傳
圖2 Dreamer Nano
制作步驟
1.將Dreamer Nano插在面包板上,這里它的位置比較偏左,是因為之后我們會在其右側添加一個按鍵。
1_20121211091247_bkVPX0lNR19pbWFnZTAxMQ==.jpg (355.04 KB, 下載次數: 136)
下載附件
2016-9-1 17:56 上傳
2.添加5個按鍵,擺成上下左右的樣子,分別控制鼠標的上下左右移動,另外在控制板的右側添加一個按鍵,作為鼠標左鍵,用來實現鼠標點擊功能。
1_20121211101206_bkVPX0lNR19pbWFnZTAxMw==.jpg (316.77 KB, 下載次數: 168)
下載附件
2016-9-1 17:56 上傳
3.我使用Fritzing軟件繪制了一個連接效果圖,看起來按鍵的連接很雜亂,其實這是為了遷就U型面包線的長度才這么做的,反正改程序是一件比較容易的事。大家也可以將這些按鍵連接到其他引腳。
1_20121211101201_bkVPX0lNR19pbWFnZTAxNg==.jpg (406.49 KB, 下載次數: 136)
下載附件
2016-9-1 17:56 上傳
1_20121211101205_bkVPX0lNR19pbWFnZTAxOA==.jpg (97.31 KB, 下載次數: 136)
下載附件
2016-9-1 17:56 上傳
4.按照效果圖,用U型面包線將實物連接起來。這樣我們的硬件就搭建完了,接下來看看程序部分。
1_20121211101228_bkVPX0lNR19pbWFnZTAyNA==.jpg (331.67 KB, 下載次數: 138)
下載附件
2016-9-1 17:56 上傳
程序設計
1.打開Arduino開發環境,首先要將Tools菜單下的Board選項改為Arduino Leonardo。
1_20121211101247_bkVPX0lNR19pbWFnZTAyNg==.jpg (383.98 KB, 下載次數: 138)
下載附件
2016-9-1 17:56 上傳
2.打開開發環境中鼠標的例子,在File→Examples中專門有一個USB(Leonardo)的選項,在這里面找到Mouse→ButtonMouseControl。這是一個用按鍵當作鼠標的例子。
1_20121211101207_bkVPX0lNR19pbWFnZTAyOA==.jpg (252.96 KB, 下載次數: 148)
下載附件
2016-9-1 17:56 上傳
3.修改程序中的引腳變量。在原代碼中,使用的是引腳2、3、4、5、6作為5個按鍵的輸入。
// set pin numbers for the five buttons:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
這里因為本人在硬件搭建上偷懶的原因,所以使用的引腳有所變化,可根據原理圖來修改這段代碼,其中引腳4對應按鍵“上”,引腳6對應按鍵“下”,引腳7對應按鍵“左”,引腳9對應按鍵“右”,引腳3對應鼠標左鍵。
const int upButton = 4;
const int downButton = 6;
const int leftButton = 7;
const int rightButton = 9;
const int mouseButton = 3;
4.修改setup()函數。當Arduino的控制板引腳作為輸入時,通常要小心電壓、電流的極限值,過大的電壓、電流會造成控制板的損壞。為避免這種情況,一般會在引腳的電路上加一個上拉電阻,這里要加就加在按鍵和Arduino引腳的連接線上,電阻值一般為10kΩ。但其實Arduino控制板內引腳是具有內部上拉功能的,內部上拉相當于是在芯片內集成了一個電阻接+5V電源,不過這需要在程序中進行設定。假設要設定x引腳的模式為輸入,且使用內部上拉,則代碼為:
pinMode( x ,INPUT);
digitalWrite( upButton , HIGH);
由原理圖能夠看出,我們使用的按鍵均沒有添加上拉電路,所以需要使用的這5個引腳要使能內部上拉功能。將這段代碼添加到Mouse.begin()函數之前。
void setup() {
// initialize the buttons' inputs:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
digitalWrite(upButton, HIGH);
digitalWrite(downButton, HIGH);
digitalWrite(leftButton, HIGH);
digitalWrite(rightButton, HIGH);
digitalWrite(mouseButton, HIGH);
// initialize mouse control:
Mouse.begin();
}
5.完成最后的調試。將修改完之后的代碼下載到Arduino中,使用一下,我們發現鼠標左鍵總是處于按下的狀態,通過閱讀代碼發現,這是因為程序中將引腳為高電平認定為鼠標按下。
if (clickState == HIGH)
{
......
}
而我們的硬件上,鼠標按下時引腳電平為高,未按下時引腳電平為低。大家可以直接使用“Ctrl+F”搜索“clickState == HIGH”這段字符,將其中的HIGH改為LOW。再下載一遍程序,我們的鼠標就完成了,和原來的鼠標合個影吧。
1_20121211101246_bkVPX0lNR19pbWFnZTAzMA==.jpg (267.5 KB, 下載次數: 152)
下載附件
2016-9-1 17:56 上傳
細心的讀者可能會發現,我們這個鼠標只能完成左鍵的功能,那么右鍵應該如何實現呢?請大家注意示例代碼中關于MOUSE_LEFT的部分(可以直接使用“Ctrl+F”搜索),比如Mouse.press(MOUSE_LEFT)實現的功能就是發送一個鼠標左鍵按下的信息。我們將MOUSE_LEFT全部換成MOUSE_RIGHT試試,就會發現原來的鼠標左鍵變成了鼠標右鍵,所以只需要在硬件上再添加一個按鈕,并在代碼中使用MOUSE_RIGHT這個定義,就可以實現鼠標右鍵的功能了。
另外,在示例程序中可以看到還有JoystickMouseControl、Keyboard以及KeyboardAndMouseControl等例子,大家感興趣的話可以自己試試,比如找一個搖桿來制作一個搖桿式的鼠標,或者用Arduino制作一個游戲專用手柄等等。下圖就是本人利用安卓平板電腦、Arduino、按鍵以及面包板制作的一個老式任天堂游戲機,現在正在玩的游戲是經典的《魂斗羅》。更多的樂趣期待大家去發現。
1_20121211101207_bkVPX0lNR19pbWFnZTAzMg==.jpg (414.69 KB, 下載次數: 156)
下載附件
2016-9-1 17:56 上傳
作者: docget 時間: 2016-9-7 02:17
如何實現滾輪和位移呢
作者: a50218266 時間: 2016-9-7 09:32
能按出來上上下下左右左右BA嗎?
作者: 人生路漫步 時間: 2016-11-6 22:41
程序在哪啊
作者: zxy2266 時間: 2017-6-13 21:47
魂斗羅是安卓下的嗎?這個按鍵壽命不咋的,你這個打法一會就掛了
作者: jiajuntao 時間: 2018-9-25 22:27
不錯,感覺很新奇,科技就在手中。
作者: vvv64 時間: 2019-9-25 10:10
支持樓主再做個真正意義上的搖桿
作者: 3310mad2 時間: 2020-9-10 13:32
可以實現滾輪和位移嗎?怎么實現呢
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
国产一区二区三区网站
|
久久久日韩精品一区二区三区
|
成人精品国产
|
久久精品国产亚洲
|
97人人草
|
中文字字幕一区二区三区四区五区
|
亚洲精品乱码8久久久久久日本
|
亚洲视频免费
|
欧美一级www片免费观看
|
国产精品福利一区二区三区
|
www.夜夜骑
|
亚洲欧美视频一区
|
国产精品一卡二卡三卡
|
亚洲一在线|
日韩成人精品视频
|
日本在线视频一区二区
|
久久综合成人精品亚洲另类欧美
|
玖玖综合网|
欧美日韩中文字幕在线播放
|
国产精品视频久久久久久
|
精品中文在线
|
a久久
|
色综合天天天天做夜夜夜夜做
|
亚洲一区二区在线播放
|
国产乱肥老妇国产一区二
|
日韩在线免费
|
给我免费的视频在线观看
|
国产在线播放av
|
性色综合
|
99视频网站
|
成人在线精品视频
|
免费 视频 1级
|
亚洲天堂成人在线视频
|
成人做爰www免费看视频网站
|
亚洲精品一区二
|
91精品国产综合久久婷婷香蕉
|
日日夜夜免费精品
|
色在线看
|
99re国产|
日韩中文一区二区三区
|
欧洲成人|