Нет функции согласования для вызова Ultrasonic:Ultrasonic(int,int)

добрый день! Я пытаюсь закодировать расстояние ультразвукового датчика, но проблема в том, что он дает мне эту ошибку. Есть идеи? Пожалуйста, помогите.

#include <Ultrasonic.h>

// HR-SC04 SENSOR
#define TRIGGER_PIN   5
#define ECHO_PIN      6

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup() {
  Serial.begin(9600); 
}

// Глобальные переменные
int lastDistance = 0;
int thisDistance = 0;

void loop()
{
  // Копирование последнее расстояние
  lastDistance = thisDistance;

  // Получить новое это расстояние
  thisDistance = ultrasonic.Ranging(CM);

  if (outlierCheck(lastDistance, thisDistance)) {
    Serial.println("Outlier found: " + String(thisDistance));
  } else {
    Serial.println(String(thisDistance) + " cm");
  }

  delay(10);
}

// Проверьте наличие значительных скачков и выбросов при считывании датчика
bool outlierCheck(int lastDistance, int thisDistance) {

  // if the difference between measures is greater then 20cm, outlier found
  if ((lastDistance - thisDistance) > 20) {
    return true;
  } else {
    return false;
  }
}

, 👍0

Обсуждение

посмотрите на демонстрационный код который поставляется вместе с библиотекой, @jsotola

Я уже сделал, но это все еще дает мне эту ошибку "Ультразвуковой ультразвуковой(TRIGGER_PIN, ECHO_PIN);", @Megumichan

сообщения об ошибках говорят вам, в чем проблема ... взгляните еще раз на демонстрационный код, @jsotola


1 ответ


1

Скорее всего, вы перепутали библиотеки.

При использовании кода с библиотекой по адресу https://github.com/JRodrigoTech/Ultrasonic-HC-SR04, код компилируется совершенно нормально. Конструкторы совпадают с вашим кодом.

//Конструктор 1
Ultrasonic(int TP, int EP);
//Конструктор 2
Ultrasonic(int TP, int EP, long TO);
//методы.. (используется в вашем источнике)
long Timing();
long Ranging(int sys);

Я думаю, что вы установили эту ультразвуковую библиотеку: https://github.com/ErickSimoes/Ultrasonic. Он имеет тот же файл заголовка и имя класса, но класс построен по-другому

//Конструктор 1
Ultrasonic(uint8_t sigPin) : Ultrasonic(sigPin, sigPin) {};
//Конструктор 2
Ultrasonic(uint8_t trigPin, uint8_t echoPin, unsigned long timeOut = 20000UL);
//Обратите внимание, что конструктор только с 2 аргументами напрямую не виден

Вам следует зайти в Arduino IDE и удалить текущую библиотеку "Ультразвук" из менеджера библиотек. Затем загрузите zip-файл из первого указанного репозитория github и добавьте этот ZIP-файл в свои библиотеки.

В качестве альтернативы, конечно, вы можете использовать вторую библиотеку и ее правильный пример кода.

Также обратите внимание, что ваша Arduino IDE 1.0.6 чрезвычайно устарела, текущая версия 1.8.5

,