読者です 読者をやめる 読者になる 読者になる

絵師のための自作左手キーボード作成 (予算1万円ぐらい)ロータリーエンコーダ編

前回からの続きです

 

紆余曲折あり左手キーボードを自作するより買ったほうが安いと言う結論に至りました

ですが記事を殺すのも忍びないので一応how toだけでも続けます

 

今回は「ロータリーエンコーダーを回すとショートカットキーを呼び出す」まで説明します

なお他の人が記事を書いていそうな部分では説明しないのでキーワードからググってください

 

1 arduino IEDを手にいれる

arduinoでググってダウンロードしてくださいブルジョワはドネートしてください

mac/win両方大丈夫です

一応起動してください

 

2 ロータリーエンコーダーarduinoで使うためのライブラリを手にいれる

github.com

ここの人のRotary.hと言うライブラリを導入します。

適当にダウンロードしてください

 

ロータリーエンコーダー用ライブラリはいくつかあるんですが

スケッチが簡単ということでこれにします

 

具体的にいうと

 

___________________________________

#include <Rotary.h>

Rotary r = Rotary(2, 3);
Rotary l = Rotary(4, 5);

void setup() {
Serial.begin(9600);
}

void loop() {
unsigned char result1 = r.process();
unsigned char result2 = l.process();
if (result1) {
Keyboard.print(result1 == DIR_CW ? "R" : "L");
}
if (result2) {
Keyboard.print(result2 == DIR_CW ? "A" : "B");
}
}

___________________________________

なおこのスケッチはサンプルプログラムをちょろっと変えて2つロータリーエンコーダーを使えるようにしたものです

 

要点がわかれば改造もコピペでなんとかなりますね

ちなみにR L A  B はショートカット(と言うよりは記述しているだけです)

”キーボードを押す”を呼び出すには正確には

Keyboard.press();

を使います

「エンターキーを押す」なら

Keyboard.press(Enter);

になります。〜を押すなど詳しくはaruduinoの日本語リファレンスを探してください

 (追記:pressだと押し続けるという意味になるそうです 

http://garretlab.web.fc2.com/arduino_reference/language/functions/usb/index.html

)

 

ダウンロードしたファイルから Polling.ino をダブルクリックしてください

前述のプログラムの元ネタが出て来ます

 

 

#include <Rotary.h>
   
  Rotary r = Rotary(2, 3);
   
  void setup() {
  Serial.begin(9600);
  }
   
  void loop() {
  unsigned char result = r.process();
  if (result) {
  Serial.println(result == DIR_CW ? "Right" : "Left");
  }
  }

 

 

3 arduinoにスケッチをぶちこむ

ツール>ボード でarduinomicroを選んでください

この時間違えてmicro以外を買った場合恐らくは動かないので諦めてmicroを買い直してください

ツール>ポートで  /dev/tty.usbmodem1411みたいなのを選んでください

 

スケッチでCtrl+Rキーを押すかもしくはチェックマークをクリックしてください

エラーがなければ問題ないです

エラーが起きたらエラー内容をよく見てください

だいたい行の近くにエラーがあります

プログラム全然わからんて人はarduinoなどプログラミングの記述の基礎を勉強して見てください

(コピペなので十中八九エラー吐かないと思いますが)

 

エラーが出なければarduinoに書き込みます

チェックマークの隣の→ボタンを押してください

うまくいかない場合は接触不良かポートかボードが間違ってます

3の手順をよくみてやり直してください

 

4 スケッチと配線について対応させる

ロータリーエンコーダーのAピンBピンGNDはそれぞれメーカーによって違うと思うので秋月で購入した場合同じ商品のデータシートをHPで読んでください

 

コメントアウトの通りAを2 Bを3に、 GND同士を差し込みます

このとき配線材はすでにはんだ付けしているものとします

たった3箇所なので間違えないと思います

間違えている場合は多分ロータリーエンコーダーの表裏を間違えていると思います

 

5確認

ロータリーエンコーダーarduinoと接続されている

ポート、ボードを間違えていない

そもそもarduinomicroとPCが接続されていない

arduinoがarduinomcroじゃない

いつのまにか配線が抜けてた

以上のことがなければロータリーエンコーダを回した時に

 Right Left が書き込めると思います

 

ショートカットキーを割り当てる時

今回のサンプルプログラムを例に記述を変更して見てください

 

もし以降ロータリーエンコーダーのスケッチを描くときは

スケッチ>ライブラリを使用 からロータリーって英語で書いてるのを適当に選んでください

もしくは#include <Rotary.h>をコピペしてください

 

画像がない上だいぶ端折ったのでわかりにくいとは思いますが今回はこれで終わりにします

 

自作左手キーボード絵師の助けになれば幸いです

ありがとうございました