#include <Wire.h> #include <Adafruit_VL6180X.h> #include <Stepper.h> #define STEPS 100 Stepper stepper(STEPS, 8, 10, 9, 11); Adafruit_VL6180X vl = Adafruit_VL6180X(); void setup() { Serial.begin(9600); if (!vl.begin()) { Serial.println("Failed to find sensor"); while (1); } vl.startRangeContinuous(); stepper.setSpeed(90); } void loop() { uint8_t range = vl.readRange(); Serial.print("Range: "); Serial.println(range); if (range < 50) { // 当距离小于50时步进电机正转 Serial.println("shun"); stepper.step(2048); // 4步模式下旋转一周用2048步。 // 等待直到距离大于等于50 while (vl.readRange() >= 50) { delay(100); } } else { // 大于等于50时步进电机反转 Serial.println("ni"); stepper.step(-1024); // 4步模式下旋转一周用2048步。 // 等待直到距离小于50 while (vl.readRange() > 50) { delay(100); } } }这段代码中的步进电机不能旋转完成后停转,请修改一下
时间: 2024-03-25 11:35:40 浏览: 121
可以使用 stepper.stop() 方法来停止步进电机的旋转。修改后的代码如下:
```
#include <Wire.h>
#include <Adafruit_VL6180X.h>
#include <Stepper.h>
#define STEPS 100
Stepper stepper(STEPS, 8, 10, 9, 11);
Adafruit_VL6180X vl = Adafruit_VL6180X();
void setup() {
Serial.begin(9600);
if (!vl.begin()) {
Serial.println("Failed to find sensor");
while (1);
}
vl.startRangeContinuous();
stepper.setSpeed(90);
}
void loop() {
uint8_t range = vl.readRange();
Serial.print("Range: ");
Serial.println(range);
if (range < 50) {
// 当距离小于50时步进电机正转
Serial.println("shun");
stepper.step(2048); // 4步模式下旋转一周用2048步。
stepper.stop(); // 停止步进电机的旋转
// 等待直到距离大于等于50
while (vl.readRange() >= 50) {
delay(100);
}
} else {
// 大于等于50时步进电机反转
Serial.println("ni");
stepper.step(-1024); // 4步模式下旋转一周用2048步。
stepper.stop(); // 停止步进电机的旋转
// 等待直到距离小于50
while (vl.readRange() > 50) {
delay(100);
}
}
}
```
阅读全文