OneKey Keyboard を Digistump で作る

目次
10年ほど前にはじめて Kickstarter でファンドしたDigiSpark
とにかく小さいArduinoマイコン。 メモリは8K(プログラムは6K程度)なので、一発芸的な用途に向いている。
ということで、キー1個のキーボードを作ってみる。


3Dデータ
UI
通常押しで、 SPACE
長押しで、 RETURN
配線
PULL UP 抵抗が内蔵されているので、簡単。
- P0 ... キースイッチの
+ - GND ... キースイッチの
-

上の配線を、3Dプリントしたエンクロージャーで包む。

プログラム
one_key.cpp · Gistcpp
#include <Arduino.h>
#include <DigiKeyboard.h>
#include <DigiUSB.h>
#define SWITCH (0)
#define LED (1)
int _current_sw = 0;
int _changed_time = -1;
void setup()
{
pinMode(SWITCH, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop()
{
int sw;
sw = digitalRead(SWITCH);
int spent_time = millis() - _changed_time;
if (_current_sw != sw)
{
//
// change push status
//
if (sw)
{
// release button
digitalWrite(LED, LOW);
// handshake to PC
DigiKeyboard.sendKeyStroke(0);
if (_changed_time != -1)
{
if (spent_time > 500) // msec
{
// long push
DigiKeyboard.sendKeyStroke(KEY_RETURN);
}
else
{
// short push
DigiKeyboard.sendKeyStroke(KEY_SPACE);
}
_changed_time = -1;
}
}
else
{
// push button
digitalWrite(LED, HIGH);
// save push button time
_changed_time = millis();
}
_current_sw = sw;
}
}demo
痛恨!せっかくハンダ付けしたのに、Digistumpの故障?でプログラムが書き込めなくなってしまった。
デバッグ用の機器ではできるので、よしとする。。
かわいいは正義。


