У меня работает ультразвуковой датчик так, если уровень воды достигает от 4 до 7 см, то насос отключается, если уровень больше или меньше этих значений - насос работает.
Для защиты от перелива установлен поплывковый выключатель, который активируется, если его задевает вода и приходит сигнал на пьезо пищалку, она отключается с помощью сенсорной кнопки.
Мне нужно чтобы я мог показать, что поплавковый выключатель работает.
Но в данный момент, без кнопки, я это показать не могу, потому что уровень воды до датчика не может быть меньше 4 см.
Подключал всё по схеме подключения:
https://imgur . com/a/w9a3vP2 (скопируй ссылку и вставь в поисковую строку, убери пробелы между точкой)
Стенд состоит из:
Ultrasonic Sensor + Mounting Bracket (Ультразвуковой датчик расстояния)
Поплавковый выключатель
Сенсорная кнопка
Arduino Nano V3 (Ардуино НАНО)
Type Switch (Выключатель питания, кнопка, которая ещё не подключена)
lithium batteries 3300mAh (аккумуляторы)
Plastic Battery Holder (Держатель для 18650 аккумуляторов)
Active Passive Buzzer Alarm (пьезо пищалка для сигнала)
Насос для воды
Реле для включения нагрузки
Работа стенда без подключённой кнопки:
https://www.youtube . com/watch?v=tpv1S-kxxbM (скопируй ссылку и вставь в поисковую строку, убери пробелы между точкой)
Код для работы стенда:
Код: Выделить всё
//Программа управления насосом по датчику расстояния
#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); //ПОДКЛЮЧИЛИ ПИН ПОПЛАВКОВОГО ВЫКЛЮЧАТЕЛЯ (НА СЛУЧАЙ ПЕРЕЛИВА)
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
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); // задержка
}