phillowcompiler が 2021年02月21日22時37分28秒 に編集
初版
タイトルの変更
セリアのしんごうきを改造してUSB入力デバイスに!
タグの変更
秋葉原2021
ATtiny
100均
メイン画像の変更
本文の変更
# セリアのしんごうきとは 電子工作大好きな おにーさん や おねーさん 御用達の100均ショップ・**セリア**。そのオモチャ売り場に突如として現れた「**フラッシュしんごうき**」。 三色LEDと左右のスイッチ…ちょっとした改造をして、遊び甲斐がありそうです。 店員さんの訝しがる視線と戦いながら、クールにゲットする。**対象年齢6歳以上** なので何も問題ない。2ケで220円(税込)。  なにやら、中国で売られているおもちゃのしんごうきをカスタマイズ&輸入して100均商品にしているらしい。AliExpressにも似たような商品がある。  # さっそく分解 至って単純な作りである。しかし、きちんと8pinのMCU(マイコン)が鎮座されているのにびっくりした。素性はわからないけれど、おそらく PIC12F(クローン?) あたりのやっすいワンタイムPROMマイコンでしょう。電源はボタン電池からの直結だけど224のパスコンがきちんとはさんであることに感動する。  …というわけで、コイツはいらない子なので、ひっぺがして、リード線をハンダ付けする。  ※スイッチ側にも、入力用のリード線をくっつけておく。 # マイコンをつなごう! 剥がしたマイコンの代わりのマイコンをくっつけて、コードを書いて制御させよう。 用意するのは、サクっと USB入力デバイス を arduino で開発できる **DigiSpark KickStarter** だ。ATtiny85 を積んでいて、AliExpress などでは安価でクローン品を購入できる。こいつの情報はwebにザクザクとあるのでググるべし。(一応、公式は[こちら](http://digistump.com/))  # しかし問題が! …しかしですね、 ATTiny85 も** 8pin** しか無いマイコンだ。USB(2本) と VCC, GND の4本が確実に使われてしまう。RESET信号ラインも残しておきたい(なんとなく)。すると LED3個およびスイッチ2個を制御するGPIOが足りないってわけだ。 そこで、スイッチについては **ADCで読み取る** ようにした。左側と右側でスイッチが押された時に入力される電圧が異なるように抵抗を組み合わせる。一方のスイッチが押された時は緑LEDを迂回してグランドに落ちるようにする。つまり緑LEDは機械的に点灯させるようにしているわけだ。う〜ん。アナログ…。 回路図(手書き!)を書くとこんな感じ。  ※ここまで苦労するんだったら、もうすこしGPIOが多い **Seeeduino XIAO** を使っても良かったかもしれません;;; ↓そうして、ユニバーサルにハンダづけしたものがこちらになります↓  # ファームウェアの作成 DigiSpark には USB入力デバイスを作成するための [arduinoライブラリ](https://github.com/digistump/DigistumpArduino) があるので、たいへん楽ちんである。 上記 github 上にある Example を参考にちょちゃっと変更すれば、USBを通してPCに入力を送ることができるだろう。 使用するメソッドなどは以下の通り。 - **マウス入力** **DigiMouse.h** DigiMouse.MoveX(int) DigiMouse.MoveY(int) DigiMouse.MoveY(int) DigiMouse.LeftClick() DigiMouse.rightClick() - **キーボード入力** **DigiKeyboard.h** DigiKeyboard.sendKeyStroke(KEYID) …KEYIDの一覧は DigiKeyboard.h に定義されている通り。**Alt + [A]** みたいなのを送りたいときは **DigiKeyboard.sendKeyStroke(KKEY_A, MOD_ALT_LEFT)** という具合にしてやれば良い。 # そんなわけで使い道 ## (1)ZOOM のショートカットキーを割り当てる 例の世界的感染症問題で一躍社会インフラ化した「**ZOOM**」。いくつかの機能にショートカットキーを割り当ててることができるので、これを使いこなせると、チョットデキルパーソン感がたいへん高まります(笑)。 たとえば Windowsクライアントであれば「Alt + A」でミュートを切り替えて、「SPACE」キーを押しっぱなしにしていると一時ミュート解除になるので。これらを「セリアしんごうき」の各ボタンに割り当ててやる。喋ることができるときには信号が緑になってGO!というわけだ。  ※撮り方がヘタなのでわかりづらいが、動画も [YouTube にあげておいた](https://youtu.be/SjgksnS6h80)。 ## (2)太鼓さん次郎(太鼓の達人風ゲーム)の入力デバイスにする PCで太鼓の達人風ゲームを遊べる「**太鼓さん次郎**」というソフトがある。 - 赤LED点灯するスイッチが押下されると「Fキー」の情報が送られて、「ドン」 - 緑LED点灯するスイッチが押下されると「Dキー」の情報が送られて、「カッ」 …となるようにすると、LEDもチカチカ光って一気にパリピモードになる…かも…しれない(震え声)  他にもいろいろとちょっとしたショートカットキー入力用に使ってみたい。