久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10108|回復: 0
打印 上一主題 下一主題
收起左側

Arduino學習12-自制Makey模擬觸摸鍵盤

[復制鏈接]
跳轉到指定樓層
樓主
注意:此貼方法不夠現成的穩定,已經過時,Arduino Micro/Leonardo已經可以便宜穩定的實現替代功能了,而且不用折騰。建議使用Arduino Micro/Leonardo+自帶的keyboard功能做,方便簡單。


相信很多人看過最近一個Makey makey模擬觸控鍵盤視頻(http://www.56.com/u45/v_NjgzMzc0MDI.html)。視頻里電路板可以接上任何導電體,通過觸摸導電體去給電腦鍵盤事件。來玩各種不同的游戲或者效果。
其中的原理就是通過單片機模擬一個鍵盤,引出幾個鍵,并且使用觸摸形式代替開關。現在我們使用一塊arduino加上幾個普通元件,也能將這個電路實現出來了。
本文先填鴨式介紹如何制作模擬觸控鍵盤,如果你只是想做一個成品玩的話,可以只看前面部分而不用看原理分析。如果你想知道它的工作原理的話,可以一直看下去。

材料清單:
  ArduinoUNODuemilanoveNANO均可)
  1
  68Ω電阻(沒有68Ω的話,用50~100Ω電阻也行)
  2
  1.5kΩ電阻(沒有2.2kΩ的話,用1.5k~2.2k電阻也行)
  1
  2.2MΩ電阻(1M~4.7M也行)
  6
  USB連接線(一端是USB口另一端是電線,也可以用廢舊鍵盤鼠標拆下來的線)
  1
  3.6v 穩壓管(3.3v~3.6v穩壓管。建議選用功耗0.25~0.5w的)
  2
  單芯屏蔽電線(6條,每條1~2米)
  6
  鱷魚夾
  6
  萬用板(洞洞板)
  1


先不管原理,看看制作步驟:
準備好材料,這里為了減少體積,用了Arduino NANO,并且部分電阻實際用的時候是貼片封裝的。

按照下面的電路圖連接電路(PDF版本點擊這里: Arduino模擬觸控鍵盤.pdf(78.65 KB, 下載次數: 809))。


注意輸入線要用屏蔽線,鱷魚夾端將屏蔽線的芯線接上,屏蔽線懸空;電路板端將芯線接到A0~A5引腳。所有屏蔽線集成一束接到+5v。

用數據線(注意是Arduino的數據線,不是上面焊的鍵盤線)將下面的程序寫入Arduino中。



  1.     #include "UsbKeyboard.h"
  2.     int InData1 = 0, InData2 = 0, InData3 = 0, InData4 = 0, InData5 = 0, InData0 = 0;  //觸摸輸入值暫存
  3.     int TouchSensitivity = 30; //觸摸靈敏度。0~1023,越大越不靈敏
  4.     void setup()
  5.     {
  6.       for(int i = A0; i <= A5; i++)
  7.       {
  8.         pinMode(i, INPUT);                        //A0~A5端設置為輸入
  9.         //digitalWrite(i, HIGH);                //并且上拉
  10.       }
  11.       TIMSK0 &= !(1 << TOIE0);
  12.     }
  13.      
  14.     void loop()
  15.     {
  16.       UsbKeyboard.update();
  17.       //讀取所有引腳電壓值,并且由于上拉電阻原因,
  18.       //默認所有引腳為最高電平1023,通過觸摸拉低引腳電平。
  19.       //所以數值由1024-analogRead(A0);
  20.       InData0 = 1024 - analogRead(A0);               
  21.       InData1 = 1024 - analogRead(A1);
  22.       InData2 = 1024 - analogRead(A2);
  23.       InData3 = 1024 - analogRead(A3);
  24.       InData4 = 1024 - analogRead(A4);
  25.       InData5 = 1024 - analogRead(A5);
  26.       //按照各種可能觸發鍵盤事件
  27.       if(InData0 >= TouchSensitivity)
  28.       {
  29.         UsbKeyboard.sendKeyStroke(79); //right
  30.       }
  31.       if(InData1 >= TouchSensitivity)
  32.       {
  33.         UsbKeyboard.sendKeyStroke(80);  //left
  34.       }
  35.       if(InData2 >= TouchSensitivity)
  36.       {
  37.         UsbKeyboard.sendKeyStroke(81);  //down
  38.       }
  39.       if(InData3 >= TouchSensitivity)
  40.       {
  41.         UsbKeyboard.sendKeyStroke(82);  //up
  42.       }
  43.       if(InData4 >= TouchSensitivity)
  44.       {
  45.         UsbKeyboard.sendKeyStroke(KEY_SPACE);
  46.       }
  47.       if(InData5 >= TouchSensitivity)
  48.       {
  49.         UsbKeyboard.sendKeyStroke(KEY_ENTER);
  50.       }
  51.       delay(100);
  52.     }
