次の図を見てください。
赤の波形がAコイル、青の波形がBコイルとします。波形が山の部分でコイルのA-1からA-2に電流が流れ、波形の谷の部分ではA-2からA-1に電流が流れるとします。Bコイルも同様です。この図を参考に、AコイルとBコイルの山谷が交互に来るよう、プログラムを書き換えてみました。
void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop() { digitalWrite(3,LOW); digitalWrite(2, HIGH); delay(5); digitalWrite(5,LOW); digitalWrite(4, HIGH); delay(5); digitalWrite(2, LOW); digitalWrite(3, HIGH); delay(5); digitalWrite(4, LOW); digitalWrite(5,HIGH); delay(5); }
いかがですか。よりスムーズに回転するようになったと思います。
ただ、このプログラムではモーターが回転し続けるだけなので、筆者のように直動装置を駆動している場合は、移動するテーブルが端まで行きつくと強制的にモーターを停止させて、モーターについているノブを回してまた元の位置まで戻してやる必要があります。
これでは何度も実験したり、調整する場合などは大変です。そこでスイッチを1つ追加して、スイッチを押しているときは逆回転、またスイッチを押していないときには正回転するようにプログラムを改造してみます。スイッチはGPIOの6番ピンに付けることにします。スイッチが閉じるとGPIOの6番がグランドに落ちるように配線します。
Copyright © ITmedia, Inc. All Rights Reserved.