當前位置:首頁 > 科技 > 正文

Arduino學習筆記A11

鍵盤作為經典的輸入設備,使用在很多互動中都有特别的優勢,比如我們可以通過鍵盤直接給flash傳遞按鍵事件。而無需通過串口之類的特殊接口,雖然我們可以拆一個傳統的鍵盤,然後将裡面的按鍵引出來,但是這樣有一個缺點,就是鍵值不能動态改變并且不能一次多鍵。使用模拟鍵盤的話,我們就可以随意在程序設置按鍵的時間和鍵值。比如本文的例子就是按下一個按鍵,模拟鍵盤就在電腦輸入“”。

硬件部分:

材料清單:

x1

68Ω電阻 x2 (沒有68Ω的話,用50~100Ω電阻也行)

2.2kΩ電阻 x1 (沒有2.2kΩ的話,用1.5k~2.2k電阻也行)

USB連接線(一端是USB口,另一端是電線) x1

3.6v 穩壓管(建議選用功耗0.25~0.5w的)x2

Arduino學習筆記A11

Arduino學習筆記A11

電路原理圖:

電路圖解說:

1、兩個68Ω的電阻起到限流和保護作用,防止在意外情況下損壞計算機的USB端口或單片機的端口。

2、2.2kΩ電阻是上拉電阻,用于分辨總線狀态。如果上拉電阻接于D+和+5v端則是高速USB設備,接于D-與+5v端,則是低速設備。此處鍵盤傳輸速率不高,接到D-作為低速設備即可。

3、D+和D-上的3.6V穩壓二極管D1和D2起到限制數據線上的電平的作用。因為在USB規範中規定數據線D+和D-上的電平範圍是3.0V至3.6V,而AVR單片機的輸出電平是Vcc。如果單片機的Vcc是5V,在沒有D1和D2的情況下将造成電平不匹配,會造成在很多計算機中無法正确識别出USB設備。如果用戶系統的Vcc在3.0V至3.6V之間,就可以省略這兩個穩壓二極管。從這裡也可以看出用戶系統的Vcc必須高于3V。

4、由于低速所需要的是1.5MHz時鐘,而單片機每8條指令就能精确完成一個數據位的采集。所以最小單片機時鐘頻率是12MHz。并且可以使用的時鐘頻率有12MHz、12.8MHz、15MHz、16MHz、16.5MHz、20MHz,其他的不支持。所以如果使用最小系統制作此模拟鍵盤的話8MHz的話,不能用。

————————

軟件部分:

支持庫文件:

-模拟電腦鍵盤(基于AVR-USB的USB-HID設備)">.zip(112.45KB, 下載次數: 110)

文件下載後解壓到編譯器的文件夾下面。

注意:

1、庫中,.h裡面可以更改USB接線的引腳定義,下面給出一個大概解釋(下面的PORTD是指AVR單片機的PORTD,要查詢原理圖才能得到是的哪個引腳):

#NAME D

USB輸入輸出引腳使用AVR單片機的PORTD,如果改成B就是使用PORTB

#_BIT 4

USB的D-接PORTD的第四位PD4,對應 D4

#BIT2

USB的D+接PORTD的第二位PD2,對應 D2

# D

USB上拉引腳使用AVR單片機的PORTD,如果改成B就是使用PORTB

#_BIT5

USB的上拉電阻接PORTD的第五位PD5,對應

2、在庫的.h裡面,有關于模拟鍵值的表

# KEY_A 4

# KEY_B 5

# KEY_C 6

# KEY_D 7

# KEY_E 8

等。但不齊全。經過測試,其實這個鍵盤基本可以模拟幾乎所有鍵值(Power,Sleep,Pause似乎不能)。

比如方向鍵右左下上分别對應79,80,81,82數字。即寫成

.(79);

.(81);

等。由于整理比較麻煩,大家可以自己下載個軟件測試不同數字下面的鍵值。

程序示例:

下面的例子演示了用虛拟鍵盤的應用例子。打開記事本,然後将的D12引腳和GND連起來,就會打印字樣。 代碼複制打印

# ".h"int = 1;//按鍵接在D1引腳,也可以改成任何引腳void setup(){ &= !(1

你可能想看:

有話要說...

取消
掃碼支持 支付碼