復制代碼

拔掉Arduino數據線,將鍵盤線插到電腦USB口,即出現新硬件“USB輸入設備”,一般XP和win7都免驅動自動識別。

找一些含水分的物體(比如makey里面的香蕉,橡皮泥等),鱷魚夾夾住一頭,觸碰物體即可打字。

原理分析:
1、觸摸部分
* 此虛擬鍵盤使用觸摸作為輸入方法,所以可靠的觸摸響應非常必要。常見的觸摸開關有兩種:
        -  一種是雙觸點的觸摸開關,將觸摸端和地端引出,連接到兩塊觸摸電極上,人觸摸兩個極的時候,由于人體電阻的關系,兩觸摸電極之間有一定電流流過,通過檢測這個電流大小即可檢測出觸摸事件。Makey的虛擬鍵盤就是這種方法;
        -   另一種是單觸點的觸摸開關,人手只需要觸摸一個極板,用人體和大地來做回路,這種方法用戶體驗最好。但是如果直接將觸摸電路的地端接家里的地線,人觸摸感應輸入端的話,那觸摸就不能響應了。因為人體和大地并不是真實的導體,而是通過水分,以及導體間的電容等導電的,對于直流電來說,由于電壓只有5v,相應回路電阻很大。經過回路之后,電壓不足以實現觸摸功能,所以在這里我們借助高壓電做媒介,讓人體和大地有足夠電流形成可以響應的回路。原理圖如下圖,將Arduino的GND端通過一個高阻值電阻RH接到市電的火線,人觸摸A0端的時候,220v市電將通過高值電阻RH以及單片機傳到人手上,然后通過大地形成回路。由于220v電壓較高并且是交流電,通過高值的電阻以及人體、大地等導體之后仍然可以有足夠的電壓去給單片機響應。
*  由于觸摸部分對周圍的電磁干擾比較敏感,觸摸板與Arduino連接線必須使用屏蔽線。六根屏蔽線的芯線接A0~A5,屏蔽層接電源正極(+5v)
*  此處是使用了外置的2.2MΩ上拉電阻,常態時輸入端是高電壓,所以默認AD轉換數值是1023,通過觸摸GND和A0~A5,令輸入電壓降低,從而改變輸入的AD數值。當AD數值降低到一定程度(變量TouchSensitivity決定)的時候,就認為該觸摸板有事件響應。如果觸摸靈敏度不適合的話,可以調整變量TouchSensitivity的值來改變靈敏度。值越大靈敏度越低。

2、Arduino模擬鍵盤部分:
由于Arduino主芯片是一片AVR單片機,通過AVRUSB,我們可以將Arduino虛擬成一個鍵盤。詳細原理可以參考這篇文章:http://www.zg4o1577.cn/bbs/dpj-48558-1.html
文章詳細解釋了Arduino模擬鍵盤的原理和電路,此處就不再詳細解釋了。

我做好實物(A0~A5引線還沒引出):

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩www | 91久久北条麻妃一区二区三区 | 在线播放亚洲 | 91久久精品日日躁夜夜躁国产 | 中文字幕在线观看 | 午夜精品一区二区三区在线观看 | 亚洲视频免费在线 | 日韩伦理一区二区三区 | 免费看国产片在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 中国91av| 日日操夜夜操天天操 | 国产激情福利 | 婷婷桃色网 | 久久精品一 | 综合久 | 国产亚洲一级 | 国产精品福利网 | 91精品国产综合久久国产大片 | 日韩视频精品 | 午夜国产一区 | 国偷自产av一区二区三区 | 免费久久精品视频 | 亚洲午夜电影 | 日韩福利在线 | 毛片免费看| 国产精品美女在线观看 | av网站在线看 | 国产激情一区二区三区 | 欧美黄在线观看 | 国产在线中文字幕 | 色又黄又爽网站www久久 | 日韩av成人在线 | 欧美极品一区二区 | 殴美成人在线视频 | 理论片87福利理论电影 | 久久免费精品视频 | av网站在线播放 | 欧美久久精品一级黑人c片 91免费在线视频 | 成年视频在线观看 | 久久网国产 |