邓维安 发表于 2012-6-14 09:59:30

mega2560 USB第二季KEYBOARD HID

作者:邓帅哥——大人
不要崇拜哥,哥为人民服务,哥已不在社区,但社区的每一个角落都流传着哥的传说。
Now,镜头转入正题,mega2560 USB第二季KEYBOARD HID
首先,你必须有一片arduino主板,而且主板上必须有一片atmega8U2/atmega16U2/支持usb的芯片+mega主芯片(mega328,128,1280,2560.......),操作前请导入附件的USB库
step1:
将下列arduino代码通过arduion下载到arduino板子上,它的功能是,当你按键NumLock三次的时候,它会模拟按键输入一排信息,改变Keyboard.print内的操作即可以改变你想要的按键。/* Arduino USB Business Card
   1. Upload this program to Arduino
   2. Upgrade atmega8u2 with firmware/Arduino-keyboard-0.3.hex
   3. Re-plug Arduino to usb port, and pressed Num Lock button 3 times in 2 seconds
      Arduino will type your contact text information into the text editor
*/
#include <USBKeyboard.h>

const uint8_t KEYBOARD_LED = LED_NUMLOCK; // Num Lock LED
const int ledPin =13;                  
uint8_t lastState = 0, currentState = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
Keyboard.init();
}

// return true if KEYBOARD_LED (Num Lock button) is pressed
boolean buttonPressed()
{
uint8_t ledStatus;

ledStatus = Keyboard.readLedStatus();

// Arduino Led pin as an indicator   
// If Num Lock led is on, the led indicator will be on
if (ledStatus & KEYBOARD_LED) {
    digitalWrite(ledPin, HIGH);   
} else {
    digitalWrite(ledPin, LOW);
}      

lastState = currentState;
currentState = ledStatus & KEYBOARD_LED;

return (currentState != lastState);
}

void sendContactInfo()
{
Keyboard.print("dengshuaige");
Keyboard.sendKeyStroke(KEY_ENTER);
Keyboard.print("Email: [email protected]");
Keyboard.sendKeyStroke(KEY_ENTER);
Keyboard.print("dengshuaige.com");
Keyboard.sendKeyStroke(KEY_ENTER);
}

void loop()
{
int counter;

delay(100);

// Check whether KEYBOARD_LED is pressed 3 times in 2 seconds
if (buttonPressed()) {
    counter = 1;
    for (int i = 0; i < 20; i++) {
      delay(100);
      if (buttonPressed()) counter = counter + 1;      
      
      // Send my information to computer
      if (counter >= 3) {
      sendContactInfo();
      break;
      }
    }      
    counter = 0;                  // reset counter
}
}下载到mega2560后,板子还是不能工作的,请继续往下看,
step2:将Arduino-keyboard-0.3-mega2560.hex通过烧录器烧到mega8U2上面


哥用的是USBasp,淘宝15——20元一个。

OK,将mega8u2烧好之后,
连接arduino的USB线,你可以看见在键盘下方多了一个HID keyboard device(不需要安装任何驱动),哈哈,这时,你可以用你自已做的键盘了。


测试一下,新建一个文本,打开,光标输入到文本,按三次NumLock键,得到如下:



USB第三季预告(AVR篇)用mega8单独打造USB键盘...掌声~~~~

Randy 发表于 2012-6-14 10:01:15

你发的帖子很不错,现在正需要这些东西,谢谢,向你学习!

迷你强 发表于 2012-6-14 10:05:41

:funk:顺手将代码高亮了。。

开心就好 发表于 2012-6-14 10:29:48

不错呀:lol

Randy 发表于 2012-6-14 10:51:18

很喜欢ADK的说,可以和andorid一起做出很多有趣的事情来,楼主这方面懂的比较多,希望您能继续做些东西出来供大家一起学习,谢谢!

宁远 发表于 2012-7-10 16:48:50

高人呀 啥时候能模拟 鼠标!

ninjiafan 发表于 2012-10-22 08:35:00

这个必须支持下...高手...

seaoftheworld 发表于 2013-7-17 23:20:43

终于看到具体使用代码,了解了。我讨厌以前看到的铺天盖地的翻番介绍,让我不知arduino和MCU套件有啥区别,这种个人的、具体的好!

iPlay 发表于 2014-7-23 14:11:55

求模拟鼠标的

cinova 发表于 2014-8-27 16:37:44

拿来学习一下

GW.wangshuo 发表于 2014-11-29 13:42:44

楼主,按照你的做法尝试了。的确可以实现,感激不尽。 但是在下载固件的时候没有保存原来的固件,无法还原了。。请求楼主把原固件贴出来。。小白:'(:'(:'(在网上没找到。。

邓维安 发表于 2014-12-18 15:07:08

GW.wangshuo 发表于 2014-11-29 13:42 static/image/common/back.gif
楼主,按照你的做法尝试了。的确可以实现,感激不尽。 但是在下载固件的时候没有保存原来的固件,无法还原了 ...

arduino编译器文件夹下面有原固件

zzzazzz 发表于 2015-6-15 22:00:27

当你按键NumLock三次的时候,它会模拟按键输入一排信息

请教这个NumLock是指开发板上的NumLock还是物理键盘的NumLock?

邓维安 发表于 2015-6-19 08:44:51

zzzazzz 发表于 2015-6-15 22:00 static/image/common/back.gif
当你按键NumLock三次的时候,它会模拟按键输入一排信息

请教这个NumLock是指开发板上的NumLock还是物理键 ...

这个例子是物理键盘的NumLock,但实际使用你可以用开发板的IO模拟物理键盘,看代码

nmh 发表于 2017-6-10 12:34:12

给的库里有好多个文件夹,具体是哪个呢?另外为啥我导入库的时候#include 了好几个进去
页: [1] 2
查看完整版本: mega2560 USB第二季KEYBOARD HID