Digisparkでショートカットボタン[CTRL]+[ALT]+[DEL] [Arduino]
HIDデバイスにもなるDigisparkで[CTRL]+[ALT]+[DEL]のショートカットボタンを作りたかったのです。
どうしてかというと、Windowsのキオスクモードで、キーボードなしで、マウスやタッチパネルでの運用をしているとき、にログアウトのためだけにキーボードを接続したくないからです。
ネットを調べるとすでに作られている方もいます。
スケッチもあります。
GitHub - hidenorlyandroidRebootSwitch USB Android reboot SW
https://github.com/hidenorly/androidRebootSwitch
★そのまま作るでは面白くないので一工夫
スイッチをどこにつけるか。
Digisparkには大きめのレギュレータがついていますが、外部電源を使わないので不要。
まず、足を外し、つづいて本体を外します。
ハンダ吸い取り線でキレイにします。
このスペースにパターンを少しいじってをタクトスイッチを載せることにします。
ここで選択。
・Pull-Upしておき、スイッチでGNDに落とす。
・Pull-Downしておき、スイッチで5V印可する。
前者(Pull-Up)のメリット・デメリット
・マイコン内臓のINPUT_PULLUPが使える
・四つ足タクトスイッチの4点固定はできなさそう
・起動までの5秒待たないBootloaderが使えそう
(スケッチ書き込み時にスイッチを押しながら接続するという運用)
後者(Pull-Down)のメリット・デメリット
・マイコン内臓のINPUT_PULLUPが使えない
(ただ電源LEDを外せばLED用の電流制限抵抗(102:1kΩが付いていた)をPull-Down抵抗に流用できる)
・起動までの5秒待たないBootloaderが使えない
・四つ足タクトスイッチの4点固定ができる
起動までの5秒待たないBootloaderは魅力的ですが、少し勉強してからということで、後者の方法で作ってみました。
レギュレータを外し、リューターでパターンにT字の溝を掘る。
追加パーツは四つ足タクトスイッチと配線少々のみ、タクトスイッチは表面実装のものが手元になかったので足を曲げたり切断したりして調整。
熱収縮チューブにボタン部分用の穴をあけて収縮させて完成!
スケッチは以下の通り。
どうしてかというと、Windowsのキオスクモードで、キーボードなしで、マウスやタッチパネルでの運用をしているとき、にログアウトのためだけにキーボードを接続したくないからです。
ネットを調べるとすでに作られている方もいます。
スケッチもあります。
GitHub - hidenorlyandroidRebootSwitch USB Android reboot SW
https://github.com/hidenorly/androidRebootSwitch
★そのまま作るでは面白くないので一工夫
スイッチをどこにつけるか。
Digisparkには大きめのレギュレータがついていますが、外部電源を使わないので不要。
まず、足を外し、つづいて本体を外します。
ハンダ吸い取り線でキレイにします。
このスペースにパターンを少しいじってをタクトスイッチを載せることにします。
ここで選択。
・Pull-Upしておき、スイッチでGNDに落とす。
・Pull-Downしておき、スイッチで5V印可する。
前者(Pull-Up)のメリット・デメリット
・マイコン内臓のINPUT_PULLUPが使える
・四つ足タクトスイッチの4点固定はできなさそう
・起動までの5秒待たないBootloaderが使えそう
(スケッチ書き込み時にスイッチを押しながら接続するという運用)
後者(Pull-Down)のメリット・デメリット
・マイコン内臓のINPUT_PULLUPが使えない
(ただ電源LEDを外せばLED用の電流制限抵抗(102:1kΩが付いていた)をPull-Down抵抗に流用できる)
・起動までの5秒待たないBootloaderが使えない
・四つ足タクトスイッチの4点固定ができる
起動までの5秒待たないBootloaderは魅力的ですが、少し勉強してからということで、後者の方法で作ってみました。
レギュレータを外し、リューターでパターンにT字の溝を掘る。
追加パーツは四つ足タクトスイッチと配線少々のみ、タクトスイッチは表面実装のものが手元になかったので足を曲げたり切断したりして調整。
熱収縮チューブにボタン部分用の穴をあけて収縮させて完成!
スケッチは以下の通り。
// Enter [Ctrl] + [Alt] + [Del] keys with one button
// Digispark @ 16.5MHz, V-USB
#include "DigiKeyboard.h"
#define KEY_DELETE 76
void setup() {
pinMode( 0, INPUT ); // Tactile Switch (pull-down with 1kOhm(102) resister)
pinMode( 1, OUTPUT ); // Built-in LED
DigiKeyboard.sendKeyStroke(0);
// Usable signal (LED flickering)
digitalWrite( 1, HIGH );
DigiKeyboard.delay(100);
digitalWrite( 1, LOW );
DigiKeyboard.delay(100);
digitalWrite( 1, HIGH );
DigiKeyboard.delay(100);
digitalWrite( 1, LOW );
}
void loop() {
while( !digitalRead(0) ) DigiKeyboard.update(); // Wait until the switch is pressed
digitalWrite( 1, HIGH );
DigiKeyboard.sendKeyStroke(KEY_DELETE, MOD_ALT_LEFT | MOD_CONTROL_LEFT);
DigiKeyboard.delay(200); // chattering control and LED lighting time
digitalWrite( 1, LOW );
while( digitalRead(0) ) DigiKeyboard.update(); // Wait until the switch is released
DigiKeyboard.delay(200); // chattering control
}
タグ:Digispark
2022-05-13 19:06
nice!(0)
コメント(0)
コメント 0