Digispark에서 과일을 엔터키로 만들어 보았습니다.

빅 엔터키라는 낭비에 큰 엔터키가 있습니다만, 어떤 것이라도 엔터키가 되면 재미있지 않을까 생각했기 때문에, 과일이나 야채 등 무엇이든 엔터키가 되는 HID 디바이스를 만들어 보았습니다.

환경



Arduino IDE 1.8.13
Digispark 호환 보드

회로도




0번 핀이 송신 핀이고 2번 핀이 수신 핀입니다. 0번 핀과 2번 핀 사이에는 1MΩ의 저항이 들어 있습니다. 2번 핀과 직렬로 0.1μF의 콘덴서를 연결하고 과일을 연결합니다.

스케치



enterkey.ino
#include <DigiKeyboard.h>

#define REPEAT_TIME 25
#define FIRST_REPEAT_TIME 500
#define KEYUP_THRESHOLD 50
#define KEYDOWN_THRESHOLD 75
#define OUT_PIN 0
#define IN_PIN 2

unsigned long timer = 0;
int keytimes = 0;

void setup() {
  pinMode(OUT_PIN, OUTPUT);
  pinMode(IN_PIN, INPUT);
}

int get_touch() {
  int t = 0;
  int i;
  for(i = 0; i < 10; i++){
    digitalWrite(OUT_PIN, HIGH);
    while(digitalRead(IN_PIN) != HIGH) t++;
    digitalWrite(OUT_PIN, LOW);
    pinMode(IN_PIN, OUTPUT);
    digitalWrite(IN_PIN, LOW);
    DigiKeyboard.delay(1);
    pinMode(IN_PIN, INPUT);
  }
  return t;
}

void loop() {
  int touch = get_touch();
  if(touch > KEYDOWN_THRESHOLD && (timer == 0 || keytimes >= 2)){
    DigiKeyboard.sendKeyStroke(0x28);
    DigiKeyboard.delay(REPEAT_TIME);
    keytimes = min(keytimes + 1, 2);
    timer = millis();
  }else{
    if(touch <= KEYUP_THRESHOLD){
      timer = 0;
      keytimes = 0;
    }
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.delay(REPEAT_TIME);
  }
  if(millis() >= timer + FIRST_REPEAT_TIME){
    timer = 0;
  }
}

쓰기



Arduino 개발 환경을 설정하는 방법은이 기사를 참조하십시오.
[참고] Digispark (ATTiny85) Arduino 개발 환경에서 L 치카

설정이 끝나면 Arduino IDE에서ツール > ボード > Digispark (Default - 16.5mhz) 를 선택합니다.マイコンボードに書き込む를 클릭하십시오. USB를 꽂거나 꽂으면 쓸 수 있습니다.

데모



바나나에서 엔터키를 자작해 보았다. 바나나를 만지면 개행할 수 있다. 키 반복 기능 포함.使用マイコン:Digispark互換ボードスケッチ: htps // t. 코 / 5r86 DCTF #바나나 #엔터키 #키보드 #자작키보드 #HID #USB #전자공작 #가젯 #Digispark #Arduino 피 c. 라고 r. 이 m/bJZXKM0Gぅ — naoto64 ( @naoto64_2000) January 24, 2021

좋은 웹페이지 즐겨찾기