Arduino Leonardo micro 改行と縦スクロールを足で行う

Arduino

●編集後記
足でやるのは器用にできないので止めにした。腕をだらんと垂らして肩から力を抜いて使う方式に。スイッチの配列を変えて指で楽に出来る配置に。スクロール速度も押し続けると速くなるなど少し工夫した。さて使えるか。結構紆余曲折あり。開発とはそんなものだ!

#include "Keyboard.h"
#include "Mouse.h"

// send data when mouse wheel is move:
const int scrollWheelStop = 0x00;
const int scrollWheelUp   = 0x01;
const int scrollWheelDown = 0xFF;
const int scrollInterval  = 500;

#define CHG_SC_SPEED 4
#define Button5      5
#define mouseScrollModeButton 6
#define Button7      7
#define Button8      8
#define Button10    10
bool flag = false;
bool flag1 = false;
int const dtm = 20; //-- msec
int scDelayTime = 20;
bool scrollMode = false;
int accelVal = 0;
int accelCnt = 0;

void setup() {
    pinMode(Button7, INPUT_PULLUP);
    pinMode(Button5, INPUT_PULLUP);
    pinMode(Button10 ,OUTPUT);
    pinMode(Button8 ,OUTPUT);
    pinMode(CHG_SC_SPEED, INPUT_PULLUP);
    pinMode(mouseScrollModeButton, INPUT_PULLUP);
    flag = true;
    flag1 = true;    
    scDelayTime = 20;
    accelVal = 0;
    accelCnt = 0;
    Keyboard.begin();
    Mouse.begin();
}

void loop() {
    if( digitalRead(CHG_SC_SPEED ) == LOW )
    {
      Mouse.click();
      digitalWrite( Button8,HIGH);
      while(digitalRead(CHG_SC_SPEED) == LOW);
      delay(50);
      digitalWrite( Button8,LOW);
    }

    if(digitalRead(mouseScrollModeButton) == LOW)
    { 
      if( flag == true )
      {
        Mouse.move(0,0, scrollWheelUp);
      }
      else
      {
        Mouse.move(0,0, scrollWheelDown);
      }
        accelCnt ++;
        if( accelCnt > 10 )
        {
          accelCnt = 0;
          accelVal +=1;        
        }
        if( accelVal > 18 ) accelVal = 18;
        delay(scDelayTime - accelVal);
        digitalWrite( Button10,HIGH);
    }

    if( digitalRead(mouseScrollModeButton) == HIGH )
    {
      accelCnt = accelVal = 0;
    }

    if(digitalRead(Button7) == LOW)
    { 
      Keyboard.press(KEY_UP_ARROW);
      delay(dtm);
      while(digitalRead(Button7) == LOW);
      digitalWrite( Button10,LOW);
      Keyboard.releaseAll();
      flag = true;
    }
    
    if(digitalRead(Button5) == LOW)
    {
      Keyboard.press(KEY_DOWN_ARROW);
      delay(dtm);
      while(digitalRead(Button5) == LOW);
      digitalWrite( Button10,LOW);
      Keyboard.releaseAll();
      flag = false;
    }
}

●過去記事
こんなもんかな。上改行と下改行での移動はキーボードの矢印上下。スクロールは上改行させてまたは下改行させて踏めばスクロールする。スクロールのテキスト中とネットの画面ではスクロール速度を変えたいので付けてみた。スクロールさせてもテキストだと上と下のキーの踏み込みで元のスクロールする前の行に戻ってしまうのが気に入らない。マウスでクリックすればいいからまあ我慢か。
●改善点
・会社で使うと作業靴を脱がないと(寒い)。
・足が攣る。
スイッチに並ぶ板は足の高さをスイッチに合わせて違和感なくタクトスイッチを押す工夫の試験。悪くないけど足の指先を自由にするには足首というか足の指作が自由に左右に動けないと。ということでここには映ってないけどホームセンターでベアリング月の回転台用の薄いのがあった。これを板の下に両面テープで着けていい感じだけど。慣れは必要そうだな・・・。
※ベアリングの音がうるさいのでベルハンマーを吹き付けた。おおうるさい音が消えた。あちこち使用したが何だかなと効果を疑問視していたから少し感激!

 

#include "Keyboard.h"
#include "Mouse.h"

// send data when mouse wheel is move:
const int scrollWheelStop = 0x00;
const int scrollWheelUp   = 0x01;
const int scrollWheelDown = 0xFF;
const int scrollInterval  = 500;

#define CHG_SC_SPEED 4
#define Button5      5
#define mouseScrollModeButton 6
#define Button7      7
#define Button8      8
#define Button10    10
bool flag = false;
bool flag1 = false;
int const dtm = 20; //-- msec
int scDelayTime = 20;
bool scrollMode = false; 

void setup() {
    pinMode(Button7, INPUT_PULLUP);
    pinMode(Button5, INPUT_PULLUP);
    pinMode(Button10 ,OUTPUT);
    pinMode(Button8 ,OUTPUT);
    pinMode(CHG_SC_SPEED, INPUT_PULLUP);
    pinMode(mouseScrollModeButton, INPUT_PULLUP);
    flag = true;
    flag1 = true;    
    scDelayTime = 20;
    Keyboard.begin();
    Mouse.begin();
}

void loop() {
    if( digitalRead(CHG_SC_SPEED ) == LOW )
    {
      if( flag1 == true )
      {
        scDelayTime = 180;
        digitalWrite( Button8,HIGH);
        while(digitalRead(CHG_SC_SPEED) == LOW);
        flag1 = false;
        delay(dtm);
      }
      else
      {
        scDelayTime = 20;
        digitalWrite( Button8,LOW);
        while(digitalRead(CHG_SC_SPEED) == LOW);
        flag1 = true;
        delay(dtm);        
      }
    }

    if(digitalRead(mouseScrollModeButton) == LOW)
    { 
      if( flag == true )
      {
        Mouse.move(0,0, scrollWheelUp);
      }
      else
      {
        Mouse.move(0,0, scrollWheelDown);
      }
        delay(scDelayTime);
        digitalWrite( Button10,HIGH);
    }

    if(digitalRead(Button7) == LOW)
    { 
      Keyboard.press(KEY_UP_ARROW);
      delay(dtm);
      while(digitalRead(Button7) == LOW);
      digitalWrite( Button10,LOW);
      Keyboard.releaseAll();
      flag = true;
    }
    
    if(digitalRead(Button5) == LOW)
    {
      Keyboard.press(KEY_DOWN_ARROW);
      delay(dtm);
      while(digitalRead(Button5) == LOW);
      digitalWrite( Button10,LOW);
      Keyboard.releaseAll();
      flag = false;
    }
}

 

No tags for this post.
タイトルとURLをコピーしました