ARDUINO Помогите с кодом Ардуино

KAIFPRO777

✩✩✩✩✩✩✩
11 Янв 2025
2
0
Оформи код соответствующим тэгом, см. Правила
Помогите пожалуйста захотел я сделать в теплице автоматический капельный полив на Ардуино сгенерировал код нейросетью
Компоненты
Arduino nano
Реле 5 в
Датчик влажности почвы YL-69
Подключил прошил
Вот код
const int relayPin = 5; // Пин реле const int soilMoisturePin = A5; // Пин датчика влажности почвы int soilMoistureValue = 0; // Переменная для хранения значения влажности почвы int moistureThreshold = 600; // Уточните пороговое значение для вашей почвы void setup() { pinMode(relayPin, OUTPUT); // Установка пина реле как выходного Serial.begin(9600); // Инициализация последовательного монитора digitalWrite(relayPin, LOW); // Убедитесь, что реле выключено при старте } void loop() { soilMoistureValue = analogRead(soilMoisturePin); // Чтение значения с датчика Serial.print("Значение влажности почвы: "); Serial.println(soilMoistureValue); // Отладочный вывод // Проверка уровня влажности if (soilMoistureValue < moistureThreshold) { digitalWrite(relayPin, HIGH); // Включить реле, если почва сухая (HIGH) Serial.println("Почва сухая, реле включено."); } else { digitalWrite(relayPin, LOW); // Выключить реле, если почва влажная (LOW) Serial.println("Почва влажная, реле выключено."); } delay(1000); // Задержка перед
следующим считыванием
}
Но когда в мониторе порта написано почва влажная полив остановлен реле включается
Когда написано почва сухая реле реле не включается
High и low везде менял всё перерыл но не могу понять почему не работает
Помогите пожалуйста
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
633
150
C++:
const int relayPin = 5; // Пин реле
const int soilMoisturePin = A5; // Пин датчика влажности почвы
int soilMoistureValue = 0; // Переменная для хранения значения влажности почвыi
int moistureThreshold = 600; // Уточните пороговое значение для вашей почвы

void setup() {
pinMode(relayPin, OUTPUT); // Установка пина реле как выходного
Serial.begin(9600); // Инициализация последовательного монитора
digitalWrite(relayPin, LOW); // Убедитесь, что реле выключено при старте
}

void loop() {
soilMoistureValue = analogRead(soilMoisturePin); // Чтение значения с датчика
Serial.print("Значение влажности почвы: ");
Serial.println(soilMoistureValue); // Отладочный вывод
// Проверка уровня влажности
if (soilMoistureValue < moistureThreshold) {
  digitalWrite(relayPin, HIGH); // Включить реле, если почва сухая (HIGH)
  Serial.println("Почва сухая, реле включено.");
  }
  else {
    digitalWrite(relayPin, LOW); // Выключить реле, если почва влажная (LOW)
    Serial.println("Почва влажная, реле выключено.");
  }
delay(1000); // Задержка передс ледующим считыванием
}
Так-то поудобнее читать. А вообще должно все работать. Как вы подключали реле, что оно при LOW включается? Ну да ладно, при LOW включается, при HIGH выключается, значит работает. И что за реле? Модуль готовый или голое реле? А вы в правильном месте HIGH и LOW моеняли?
 
Изменено:

viktor1703

★★★✩✩✩✩
9 Дек 2021
633
150
C++:
digitalWrite(relayPin, HIGH);

digitalWrite(relayPin, LOW);
Да там всего в двух местах встречается. Странно, что-то вы не договариваете, или не так делаете. Код простейший, проблем там быть не может. Раз вы говорите, что
в мониторе порта написано почва влажная полив остановлен реле включается
написано почва сухая реле реле не включается
Значит реле работает, но как-то наизнанку, ну да ладно. А вот после
High и low везде менял
Должно, нет, обязано было заработать как вы хотите. Светодиоды на модуле реле есть, они меняют своё состояние?