はじめに
メカニカルキーを簡単にArduinoなどで扱えるように
ピンソケットをつけてみました。
Arduinoなどを使ったキーボード作成の試作などに便利かもしれません。
ストラップにもできるよう紐も一緒に入れました。
正方形に近くなるように設計したので、結構かわいい感じがしますがどうですか?
製品仕様
・ピンソケット(2P)
・メカニカルキー
・M2ネジ穴
回路図
Lチカに使ってみた
— Xian DIY (@sabasabasabaniu) June 17, 2023
MicroPythoで制御してみました。Raspberry pi picoでも同じことが出来ます。ちなみに貼り付けたツイッターの動画に登場するボードは私が作ったRaspberr Pi Picoの互換ボードです。スイッチサイエンスでも販売しているので興味があればぜひ。
このスイッチは回路的にはチャタリング対策をしていないので、ソフトで対策する必要があります。 MicroPythonではピンの宣言時にPin.PULL_DOWNでOKです。
from machine import Pin import time button = Pin(14,Pin.IN,Pin.PULL_DOWN) LED = Pin(13,Pin.OUT) while True: if button.value(): print("ON") LED.value(1) else: print("OFF") LED.value(0) time.sleep(0.1)
Arduinoを使う場合はこうなります。
— Xian DIY (@sabasabasabaniu) June 17, 2023
int pin = 10; int led = 11; void setup() { pinMode(pin,INPUT_PULLUP); pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { int val = digitalRead(pin); Serial.println(val); if(val == 0) { digitalWrite(led,LOW); }else { digitalWrite(led,HIGH); } delay(100); }
制作過程の動画
動画でスタックチャンの表情をキースイッチで操作していますが、サンプルコードを下に載せときます。
#include <M5Unified.h> #include <Avatar.h> #include <faces/DogFace.h> using namespace m5avatar; Avatar avatar; const Expression expressions[] = { Expression::Angry, Expression::Sleepy, Expression::Happy, Expression::Sad, Expression::Doubt, Expression::Neutral }; int val=0; void setup() { M5.begin(); M5.Lcd.setBrightness(30); M5.Lcd.clear(); avatar.init(); pinMode(26,INPUT_PULLDOWN); } void loop(){ val = digitalRead(26); if (val == 1) { avatar.setExpression(expressions[2]); delay(1000); } else { avatar.setExpression(expressions[0]); delay(1000); } }