Почему ЖК-дисплей 16x2 не может отображать «утечку воды», когда датчик дождя обнаруживает воду?
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
SoftwareSerial mySerial(0, 1);
int gas_sensor = A5;
int water_sensor = 8;
int buzzer = 9;
int fan = 13;
int sms_count = 0;
void setup() {
pinMode(gas_sensor, INPUT);
pinMode(water_sensor, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(fan, OUTPUT);
mySerial.begin(9600);
Serial.begin(9600);
lcd.begin(16, 2);
delay(500);
}
void loop() {
if (digitalRead(water_sensor) == LOW && analogRead(gas_sensor)) {
CheckWater_and_Gas();
}
else if (digitalRead(water_sensor) == LOW) {
CheckWater();
}
else if (analogRead(gas_sensor)) {
CheckGas();
}
else {
}
}
void CheckWater_and_Gas() {
int sensorValue = analogRead(gas_sensor);
Serial.println(sensorValue);
delay(1000);
if ( digitalRead(water_sensor) == LOW && sensorValue > 150 ) {
digitalWrite(buzzer, HIGH);
digitalWrite(fan, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Water and ");
lcd.setCursor(0, 1);
lcd.print(" Gas Leaking ! ");
SetAlertWater_and_Gas();
}
else {
digitalWrite(buzzer, LOW);
digitalWrite(fan, LOW);
lcd.clear();
}
}
void CheckWater() {
if ( digitalRead(water_sensor) == LOW ) {
digitalWrite(buzzer, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" Water Leaking ! ");
SetAlertWater();
}
else {
digitalWrite(buzzer, LOW);
lcd.clear();
}
}
void CheckGas() {
int sensorValue = analogRead(gas_sensor);
Serial.println(sensorValue);
delay(1000);
if (sensorValue > 150) {
digitalWrite(buzzer, HIGH);
digitalWrite(fan, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Gas Leaking !");
SetAlertGas();
}
else {
digitalWrite(buzzer, LOW);
digitalWrite(fan, LOW);
lcd.clear();
}
}
@user55338, 👍-1
Обсуждение1 ответ
Вам следует начать поиск основной причины вашей ошибки: код, дисплей, датчик… шаг за шагом.
Проверьте, работает ли ваш дисплей, 1.) уменьшив цикл() до
void loop() {
CheckWater();
}
и 2.) изменить
void CheckWater() {
if ( digitalRead(water_sensor) == LOW ) {
digitalWrite(buzzer, HIGH);
...
в
void CheckWater() {
if ( true ) {
digitalWrite(buzzer, HIGH);
...
Это позволит вам проверить, правильно ли работает ваш ЖК-дисплей. Если нет, начните искать неисправность в проводке или, возможно, вы используете другой ЖК-дисплей, который необходимо настроить в другом режиме, чем скетч из Интернета.
Если это работает, найдите причину в датчике. Вернитесь к исходному коду и переведите вход датчика дождя на низкий уровень. Если на дисплее отображается: Утечка воды! что-то с датчиком воды или его подключение к плате кажется неправильным.
попробую, спасибо, что ответили мне., @user55338
отлично. если вы прошли через это, отредактируйте свой вопрос, добавив результаты и уточнив вопрос., @RJPlog
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Кнопка двойного состояния Nextion
- mcufriend 2.4 tft мега 2560
- Взаимодействие с датчиком SSI?
- ArduinoMEGA: 64 цифровых входа вызывают случайные значения digitalRead
- ЖК-дисплей 16x2, показывающий блоки под текстом
- Печать содержимого файла SD - карты на ЖК-дисплее
- Объединение кода для нескольких датчиков в одной программе
Как узнать, что датчик дождя обнаруживает воду?, @jsotola
я проверяю это в Интернете, @user55338
на самом деле я могу обнаружить воду с помощью этого датчика, но ЖК-дисплей не может отображать «протекание воды», если я использую код, @user55338
пожалуйста, отформатируйте свой код..... выделите весь код и нажмите кнопку
{}
, @jsotolaоставьте все подключенным и загрузите эскиз ЖК-дисплея «Hello World»... это работает?, @jsotola
Я думаю, что с ЖК-дисплеем проблем быть не должно, потому что ЖК-дисплей может отображать утечку газа, когда датчик газа mq6 обнаруживает сжиженный нефтяной газ. ЖК-дисплей может отображать утечку воды и газа также, когда датчик газа mq6 и датчик дождя одновременно обнаруживают сжиженный нефтяной газ и воду. но я не знаю, почему он не может отображать утечку воды, когда датчик дождя обнаруживает воду., @user55338
Я предполагаю, что
analogRead(gas_sensor)
никогда не равен нулю, поэтому первыйif
активируется, еслиdigitalRead(water_sensor)
имеет НИЗКИЙ уровень., @Jurajда, это всегда имеет ценность, @user55338
и это проблема? что там показано "Утечка воды и газа"?, @Juraj