void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6,INPUT_PULLUP);
}
void forward(){
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);
}
void backword(){
digitalWrite(3,LOW);
digitalWrite(5, HIGH);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3, HIGH);
delay(5);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(5);
digitalWrite(3, LOW);
digitalWrite(2,HIGH);
delay(5);
}
void loop() {
if (digitalRead(6)==LOW) backword();
else
forward();
}
このプログラムでは、Setup()関数の中で新たにスイッチを接続するための入力用のGPIOを設定しています( pinMode(6,INPUT_PULLUP); )。
また6番ピンを入力用に設定しているのですが、第2引数にINPUT_PULLUPとしています。これはArduinoのCPU Atmega328P内部で6番ピンをプラス側に接続することを意味しています。6番ピンに接続するスイッチが開いているとき、値を1にするためです。
もしこのプラス側に接続する抵抗がない場合は、スイッチが開いているとき値が非常に不安定になってしまいます。このような抵抗のことをプルアップ抵抗と呼びます。以前、このような抵抗はCPUの外に取り付けていましたが、最近のマイコンでは内部で設定できるものもあります。
Loop()関数内で6番ピンの状態を見て、スイッチが押されていればbackword()関数を実行します。それ以外の場合はforward()が実行されます。
今回はバイポーラ型のステッピングモーターについてお話ししました。
トランジスタでドライブ回路を作り、またGPIOをコードで直接制御する方法でステッピングモーターを回転させてみましたが、これは基本を押さえることに重点を置いたからです。
最近は便利なドライバ回路や制御モジュールが出回っていますので、実際にステッピングモーターを使った機器を製作する場合はそれらを使うのが一般的でしょう。次回はそれらの使い方についてお話ししたいと思います。お楽しみに。(次回へ続く)
ステッピングモーターの制御
PWMを使ったサーボモーターの制御
PWMでマブチモーターを制御する
困ったら読みたいマブチモーター制御のTips
マブチモーターのノイズ対策
マブチモーターをArduinoで制御するCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク