Добрый день. Нужно помощь в дописании кода. Суть. На аналоговый вход подключен резистивный делитель с тремя кнопками SB1, SB2, SB3. Кнопка SB1 включает модуль, SB2 и SB3 включают и отключают нагрузку1 и нагрузку2 независимо друг от друга при условии, что модуль включен. Должно быть обязательное условие, что при выключении модуля нагрузка1 и нагрузка2 должны быть выключены. На приведенном коде при включении модуля нагрузка 1 и 2 включается и выключается как нужно, но при выключении модуля нагрузка 1 и 2 остается в прежнем состоянии и на нажатие кнопок не реагирует, пока снова не активировать включение модуля.
</>
int Ponoff=0;
int vapor=0;
int ozon=0;
int data;
int data1;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() {
//…проверяем включено ли питание блока
data=analogRead(A0);
data1=digitalRead(3);
//int dan=digitalWrite(2);
// int dan1=digitalWrite(5);
{if(Ponoff=0 && data>=1000 )
{
digitalWrite(3,!digitalRead(3)); Ponoff=1;
delay (300);}
if(Ponoff=1 && data>=1000 )
{
digitalWrite(3,!digitalRead(3)); Ponoff=0;
delay (150);}
}
//…нагрузка1
{
//int data1=digitalRead(3);
if(vapor=0 && data>=635 && data<=650 && data1 == HIGH )
{
digitalWrite(2,!digitalRead(2)); vapor=1;
delay (300);}
if(vapor=1 && data>=635 && data<=650 && data1 == HIGH )
{
digitalWrite(2,!digitalRead(2)); vapor=0;
delay (150);}
}
//…нагрузка2
{
//int data1=digitalRead(3);
if(ozon=0 && data>=300 && data<=350 && data1 == HIGH )
{
digitalWrite(5,!digitalRead(5)); ozon=1;
delay (300);}
if(ozon=1 && data>=300 && data<=350 && data1 == HIGH )
{
digitalWrite(5,!digitalRead(5)); ozon=0;
delay (150);}
}
// при наличии HIGH на D3, D2 и D5 управляются как нужно
// но, если D2 или D5 были в состоянии HIGH а на D3 появляется сигнал LOW
// то D2 и D5 остаются в состоянии HIGH и не изменяют свое состояние при нажатии кнопок,
// а нужно, чтобы при состоянии D3 сигналы на D2 и D5 переходили в состояние LOW
// в независимости от того, что на них было раньше LOW или HIGH
/// ???
}