Датчик дождя с визуальной и звуковой индикацией на Arduino (обучение работе с Proteus)

В этой статье показан способ создания простого датчика дождя с использованием Arduino, ЖК-дисплея и пищалкой.
Проект создан специально для обучения работе с симулятором Proteus и демонстрирует контроль наличия дождя со звуковой, визуальной индикацией на светодиодах и выводом информации на LCD-дисплей.

Arduino с датчиком дождя и 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.LIBC:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY\RainSensorsTEP.LIB
    • RainSensorsTEP.IDXC:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\Library Indexing\RainSensorsTEP.IDX
  • откройте файл .pdsprj;
  • в свойствах компонента дождевого датчика укажите путь к RainSensorsTEP.HEX в поле Program File;
  • проверьте путь к файлу .hex в свойствах Arduino;
  • нажмите Run Simulation;

Если что-то не работает

Если возникают проблемы с запуском проекта или непонятен принцип работы, рекомендуется пройти базовый урок по Proteus.

Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода

📁 Скачать примеры