不是的,是在检测到距离大于50时步进电机反转,然后一直等待,当距离小于50时,步进电机才会正转,然后继续一直等待,这样一直循环
时间: 2024-01-08 15:02:57 浏览: 20
好的,以下是修改后的代码:
```C++
#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);
Serial.begin(9600);
}
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步。
delay(500);
} else if (range > 50) {
// 大于50时步进电机反转
Serial.println("ni");
stepper.step(-1024); // 4步模式下旋转一周用2048步。
while (vl.readRange() > 50) {
// 等待直到距离小于50
delay(100);
}
}
}
```
在这个修改后的代码中,当距离小于50时,步进电机会正转,然后等待500毫秒。当距离大于50时,步进电机会反转,并且在循环中等待,直到距离小于50为止。在等待过程中,我们通过调用 `vl.readRange()` 来不断检测距离,如果距离小于50,循环结束,程序继续执行。这样就可以实现在距离大于50时,步进电机停止并等待,距离小于50时,步进电机正转的循环了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)