@radio_mus

Почему не срабатывает реле?

Здравствуйте. Планируем уехать на пару недель, хочу сделать полив для цветов. Но почему то программа не отрабатывает. Датчик влажности показания какие то невменяемые выводит на дисплей (в абсолютно сухом состоянии 1023, в мокрой салфетке около 1800, хотя иногда зашкаливает до 9980), может дело в неправильных показаниях, на которые я ориентируюсь?
Датчик влажности: FC-28
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)

int val = 0;
const int relayPin = 9;

void setup(){ 
  lcd.begin(16, 2);
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);  // установить порт как исходящий
}

void loop(){

  if (val > 0)
{
  digitalWrite(relayPin, HIGH);
  }
else
{
  digitalWrite(relayPin, LOW);
  }
  val = analogRead(0);
  lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
  lcd.print("Vlaghnost:"); // Выводим текст
  lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
  lcd.print(val);
}

Подскажите пожалуйста, что я делаю не так?
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
@radio_mus Автор вопроса
Вопрос решился, тем, что переключил влагомер на цифровой вход ("0" при влажной почве и "1" при сухой).
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)

int val = 0;
const int relayPin = 9;

void setup(){ 
  lcd.begin(16, 2);
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT); 
}

void loop(){

  if (val != 0)
{
  digitalWrite(relayPin, HIGH);
  }
else
{
  digitalWrite(relayPin, LOW);
  }
  val = digitalRead(8);
  lcd.setCursor(0, 0); 
  lcd.print("Vlaghnost:");
  lcd.setCursor(0, 1); 
  lcd.print(val);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Tomasina
@Tomasina
Инженер-разработчик
val = analogRead(A0);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы