Почему ЖК-дисплей 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();
  }
}

, 👍-1

Обсуждение

Как узнать, что датчик дождя обнаруживает воду?, @jsotola

я проверяю это в Интернете, @user55338

на самом деле я могу обнаружить воду с помощью этого датчика, но ЖК-дисплей не может отображать «протекание воды», если я использую код, @user55338

пожалуйста, отформатируйте свой код..... выделите весь код и нажмите кнопку {}, @jsotola

оставьте все подключенным и загрузите эскиз ЖК-дисплея «Hello World»... это работает?, @jsotola

Я думаю, что с ЖК-дисплеем проблем быть не должно, потому что ЖК-дисплей может отображать утечку газа, когда датчик газа mq6 обнаруживает сжиженный нефтяной газ. ЖК-дисплей может отображать утечку воды и газа также, когда датчик газа mq6 и датчик дождя одновременно обнаруживают сжиженный нефтяной газ и воду. но я не знаю, почему он не может отображать утечку воды, когда датчик дождя обнаруживает воду., @user55338

Я предполагаю, что analogRead(gas_sensor) никогда не равен нулю, поэтому первый if активируется, если digitalRead(water_sensor) имеет НИЗКИЙ уровень., @Juraj

да, это всегда имеет ценность, @user55338

и это проблема? что там показано "Утечка воды и газа"?, @Juraj


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