Ошибка в программе устройства, способное автоматически поддерживать уровень жидкости в указанных диапазонах, управляя насосом

polyana
Offline
Зарегистрирован: 23.04.2022
Код программы:
//Программа управления насосом по датчику расстояния
#include "Ultrasonic.h"


boolean pereliv = 0; //переменная для хранения значения с датчика перелива
boolean key = 0;    //переменная для хранения значения с кнопки (1 если кнопка нажата, 0 если нет)
boolean trevoga = 0; //переменная сигнализирующая о наличии тревоги
float maxLevel=4.00;  //расстояние в сантиметрах, соответствующее максимальному уровню жидкости в емкости
float minLevel=7.00; //расстояние в сантиметрах, соответствующее минимальному уровню жидкости в емкости

Ultrasonic ultrasonic(3, 4); //подключили датчик расстояния (TRIG к 3 пину. ECHO к 4)



void setup()
{
  Serial.begin(9600); 	 // запускаем серийный порт
  pinMode(8, INPUT_PULLUP);  //ПОДКЛЮЧИЛИ ПИН КНОПКИ (ИСПОЛЬЗУЕТСЯ ДЛЯ ОТКЛЮЧЕНИЯ РЕЖИМА ТРЕВОГИ)
  pinMode(10, INPUT_PULLUP);  //ПОДКЛЮЧИЛИ ПИН ПОПЛАВКОВОГО ВЫКЛЮЧАТЕЛЯ (НА СЛУЧАЙ ПЕРЕЛИВА)
}

void loop()
{
  float rast = ultrasonic.Ranging(CM); 	// получаем расстояние с ультразвукового датчика и сохраняем его в rast
  pereliv = digitalRead(10); // считываем состояние поплавкового выключателя
  key = digitalRead(8); // считываем состояние кнопки

  Serial.print(rast); 					// выводим растояние до воды в монитор порта
  
  if (rast > minLevel) { //если растояние до поверхности воды больше 7 см
    digitalWrite(12, HIGH);  //включаем питание на реле
    digitalWrite(13, HIGH);  //подаем сигнал реле на включение насоса
    Serial.println("    OnNasos");
  }

  if (rast < maxLevel) { //если растояние до поверхности воды меньше maxLevel;
    digitalWrite(13, LOW); //даем сигнал на отключение реле
    digitalWrite(12, LOW); //отключаем питание реле
      Serial.println("    OFFNasos");
  }

  if (pereliv == 1) {//если сработал поплавковый выключатель, то
    trevoga = 1;  //включаем режим тревоги
  }

  if (trevoga == 1) {  //если режим тревоги включен, то
    digitalWrite(13, LOW); //даем сигнал на отключение реле
    digitalWrite(12, LOW); //отключаем питание реле
    tone(7, 2500, 250); //подаем сигнал тревоги с частотой 2500 и длительностью 250мс
  }

  if (key == 1) {  //если нажата кнопка, то
    trevoga = 0;  //отключаем режим тревоги
  }

 if (trevoga == 0) {  //если режим тревоги отключен, то
    noTone(7);  //отключаем пьезопищалку
  }



  delay(500); 								// задержка

  
}

Ошибка программы:

Cхема подключений:

Так выглядит со стороны:

Как исправить ошибку в коде программы?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

 Спросить у автора кода. Твой IQ самостоятельно этого не вывезет.

polyana
Offline
Зарегистрирован: 23.04.2022

DetSimen пишет:

 Спросить у автора кода. Твой IQ самостоятельно этого не вывезет.

вывезет, если объяснишь в чём проблема

если твоё IQ выше моего, ты бы написал решение, а не давал бы мне жизненные советы

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Не вывезет. Я настаиваю.

polyana
Offline
Зарегистрирован: 23.04.2022

мне тут вывозить многого и не нужно, я хочу, чтобы мне 1 строчку изменили, чтобы всё работало правильно и всё

но судя по твоим комментариям, у тебя IQ не выше моего, раз ты не можешь написать решение проблемы, а только сваливаешь, чтобы я обратился к другому человеку

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

polyana пишет:

мне тут вывозить многого и не нужно, я хочу, чтобы мне 1 строчку изменили, чтобы всё работало правильно и всё

но судя по твоим комментариям, у тебя IQ не выше моего, раз ты не можешь написать решение проблемы, а только сваливаешь, чтобы я обратился к другому человеку

Мае IQ ниже тваева примерно в 5 рас, паэтаму, не пацкажу. Могу тока посоветовать выложить ошибку текстом, а не картинкой, на которой нихрена не видна. Настока вот я тупой. Или не я?

kalapanga
Offline
Зарегистрирован: 23.10.2016

polyana пишет:

мне тут вывозить многого и не нужно, я хочу, чтобы мне 1 строчку изменили, чтобы всё работало правильно и всё

С таким подходом лучше топать в раздел "Ищу исполнителя" и там излагать любые свои "хочу", но только вместе с "за это дам".

Последний бесплатный совет - там, где взяли этот код, возьмите и библиотеки именно те, которые использовал автор кода.

polyana
Offline
Зарегистрирован: 23.04.2022
Arduino: 1.8.7 (Windows 7), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"
 
C:\Users\Р?ван\Desktop\текстовые файлы\программа для станции\proga\AutoNasos\AutoNasos.ino: In function 'void loop()':
 
AutoNasos:24:27: error: 'class Ultrasonic' has no member named 'Ranging'
 
exit status 1
'class Ultrasonic' has no member named 'Ranging'
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

На форум запостить ума хватило, а в онлайн переводчике узнать перевод фразы - 'class Ultrasonic' has no member named 'Ranging' не хватает ???

Ваш код написан для другой библиотеки Ultrasonic. В свежей библиотеке расстояние читается по другому - https://github.com/ErickSimoes/Ultrasonic/blob/master/examples/UltrasonicSimple/UltrasonicSimple.ino

Green
Offline
Зарегистрирован: 01.10.2015

kalapanga пишет:

С таким подходом лучше топать в раздел "Ищу исполнителя" и там излагать любые свои "хочу", но только вместе с "за это дам".


"Я б вам дала, но вы сами не захотите", и так бывает...(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
  float rast = ultrasonic.read();  // получаем расстояние с ультразвукового датчика и сохраняем его в rast

 

polyana
Offline
Зарегистрирован: 23.04.2022

ua6em пишет:

  float rast = ultrasonic.read();  // получаем расстояние с ультразвукового датчика и сохраняем его в rast

 

спасибо за решение, но я его не тестировал, а я скачал библиотеку SoftwareSerial, на которой у меня всё заработало