0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DigiSpark互換品でマウスもどき(ホイール上下と左ボタンのみ)を作る。

Last updated at Posted at 2025-04-03

足の操作でコード譜表示サイトをスクロールしながら弾き語りするためのデバイスを作成。
(自作デバイスで日常遣いしてるのはこれだけ)
スイッチ3つ。信号配置は以下の通り

Pin 接続先 機能
P0 SW1(IN) スクロールアップ
P1 SW2(IN) 左スイッチ
P2 SW3(IN) スクロールダウン
P3 NC (USB D-)
P4 NC (USB D+)
P5 NC (Reset)

Eagleをアンインストールしてしまったので回路図は割愛。
回路は@nak435様投稿の↓の記事の回路と同じ。
https://qiita.com/nak435/items/5e9320342729ae76e40d

P0,P2に繋がるSW1/SW2の反対側はGND。(INPUT_PULLUPで開放時H)
P1はLEDが繋がってるので PullUpせず、反対側は5Vに繋ぐ。

ソースコードは以下の通り。


#include <DigiMouse.h>

int step =  -1;
void setup() {
  pinMode( 0, INPUT_PULLUP);
  pinMode( 1, INPUT);//PB1はLED繋がってる
  pinMode( 2, INPUT_PULLUP);
  
  DigiMouse.begin(); //start or reenumerate USB - BREAKING CHANGE from old versions that didn't require this
}

void leftkeyClick(int pin, int cond)
{
    DigiMouse.setButtons(1);
    //離されるのを待つ
    while(cond==digitalRead(pin)){
      DigiMouse.delay(10);
    };
    DigiMouse.setButtons(0);
}

void rightkeyClick(int pin, int cond)
{
    DigiMouse.setButtons(-1);
    //離されるのを待つ
    while(cond==digitalRead(pin)){
      DigiMouse.delay(10);
    };
    DigiMouse.setButtons(0);
}

void loop() {
  // If not using plentiful DigiMouse.delay(), make sure to call
  // DigiMouse.update() at least every 50ms
  
  if( LOW==digitalRead(0)){ //コレはPULL-UP
   DigiMouse.scroll(step);  
  }  else if( LOW==digitalRead(2)){ //コレはPULL-UP
    DigiMouse.scroll(-step);
  }
  else if(HIGH==digitalRead(1)){  //コレはPULL-DOWN
    leftkeyClick(1, HIGH);
  }
  DigiMouse.delay(100);
}

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?