1. ステッピングモーター制御

ステッピングモーターの制御方法は、601. ステッピングモーターの制御をご参照ください。



リミットスイッチ

リミットスイッチの使い方は、602. リミットスイッチをご参照ください。

ステッピングモータを停止させて戻す

必要なもの
 •ステッピングモーター
 •モータードライバー Pololu A4988
 •リミットスイッチ

説明

ステッピングモーターとリミットスイッチの回路を組み合わせて、
リミットスイッチでステッピングモーターを止め、モーターを逆回転させて
停止させるプログラムを組みます。

配線





Arduinoプログラム

  1. int x;
  2. int b_pin = 7;  // デジタルデータ出力用ピン番号
  3. int state = 0;   // ピンより取得したデータ格納用
  4. int endflag = 0;

  5. void setup()
  6. {
  7.   Serial.begin(38400) ; 
  8.   pinMode(6,OUTPUT);   // Enable
  9.   pinMode(5,OUTPUT);   // Step
  10.   pinMode(4,OUTPUT);   // Dir
  11.   pinMode(10,INPUT);    // MS1
  12.   pinMode(9, INPUT);     // MS2
  13.   pinMode(8, INPUT);     // MS3
  14.   pinMode(7, INPUT);     // EndSwitchSignal
  15.   
  16.   digitalWrite(6,LOW);    // Set Enable low
  17.   digitalWrite(10,LOW); 
  18.   digitalWrite(9,LOW);
  19.   digitalWrite(8,LOW);  
  20.   pinMode(b_pin, INPUT);     // ボタンスイッチ用に入力に設定

  21. }

  22. void loop()
  23. {
  24.   if(endflag == 0){
  25.   digitalWrite(4,HIGH);                // Set Dir high
  26.   while(true)
  27.   {
  28.       digitalWrite(5,HIGH);            // Output high
  29.       delayMicroseconds(500);    // Wait 1/2 a ms
  30.       digitalWrite(5,LOW);            // Output low
  31.       delayMicroseconds(500);    // Wait 1/2 a ms
  32.       
  33.       state = digitalRead(b_pin);  // ピンよりデータ取得
  34.       Serial.println(state);            // シリアルモニタに出力
  35.       delay(100);
  36.       if(state == 0){
  37.         endflag = 1;
  38.         break;
  39.       }

  40.     }
  41.  
  42.   delay(1000);                               // pause one second
  43.   digitalWrite(4,LOW);                  // Set Dir low
  44.   
  45.   for(x = 0; x < 50; x++)                 // Loop 2000 times
  46.   {
  47.       digitalWrite(5,HIGH);             // Output high
  48.       delayMicroseconds(500);     // Wait 1/2 a ms
  49.       digitalWrite(5,LOW);             // Output low
  50.       delayMicroseconds(500);     // Wait 1/2 a ms
  51.     }

  52.   }else{
  53.    delay(1000);
  54.   }
  55. }



Comments