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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10169|回復(fù): 0
收起左側(cè)

介紹一種特別的Arduino Uno模擬鼠標(biāo)的方法

[復(fù)制鏈接]
ID:328014 發(fā)表于 2018-9-26 04:22 | 顯示全部樓層 |閱讀模式
Arduino模擬鼠標(biāo)目前有三種方法(出自Arduin0中文社區(qū)):
1.  外部加電阻 USB母頭等元件,然后燒錄模擬程序,用 328P作為處理器。這種方法的缺點(diǎn)是:原件多,不容易調(diào)試,占用板載資源多,做出來之后基本上不能完成什么功能了(因?yàn)閁sb低速設(shè)備傳輸要求 1.5Mb/s,而328P最高只有16MHz),有興趣的朋友可以看一下之前我做的一個(gè)鎖屏的裝置【參考1】;

2.直接使用Leonardo 這樣主控是ATmega32u4【參考2】  的板子。這種方法的好處是:Arduino 原生庫支持,資料比較多,調(diào)試方便。個(gè)人推薦初學(xué)者如果有鼠標(biāo)鍵盤的需要可以玩這個(gè);

3.原版的Arduino Uno 上面使用的串口芯片是 16u2,可以給這個(gè)芯片刷寫上一個(gè)特殊的Firmware,它和PC端用USB鼠標(biāo)或者鍵盤通訊,然后和 328P 使用串口通訊。
本文介紹的就是第三種方法。

在玩第三種方法的時(shí)候,你需要特別準(zhǔn)備一個(gè)燒寫器。我用的是 USBTINY 這款。

本次實(shí)驗(yàn)的目標(biāo)是將uno模擬成鼠標(biāo)。參考的資料來自下面的頁面:
hunt點(diǎn)net點(diǎn)nz/users/darran/weblog/cca39/Arduino_UNO_Mouse_HID.html
我刷寫的工具是 AvrDudess 2.4,用法很簡單,接線之后(建議選購下載器的時(shí)候直接選帶完整線的,否則每次接線也是很麻煩的事情),按下 Detect按鈕,軟件需要檢查到正確芯片的類型,比如,我的轉(zhuǎn)接芯片是 16u2。如果無法偵測,那么請檢查連線。如果折騰了很久都不行,那么請聯(lián)系賣家所要驅(qū)動和刷寫工具。剛開始的時(shí)候我就在這里折騰了很長時(shí)間。


這里是燒寫Uno USB轉(zhuǎn)串口芯片的位置

因?yàn)榇谛酒凰⒌袅,所以接下來也必須使用刷寫器寫入編譯好的Arduino 程序。

輸入程序,確定編譯無誤

  1. /* Arduino USB Mouse HID demo */

  2. /* Author: Darran Hunt
  3. * Release into the public domain.
  4. */

  5. struct {
  6.     uint8_t buttons;
  7.     int8_t x;
  8.     int8_t y;
  9.     int8_t wheel;        /* Not yet implemented */
  10. } mouseReport;

  11. uint8_t nullReport[4] = { 0, 0, 0, 0 };

  12. void setup();
  13. void loop();

  14. void setup()
  15. {
  16.     Serial.begin(9600);
  17.     delay(200);
  18. }

  19. /* Move the mouse in a clockwise square every 5 seconds */
  20. void loop()
  21. {
  22.     int ind;
  23.     delay(5000);

  24.     mouseReport.buttons = 0;
  25.     mouseReport.x = 0;
  26.     mouseReport.y = 0;
  27.     mouseReport.wheel = 0;

  28.     mouseReport.x = -2;
  29.     for (ind=0; ind<20; ind++) {
  30.         Serial.write((uint8_t *)&mouseReport, 4);
  31.         Serial.write((uint8_t *)&nullReport, 4);
  32.     }

  33.     mouseReport.x = 0;
  34.     mouseReport.y = -2;
  35.     for (ind=0; ind<20; ind++) {
  36.         Serial.write((uint8_t *)&mouseReport, 4);
  37.         Serial.write((uint8_t *)&nullReport, 4);
  38.     }

  39.     mouseReport.x = 2;
  40.     mouseReport.y = 0;
  41.     for (ind=0; ind<20; ind++) {
  42.         Serial.write((uint8_t *)&mouseReport, 4);
  43.         Serial.write((uint8_t *)&nullReport, 4);
  44.     }

  45.     mouseReport.x = 0;
  46.     mouseReport.y = 2;
  47.     for (ind=0; ind<20; ind++) {
  48.         Serial.write((uint8_t *)&mouseReport, 4);
  49.         Serial.write((uint8_t *)&nullReport, 4);
  50.     }
  51. }
復(fù)制代碼
用 IDE 上傳內(nèi)容,需要一些設(shè)置,指定刷寫工具


然后使用 File->Upload Using Programmer 來進(jìn)行上傳

上傳成功:

成功之后,用Arduino Usb口連接電腦,你的鼠標(biāo)每隔一段會自動旋轉(zhuǎn)一圈,同時(shí)在設(shè)備管理器中會出現(xiàn)一個(gè)鼠標(biāo)設(shè)備:

這個(gè)和16u2 Firmware source code(Descriptors.c)中定義是相同的

        .VendorID               = 0x03EB,
        .ProductID              = 0x2041,
        .ReleaseNumber          = 0x0000

從這里出發(fā),可以讓 Uno 玩出很多新花樣,后面我會慢慢介紹。

參考:
1.  www點(diǎn)lab-z點(diǎn)com/20140101/ 用 Arduino 打造一個(gè)自動鎖屏裝置
2.  www點(diǎn)arduino點(diǎn)cn/thread-1205-1-1.html Arduino Leonardo 中文介紹




















回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品免费 | 亚洲成av片人久久久 | 成人久久一区 | 一级一级毛片免费看 | 亚洲精色| 欧美日韩中文字幕 | 成人午夜视频在线观看 | 日本精品久久久一区二区三区 | 东京av男人的天堂 | 亚洲一区av | 一区二区成人 | 亚洲日本国产 | 天天爽网站 | 九色 在线 | 国产成人精品综合 | 国产欧美一区二区三区日本久久久 | 黄a网| 男女性毛片 | 中文字幕国产精品 | 99reav| av影音资源 | 亚洲精品一区在线 | 欧美日高清 | 成人免费一级 | 日韩欧美综合 | 国产精品久久久久久久午夜片 | 久久久久久中文字幕 | 久久久精品一区二区三区 | 国产欧美精品一区二区色综合朱莉 | 黄色一级大片视频 | 精品一区二区三区日本 | 97色伦网 | 91看片网| 精品不卡 | 麻豆精品一区二区三区在线观看 | 亚洲自拍偷拍欧美 | 爱综合 | 天天综合久久 | 正在播放国产精品 | 亚洲精品视频在线观看免费 | 亚州无限乱码 |