絵師のための自作左手キーボード作成 (予算1万円ぐらい)ロータリーエンコーダ編
前回からの続きです
紆余曲折あり左手キーボードを自作するより買ったほうが安いと言う結論に至りました
ですが記事を殺すのも忍びないので一応how toだけでも続けます
今回は「ロータリーエンコーダーを回すとショートカットキーを呼び出す」まで説明します
なお他の人が記事を書いていそうな部分では説明しないのでキーワードからググってください
1 arduino IEDを手にいれる
arduinoでググってダウンロードしてくださいブルジョワはドネートしてください
mac/win両方大丈夫です
一応起動してください
2 ロータリーエンコーダーをarduinoで使うためのライブラリを手にいれる
ここの人の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確認
ポート、ボードを間違えていない
そもそもarduinomicroとPCが接続されていない
arduinoがarduinomcroじゃない
いつのまにか配線が抜けてた
以上のことがなければロータリーエンコーダを回した時に
Right Left が書き込めると思います
ショートカットキーを割り当てる時
今回のサンプルプログラムを例に記述を変更して見てください
もし以降ロータリーエンコーダーのスケッチを描くときは
スケッチ>ライブラリを使用 からロータリーって英語で書いてるのを適当に選んでください
もしくは#include <Rotary.h>をコピペしてください
画像がない上だいぶ端折ったのでわかりにくいとは思いますが今回はこれで終わりにします
自作左手キーボード絵師の助けになれば幸いです
ありがとうございました