Проблемы при подключении второго ультразвукового датчика (HC SR04)
Я работаю над роботом, избегающим препятствия. Он использует ультразвуковой датчик, чтобы избегать препятствий, но в настоящее время ему трудно избегать объектов, которые расположены по диагонали. Таким образом, я хочу добавить второй ультразвуковой датчик и чередовать их показания. Я тестирую код, который должен смотреть вправо, а затем влево и возвращать расстояния. Код сработал только на одно УЗИ. и это следующее:
#include <NewPing.h>
#include <Servo.h>
#define trig_pin1 A1 //аналоговый вход 1
#define echo_pin1 A2 //аналоговый вход 2
#define trig_pin2 A3 //аналоговый вход 1
#define echo_pin2 A4 //аналоговый вход 2
int distance1 = 100;
int distance2 = 100;
#define maximum_distance 200 //функция датчика
Servo servo1; //имя нашего сервопривода
Servo servo2;
NewPing sonar1(trig_pin1, echo_pin1, maximum_distance);
NewPing sonar2(trig_pin2, echo_pin2, maximum_distance);
void setup() {
// поместите сюда код установки для однократного запуска:
servo1.attach(11); //наш сервопривод
servo1.write(90);
servo2.attach(6); //наш сервопривод
servo2.write(90);
distance1 = readPing1();
distance2 = readPing2();
delay(100);
distance1 = readPing1();
distance2 = readPing2();
delay(100);
distance1 = readPing1();
distance2 = readPing2();
delay(100);
distance1 = readPing1();
distance2 = readPing2();
delay(100);
}
void loop() {
int distanceRight = 0;
int distanceLeft = 0;
distanceRight = lookRight();
delay(300);
distanceLeft = lookLeft();
delay(300);
}
}
int readPing1(){
delay(10);
int cm = sonar1.ping_cm();
if (cm==0){
cm=250;
}
return cm;
}
int lookRight(){
servo1.write(50);
delay(500);
int distance1 = readPing1();
delay(100);
servo1.write(115);
return distance1;
}
int readPing2(){
delay(10);
int cm = sonar2.ping_cm();
if (cm==0){
cm=250;
}
return cm;
}
int lookLeft(){
servo2.write(170);
delay(500);
int distance2 = readPing2();
delay(100);
servo2.write(115);
return distance2;
delay(100);
}
I get the following error:
'readPing1' was not declared in this scope
и я получаю ту же ошибку для функции readPing2. Почему это может быть?
@Nick Heumann, 👍0
Обсуждение1 ответ
▲ 1
Оказывается, у меня был лишний "}" после функции цикла void. После удаления код работал должным образом
,
@Nick Heumann
Смотрите также:
- Как заставить сервопривод вращаться на угол больше 180°
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Бесполезная проводка коробки и код
- Получение 0 см от ультразвукового датчика, когда ничего нет впереди
- Почему сервопривод не перемещается по углам должным образом
- Микро сервопривод не работает с Arduino UNO
совет: вы можете упростить свой код, используя
if (cm==0) cm=250;
, @jsotola