まえがき
部にあったこれ↓についてるエンコーダーを使ってみようと思ったのですが、探し方が悪いのか誰も使ってなかったのでメモ
https://akizukidenshi.com/catalog/g/g112919/
(Qiita書くの初めてなので読みにくかったらごめんです)
データシート
つかったもの
mega 2560 pro
IG22とそのエンコーダー
接続
IG22 | mega 2560 pro |
---|---|
モーター+ | なし |
モーター- | なし |
VCC | 5V |
GND | GND |
センサーA | A5 |
センサーB | A7 |
(モーター+-は手で回すのでつかわないです)
まず書いたもの
void setup() {
pinMode(A5, INPUT);
pinMode(A7, INPUT);
Serial.begin(115200);
}
void loop() {
Serial.print(analogRead(A5));
Serial.print(", ");
Serial.println(analogRead(A7));
}
こんな感じで書いてモーターを回すと、↓みたいな感じの波形が見られると思います
そして、これを元に
片方がHIGH/LOWになったときのもう片方の値を読むことで、回転方向を読むことができます(2つのXORが1なら正転、0なら逆転みたいな感じ)
最終的なコード
int counter = 0; //モーターの回転数
int lasta;
void setup() {
pinMode(A5, INPUT);
pinMode(A7, INPUT);
Serial.begin(115200);
lasta = digitalRead(A5);
}
int a,b;
void loop() {
a = digitalRead(A5);
if(lasta!=a){
b = digitalRead(A7);
if(a ^ b) counter++;
else counter--;
}
lasta = a;
Serial.println(counter);
}
ここまでできれば、あとは1回転でなんcm進むかみたいなことを調べればいろいろできます!お疲れさまでした!!