Проблемы при подключении второго ультразвукового датчика (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. Почему это может быть?

, 👍0

Обсуждение

совет: вы можете упростить свой код, используя if (cm==0) cm=250;, @jsotola


1 ответ


1

Оказывается, у меня был лишний "}" после функции цикла void. После удаления код работал должным образом

,