Digispark:自制USB宏键盘

@yeziruo  July 30, 2020

缘由

在上一篇文章中,我使用了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。

IMG114153.png

从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);
}

成品

IMG103157.jpg


添加新评论