0

停止パラメーターとして遅延を使用して、ステッピング モーターを特定の回数 (完全な 1 回転に対して) 停止する必要があります。遅延値がこの数 (20 ) 完全な 1 回転の場合。これらの停止 (20) に for ループを使用しましたが、delys が 20 を超えます。arduino のコードを以下に示します。ここで、8000 は 1 回転のステップ数です。

    #include <Stepper.h>

    const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
    // for your motor

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

    void setup() {
    // set the speed at 60 rpm:
    myStepper.setSpeed(60);
    // initialize the serial port:
    Serial.begin(9600);
    }

   // step one revolution  in one direction:
   void loop() {
   int noi=20;// set the no of images here
   for(int i=0;i<=noi;i++){
    delay(8000/noi);
    }
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);

    }
4

1 に答える 1

1

あなたの質問はまだ混乱していますが、以前よりも明確になりました。

ターンテーブルを駆動するステッピング モーターがあるようです。モーターは 1 回転するのに 200 ステップかかりますが、ターンテーブルを 1 回転させるのに 8000 ステップかかります。

ある意味では、重要なのは 8000 という数字だけです。テーブルを一時停止するには、8000 を均等に分割する必要があります。これは、試みたように見えます。しかし、あなたは を置き忘れました}

void loop() {
    int noi=20;// set the no of images here
    for(int i=0;i<=noi;i++){
        delay(8000/noi);
    } <<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);

} 

void loop() {
    int noi=20;// set the no of images here
    for(int i=0;i<=noi;i++){
        delay(enough_delay_to_take_image);  // or trigger image here?
        Serial.println("clockwise");
        myStepper.step(8000/noi);
    }   
} 

重要な唯一の場所stepsPerRevolution = 200は、移動速度の計算とmyStepper.setSpeed(60);です。テーブルをそんなに速く動かしたいですか?物体が大きく揺れる可能性があります。

      myStepper.setSpeed(1);

画像間の移動に 3 秒かかります。それが遅すぎる場合は、

      myStepper.setSpeed(3);

画像間の移動に 1 秒かかります。

于 2014-12-22T17:42:10.097 に答える