Digispark:自制USB宏键盘
缘由
在上一篇文章中,我使用了Python来控制我的键盘,但我的OBS好像有时有反应,有时没反应,所以从抽屉中找到了5年前买的Digispark ,用它来做一个硬键盘。
不得不说幸好当初买了两块,有一块被我改错熔丝锁住了。
Arduino环境部署
在文件>首选项>附加开发板管理器网址
添加如下:
http://digistump.com/package_digistump_index.json
在工具>开发板>开发板管理器
中找到Digispark
后安装即可。
原理图
- 由于Digispark只有6个IO,且有2个IO用作USB通信,所以最后只剩下4个可用IO(如果你没有改过熔丝位,那就是3个,P5不可用)。
- 为了塞下5个按钮,使用了ADC(P5/A0)来检测按键按下。
- 该板P1接板载红色LED。
从KEY1到KEY5的ADC值为(VCC=5v):0|509|520|530|540。
代码
#include "DigiKeyboard.h"
void setup() {
pinMode(1,OUTPUT);
}
//void button(int key_a,int key_b){}
void loop() {
int AnalogValue = analogRead(A0);
if(AnalogValue == 0){
digitalWrite(1,HIGH);
DigiKeyboard.sendKeyStroke(KEY_F1,MOD_CONTROL_RIGHT);
delay(200);
}
if(508 <= AnalogValue && AnalogValue <= 512){
digitalWrite(1,HIGH);
DigiKeyboard.sendKeyStroke(KEY_F2,MOD_CONTROL_RIGHT);
delay(200);
}
if(518 <= AnalogValue && AnalogValue <= 522){
digitalWrite(1,HIGH);
DigiKeyboard.sendKeyStroke(KEY_F3,MOD_CONTROL_RIGHT);
delay(200);
}
if(528 <= AnalogValue && AnalogValue <= 532){
digitalWrite(1,HIGH);
DigiKeyboard.sendKeyStroke(KEY_F4,MOD_CONTROL_RIGHT);
delay(200);
}
if(538 <= AnalogValue && AnalogValue <= 542){
digitalWrite(1,HIGH);
DigiKeyboard.sendKeyStroke(KEY_F5,MOD_CONTROL_RIGHT);
delay(200);
}
digitalWrite(1,LOW);
DigiKeyboard.delay(200);
}