我必须停止步进电机一定次数(一次完整旋转),延时作为停止参数。假设我的要求是停止电机20次,以便我的延迟值应该均匀分布在此之间完成一次旋转的数字(20)。我为这些停靠点使用了一个for循环(20),但是我得到了超过20的delys。下面给出了arduino的代码,其中8000是一次旋转中的步数:
#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);
}
答案 0 :(得分:1)
你的问题仍然令人困惑,但比以前更清楚。
看起来你有一个可以驱动转盘的步进电机。电机需要200步才能旋转一圈,但需要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秒钟。