прошу помощи с кодом, не корректно работает цифровой выход

xentry

✩✩✩✩✩✩✩
11 Май 2026
7
0
прошу помощи, не понимаю в чем проблема, на 4 пине появляется 5в когда нужно, но не пропадает питание когда нужно без перезагрузки ардуино...
прошу ткните пожалуйста где я накосячил, если еще в коде есть косяки прошу тоже показать если вам будет не сложно
C++:
int val = 10;   
int res = 10;
int res2 =10;

void setup() {
  // put your setup code here, to run once:
 //Serial.begin(115200);
pinMode(9, OUTPUT);//вентиляция
digitalWrite(9, LOW);
pinMode(10, OUTPUT);//обогрев
digitalWrite(10, LOW);
pinMode(4,OUTPUT);
digitalWrite(4,LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
val = analogRead(15);

//блок чтения
//обогрев
if (val >= 990) res2=230;
else if (val >= 930) res2=170;
else if (val >= 855) res2=80;
else if (val <= 850) res2=10; //выключение при вентиляции

//вентиляция
if (val <=200 || val >=840 ) res = 10;
else if (val >= 700) res=60;
else if (val >= 450) res=130;
else if (val >= 220) res=200;
//выключение при обогреве и сбое питания
if (val >=855) {digitalWrite(4, HIGH);}
else if (val <=854) {digitalWrite(4, LOW);}
//блок вывода
//вентиляция
if (res == 200){analogWrite(9, 140);}
else if (res == 130){analogWrite(9, 120);}
else if (res == 60){analogWrite(9, 60);}
else if (res == 10){digitalWrite(9, LOW);}
//обогрев
if (res2 == 230){analogWrite(10, 170);}
else if (res2 == 170){analogWrite(10, 80);}
else if (res2 == 80){analogWrite(10, 20);}
else if (res2 == 10){digitalWrite(10, LOW);}

//Serial.println("sek"); Serial.println(res); Serial.println(res2); Serial.println(val); delay(1000);
}
 

VictorArx

★★★✩✩✩✩
22 Мар 2021
702
106
В самом начале кода наверно надо пин 4 задекларировать, типа int, потом уже назначать как выход.