VL53L0X 距离
— mm
模式
待机
收集星星
0
碰壁次数
0
马达 A(AIN1/AIN2 · PWM5)
PWM 0
马达 B(BIN1/BIN2 · PWM6)
PWM 0
手动控制(键盘 WASD / 方向键 · 或点击按钮)
▲
◀
▼
▶
传感器检测正前方障碍物距离。当距离 > 30 mm:马达A转、马达B停(直行);
距离 ≤ 30 mm:马达A停、马达B转(自动转向避障)。
Arduino C++
// ── 依赖库 ────────────────────────────────────────── #include <Wire.h> #include <VL53L0X.h> VL53L0X sensor; // ── A 马达引脚 ───────────────────────────────────── const int STBY = 2; const int PWMA = 5; const int AIN1 = 4; const int AIN2 = 3; // ── B 马达引脚 ───────────────────────────────────── const int PWMB = 6; const int BIN1 = 7; const int BIN2 = 8; void setup() { Serial.begin(9600); Wire.begin(); pinMode(STBY, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); if (!sensor.init()) { Serial.println("Error: Sensor not found!"); while (1); } sensor.startContinuous(); digitalWrite(STBY, HIGH); Serial.println("Switch System Ready!"); } void loop() { int distance = sensor.readRangeContinuousMillimeters(); Serial.print("Dist: "); Serial.print(distance); Serial.println(" mm"); if (distance > 30) { // 【30mm 以外】:A 转,B 停 digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW); analogWrite(PWMB, 0); } else { // 【30mm 以内】:A 停,B 转 digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW); analogWrite(PWMB, 255); } delay(100); }
← 返回主页