SSブログ

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は魅力的ですが、少し勉強してからということで、後者の方法で作ってみました。
ds_cad1.jpg
 レギュレータを外し、リューターでパターンにT字の溝を掘る。

ds_cad2.jpg
 追加パーツは四つ足タクトスイッチと配線少々のみ、タクトスイッチは表面実装のものが手元になかったので足を曲げたり切断したりして調整。

ds_cad3.jpg
 熱収縮チューブにボタン部分用の穴をあけて収縮させて完成!

スケッチは以下の通り。
// 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
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。