今回は初めてArduinoでのモーター制御をやってみたのでそれのメモです。
モーターの制御に必要なもの
モーターを扱うのは意外と大変です。なぜならモーターは比較的大きめの電源を必要とするからです。
Arduinoからの電気だけでも動きますが、Arduinoを壊す原因となってしまいます。
今回はこんな感じの構成で組んでみました。
モーター一つ回すのに結構な数のコードを使っているのが分かると思います。
必要なパーツは以前紹介したキットに全てありました。
Arduino初心者完全セットの内容物を紹介!【The Most Complete Starter Kit MEGA 2560 Project】
Arduinoとモーターとは別に二つのモジュールを使いました。
一つは最初の写真左側の電源モジュールです。モータを動かすための電気を供給しています。
もう一つはL293Dというモーターを制御するための便利なチップです。写真中央にあります。
これは最大2つのモーターを独立して制御できます。
実装
コードでの実装です。
今回は基本的にこちらからダウンロードできるのElegooのチュートリアルを参考にやりました。
https://www.elegoo.com/download/
[highlight_c]
#define ENABLE 5
#define DIRA 3
#define DIRB 4
int i;
void setup() {
//—set pin direction
pinMode(ENABLE,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
Serial.begin(9600);
}
void loop() {
//—back and forth example
Serial.println(“One way, then reverse”);
digitalWrite(ENABLE,HIGH);
for (i=0;i<5;i++) {
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
delay(500);
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,HIGH);
delay(500);
}
digitalWrite(ENABLE,LOW);
delay(2000)}
[/highlight_c]
アウトプットのピンを3つ用意する。一つは電源管理、後の二つは時計回りに力を与えるか、反時計回りに力を与えるかを指定する。
上の例だとdigitalWriteなのでHIGHかLOWだけだが、analogWriteを使って二つ目の引数に回転の速度を与えることもできる。
終わりに
モーターを軽く制御するだけでも結構大変でした。小さくて複雑な回路を組まなくても制御できるモジュールとかあったら、そっちを使うようにしたいところではあります。