Ви не увійшли.

система що запускає полив відповідно до вологості грунту
проблема: реле запускається ти виключається моментально безкінечно до поки vologist <=300
int polyv = 1;
unsigned long last_time;
#define sensor A0
#define vbochku A1
#define zbochki A2
void setup() {
  Serial.begin(9600);
pinMode(sensor, INPUT);
pinMode(vbochku, OUTPUT);
pinMode(zbochki,OUTPUT);
}
void loop() {
digitalWrite(vbochku, HIGH);
digitalWrite(zbochki, HIGH);
int vologist = analogRead(sensor);
Serial.println(vologist);
switch(polyv) {
  case 1:
  if (vologist <=300) {
    digitalWrite(vbochku, LOW);
   last_time = millis();
   polyv = 2;
  }
  break;
  case 2:
  if(millis() - last_time >= 5000) {
    digitalWrite(vbochku, HIGH);
    polyv = 3;
    }
  break;
  case 3:
   last_time = millis();
   digitalWrite(zbochki, LOW);
   polyv = 4;
  break;
  case 4:
   if(millis() - last_time >= 5000) {
   digitalWrite(zbochki, HIGH);
   polyv = 0;
   }
   break;
}
}
Неактивний

Схема де?

г0cть пише:Схема де?
для чого? все ж і з коду понятно, і проблема в ньому
Вангую що у вас реле живиться від ардуіни і коли воно спрацьовує ардуіна перезавантажується. Якщо це не так - давайте схему, що і куди підключено, яке реле, блок живлення і т.д. ...

Проблема здесь:
polyv = 0;

Проблема здесь:
polyv = 0;
И в чем именно? 
По вышеприведенному коду реле включится и тут же выключится один раз, а ТС утверждает что это происходит бесконечно

Ни кого не напрягает - digitalWrite(А1, HIGH); ?
Поначалу напрягло, но симуляторы типа протеуса и вовки успокоили. Одинаковов работают что с А1 что с 15. Хотя может в реальном железе это и не так. Но ТС (судя по его молчанию) это уже наверное вообще не напрягает

Кстати эти две строки из лупа нужно бы перенести в сетап

На вокви реле с активацией по HIGH, так что HIGH<>LOW
после запуска скетча можно ткнуть на датчик и менять показания.
https://wokwi.com/projects/377019990555021313
#define sensor A0
#define vbochku A1
#define zbochki A2
uint8_t polyv = 1;
uint16_t vologist = 0;
uint32_t last_time;
void setup() {
  Serial.begin(19200);
  pinMode(sensor, INPUT);
  pinMode(vbochku, OUTPUT);
  pinMode(zbochki, OUTPUT);
  digitalWrite(vbochku, LOW);
  digitalWrite(zbochki, LOW);
}
void loop() {
  vologist = analogRead(sensor);
  switch (polyv) {
  case 1:
    Serial.println("case1 fired");
    if (vologist <= 300) {
      digitalWrite(vbochku, HIGH);
      polyv = 2;
      last_time = millis();
    }
    break;
  case 2:
    Serial.println("case 2 fired");
    if (millis() - last_time >= 5000) {
      digitalWrite(vbochku, LOW);
      polyv = 3;
    }
    break;
  case 3:
    Serial.println("case 3 fired");
    digitalWrite(zbochki, HIGH);
    polyv = 4;
    last_time = millis();
    break;
  case 4:
    Serial.println("case 4 fired");
    if (millis() - last_time >= 5000) {
      digitalWrite(zbochki, LOW);
      polyv = 1;
    }
    break;
  }
  Serial.println(vologist);
  Serial.println(polyv);
  Serial.println(millis() - last_time);
  delay(1000);
}Неактивний

А зачем там датчик температуры?

там нет датчика влажности
можно было взять простой потенциометр

Антончик пише:г0cть пише:Схема де?
для чого? все ж і з коду понятно, і проблема в ньому
Вангую що у вас реле живиться від ардуіни і коли воно спрацьовує ардуіна перезавантажується. Якщо це не так - давайте схему, що і куди підключено, яке реле, блок живлення і т.д. ...
я вибачаюсь, але справді не особо маю часу і вмінь малювати схему, але можу привести ось це:
це мій старий код який я писав з такою ж метою(прийшлося тоді взяти перерив на декілька місяців) і він працює так як повинний
unsigned long last_time;
byte state;
int sensor = A0;
int vbochku = A1;
int zbochki = A2;
void setup() {
  Serial.begin(9600);
pinMode(sensor, INPUT);
pinMode(vbochku, OUTPUT);
pinMode(zbochki, OUTPUT);
}
void loop() {
int result = analogRead(sensor);
 Serial.println(result);
 digitalWrite(vbochku, HIGH);
 digitalWrite(zbochki, HIGH);
if (result <= 300) {
  last_time = millis();
  state = 0;
};
switch (state) {
  case 0:
  digitalWrite(vbochku, LOW);
    if (millis() - last_time >= 5000) {
    digitalWrite(vbochku, HIGH);
    last_time = millis();
    state = 1;
  }
  break;
  case 1:
  digitalWrite(zbochki, LOW);
  
  if (millis() - last_time >= 5000) {
    digitalWrite(zbochki, HIGH);
    state = 2;
  }
  break;
  
}
}
тепер прошу лише допомогти з тим чому не працює код який як на мене фактично аналогічно, але наступний код я вже писав після перериву і незнаючи що в мене залишився старий
він трохи відрізняється (в попередній версії були трабли з часом) він працює добре, за винятком того що всі 5 секунд часу які ардуїно подає сигнал він занадто малий і вистачає тільки щоб ледь засвітити світлодіод неначе подається шим сигнал
byte polyv = 0;
unsigned long last_time;
byte sensor = A0;
byte vbochku = A1;
byte zbochki = A2;
void setup() {
  Serial.begin(9600);
pinMode(sensor, INPUT);
pinMode(vbochku, OUTPUT);
pinMode(zbochki,OUTPUT);
}
void loop() {
digitalWrite(vbochku, HIGH);
digitalWrite(zbochki, HIGH);
int vologist = analogRead(sensor);
Serial.println(vologist);
switch(polyv) {
  case 0:
    if (vologist <=300) {
     last_time = millis();
     polyv = 1;
     }
  break;
  case 1:
   digitalWrite(vbochku, LOW);
    if(millis() - last_time >= 5000) {
     digitalWrite(vbochku, HIGH);
     last_time = millis();
     polyv = 2;
    }
  
  break;
  case 2:
   digitalWrite(zbochki, LOW);
    if(millis() - last_time >= 5000) {
     digitalWrite(zbochki, HIGH);
     polyv = 0;
    }
  break;
}
}
Неактивний

гоcть пише:Проблема здесь:
polyv = 0;
И в чем именно?
По вышеприведенному коду реле включится и тут же выключится один раз, а ТС утверждает что это происходит бесконечно
бесконечно это происходило потому что я допутил ошибку с временем, но там другая проблема, если можете помочь посмотрите пожалуйста на этой теме мой ответ на коментарий другого учасника, просто чтобы не писать дважды
Неактивний

renoshnik пише:Ни кого не напрягает - digitalWrite(А1, HIGH); ?
Поначалу напрягло, но симуляторы типа протеуса и вовки успокоили. Одинаковов работают что с А1 что с 15. Хотя может в реальном железе это и не так. Но ТС (судя по его молчанию) это уже наверное вообще не напрягает
обьясните что не так пожалуйста, и по поводу не коректной работы в целом я ответил одному учаснику посмотрите пожалуйста, чтобы не писать дважды
Неактивний