Pro Micro(Arduino Leonardo)でHID機能を使ってみた

スポンサーリンク

はじめに

タクトスイッチとPro Microの HID機能を使って文字入力してみた とカーソルの移動をやってみた

そのうちキーボードを作ってみたい

つかったもの

10kΩ抵抗

ブレッドボード

キーボードライブラリで文字入力

回路図

回路はこんな感じ

f:id:shangtian:20181226095441p:plain

f:id:shangtian:20181224191855j:plain

スケッチ

今回はタクトスイッチを押した回数を
カウントして入力するスケッチを書いた

キーボード入力として使うときは

#include <Keyboard.h>

をインクルードする

#include <Keyboard.h>
const int button = 14;
int preState = HIGH;
int counter = 0;

void setup() {

  pinMode(button, INPUT);
  Keyboard.begin();
}

void loop() {

  int state = digitalRead(button);

  if((state != preState) && (state == HIGH)) {
    counter ++;

    Keyboard.print(counter);
    Keyboard.println("times");
  }
  preState = state;
}

f:id:shangtian:20181224185328p:plain

改行コードが入って無かったんで
次のように変えてみると

Keyboard.println("times\n");

f:id:shangtian:20181224185337p:plain

マウスライブラリでカーソルの移動

カーソルの移動方向は画面の水平方向。
一応動くけど反応速度がすごく遅いのと
動き出したら止まらないw

回路図

回路図は次に感じ。1つタクトスイッチを増やした。 f:id:shangtian:20181226101355p:plain

スケッチ

#include <Mouse.h> //ライブラリ

const int left = 14;
const int right = 15;

int range = 5; //移動する距離
int resDelay = 10; //Delay時間

void setup() {

  pinMode(left, INPUT);
  pinMode(right, INPUT);
  Mouse.begin();
}

void loop() {
  int rightState = digitalRead(right);
  int leftState = digitalRead(left);

  int xDistance = (leftState - rightState) * range;

//xDistanceが0じゃないとき
  if (xDistance != 0) {
    Mouse.move(xDistance,0,0);
  }
  delay(resDelay);
}

<参考文献>

qiita.com

Arduino Leonardo(Pro Micro)のHID(キーボード)機能を使う(ショートカットキー実行,コマンド実行) - Qiita

Arduinoをはじめよう 第3版 (Make:PROJECTS)

Arduinoをはじめよう 第3版 (Make:PROJECTS)