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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10044|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Arduino學(xué)習(xí)12-自制Makey模擬觸摸鍵盤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114115 發(fā)表于 2016-4-18 03:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
注意:此貼方法不夠現(xiàn)成的穩(wěn)定,已經(jīng)過時,Arduino Micro/Leonardo已經(jīng)可以便宜穩(wěn)定的實現(xiàn)替代功能了,而且不用折騰。建議使用Arduino Micro/Leonardo+自帶的keyboard功能做,方便簡單。


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

材料清單:
  ArduinoUNO、Duemilanove、NANO均可)
  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 穩(wěn)壓管(3.3v~3.6v穩(wěn)壓管。建議選用功耗0.25~0.5w的)
  2
  單芯屏蔽電線(6條,每條1~2米)
  6
  鱷魚夾
  6
  萬用板(洞洞板)
  1


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

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


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

用數(shù)據(jù)線(注意是Arduino的數(shù)據(jù)線,不是上面焊的鍵盤線)將下面的程序?qū)懭階rduino中。



  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端設(shè)置為輸入
  9.         //digitalWrite(i, HIGH);                //并且上拉
  10.       }
  11.       TIMSK0 &= !(1 << TOIE0);
  12.     }
  13.      
  14.     void loop()
  15.     {
  16.       UsbKeyboard.update();
  17.       //讀取所有引腳電壓值,并且由于上拉電阻原因,
  18.       //默認所有引腳為最高電平1023,通過觸摸拉低引腳電平。
  19.       //所以數(shù)值由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.       //按照各種可能觸發(fā)鍵盤事件
  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.     }
復(fù)制代碼

拔掉Arduino數(shù)據(jù)線,將鍵盤線插到電腦USB口,即出現(xiàn)新硬件“USB輸入設(shè)備”,一般XP和win7都免驅(qū)動自動識別。

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

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

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

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

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一级片 | av中文字幕在线播放 | 欧美 日韩 国产 成人 在线 91 | 免费特级黄毛片 | 一区二区日韩 | 美女视频黄的 | 亚洲国产精品va在线看黑人 | 久久久无码精品亚洲日韩按摩 | 欧美8一10sex性hd | a级网站| 中文字幕在线视频一区二区三区 | 中文字幕欧美一区 | 女女百合av大片一区二区三区九县 | 久久最新精品视频 | 999精品网 | 武道仙尊动漫在线观看 | 热re99久久精品国产99热 | 欧美一区二区三区四区在线 | 国产精品视频久久久久 | 久久久久久久综合色一本 | 欧美午夜视频 | 久久久www成人免费无遮挡大片 | 日韩精品一区二区三区视频播放 | 伊人狠狠 | 91精品国产91久久久久久吃药 | 成人免费小视频 | 久久久成人动漫 | 在线视频 中文字幕 | a级网站 | 欧美精品片| 九色 在线 | 国产精品久久久久久妇女6080 | 在线欧美小视频 | 午夜小视频在线观看 | 在线观看国产视频 | 日韩精品久久久久 | 日韩超碰在线 | 精品九九九 | 日本精品视频在线 | 欧美国产免费 | 免费一区 |