Датчик дождя с визуальной и звуковой индикацией на Arduino (обучение работе с Proteus)
В этой статье показан способ создания простого датчика дождя с использованием Arduino, ЖК-дисплея и пищалкой.
Проект создан специально для обучения работе с симулятором Proteus и демонстрирует контроль наличия дождя со звуковой, визуальной индикацией на светодиодах и выводом информации на LCD-дисплей.
Скетч реализует определение дождя и визуальное оповещение с использованием красного и зелёного светодиодов, а также отображение состояния на ЖК-дисплее. Проект помогает понять работу цифрового сенсора дождя, базовую обработку сигналов в Arduino и анимацию текста на LCD.
Назначение проекта
Цель проекта — показать, как можно реализовать простую систему оповещения о дожде с использованием Arduino:
- контроль состояния датчика дождя через цифровой вход;
- индикация состояния с помощью красного и зелёного светодиодов;
- вывод анимированного текста на ЖК-дисплей 20×4;
- использование пьезозуммера для дополнительной сигнализации.
Такой подход может быть полезен в проектах домашней автоматики, метеостанциях или учебных стендах для изучения работы датчиков и вывода информации на дисплей.
Используемые компоненты
- Arduino UNO;
- Цифровой датчик дождя;
- ЖК-дисплей 20×4 (LiquidCrystal на пинах D8–D13);
- Красный светодиод;
- Зелёный светодиод;
- Пьезозуммер;
- Резисторы 220–330 Ом;
- Соединительные провода и макетная плата;
- Proteus 8 или 9 с поддержкой Arduino.
Принцип работы программы
Датчик дождя подключается к цифровому входу Arduino. При попадании воды на сенсор его выход становится высоким (HIGH). Arduino в этот момент включает красный светодиод и зуммер, а зелёный светодиод выключается. При отсутствии дождя выход сенсора LOW — Arduino включает зелёный светодиод и выключает красный и зуммер.
Одновременно на ЖК-дисплее 20×4 выводится текстовая информация о состоянии сенсора. При дожде сообщение «Rain Detected» отображается с анимацией трёх точек, создавая эффект мигания. При отсутствии дождя на дисплее показывается сообщение «NO RAIN».
Arduino-скетч
// include the library code:
#include <LiquidCrystal.h>
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
//Define the Pin Numbers
const int SENSOR_PIN = 2;
const int SPEAKER_PIN = 5;
const int RLED_PIN = 7;
const int GLED_PIN = 6;
void setup ()
{
pinMode (SENSOR_PIN, INPUT); // Set the Sensor pin as INPUT
pinMode(SPEAKER_PIN, OUTPUT); // Set the Red LED pin as OUTPUT
pinMode(RLED_PIN, OUTPUT); // Set the Red LED pin as OUTPUT
pinMode(GLED_PIN, OUTPUT); // Set the Green LED pin as OUTPUT
lcd.begin(20, 4); // set up the LCD's number of columns and rows:
lcd.setCursor(0,0); // set the cursor position:
lcd.print("Arduino Based");
lcd.setCursor(0,1);
lcd.print(" RAIN DETECTOR ");
}
void loop ()
{
int Sensor_Val = digitalRead(SENSOR_PIN); //get reading from Sensor
if (Sensor_Val == HIGH) //If Sensor Detected the Rain
{
digitalWrite(RLED_PIN, HIGH);
digitalWrite(SPEAKER_PIN, HIGH);
digitalWrite(GLED_PIN, LOW);
lcd.setCursor(0, 3);
lcd.print(" Rain Detected ");
delay(100);
lcd.setCursor(0, 3);
lcd.print(" Rain Detected. ");
delay(100);
lcd.setCursor(0, 3);
lcd.print(" Rain Detected.. ");
delay(100);
lcd.setCursor(0, 3);
lcd.print(" Rain Detected... ");
delay(100);
}
else
{
lcd.setCursor(0, 3);
lcd.print(" NO RAIN ");
digitalWrite(RLED_PIN, LOW);
digitalWrite(SPEAKER_PIN, LOW);
digitalWrite(GLED_PIN, HIGH);
}
}
Работа проекта в Proteus
В симуляции Proteus, датчик дождя подаёт цифровой сигнал на Arduino. В зависимости от состояния сенсора Arduino управляет светодиодами и зуммером, а ЖК-дисплей показывает текстовое состояние. Проект позволяет наблюдать работу цифрового сенсора и взаимодействие с исполнительными устройствами внутри симулятора.
Запуск проекта в Proteus
- распакуйте архив с проектом;
- положите файлы библиотеки в соответствующие папки:
- RainSensorsTEP.LIB →
C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY\RainSensorsTEP.LIB - RainSensorsTEP.IDX →
C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\Library Indexing\RainSensorsTEP.IDX
- RainSensorsTEP.LIB →
- откройте файл .pdsprj;
- в свойствах компонента дождевого датчика укажите путь к RainSensorsTEP.HEX в поле Program File;
- проверьте путь к файлу .hex в свойствах Arduino;
- нажмите Run Simulation;
Если что-то не работает
Если возникают проблемы с запуском проекта или непонятен принцип работы, рекомендуется пройти базовый урок по Proteus.
Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода