Нужна помощь дописать код

Добрый день. Нужно помощь в дописании кода. Суть. На аналоговый вход подключен резистивный делитель с тремя кнопками 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
/// ???

}

Нет, помощь тебе нужна, чтоб научиться читать по-русски как правильно вставлять код. Тебе надлежит искать исполнителя в разделе платной помощи.

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
/// ???

}

специально для тех, кто не умеет писать говнокоды и у кого не говноязык.

Не дерзите. Будте сдержанней.
Попробуйте на бумажке простыми словами алгоритм составить: что,зачем,при каких условиях. Сразу всё станет легко и просто.

Кто писал этот код? Он даже компилироваться не сможет, не то что работать.

И, еще - повторите тему “операторы и условия сравнения”.

= присваивание
== сравнение на равенство

‘’'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
/// ???

}```

спасибо всем за помощь. а точнее за ее отсутствие. проблему решил сам.

Спасибо не булькает. Нальёшь?

Для Вас, что ли?

Пидец ты тугой.

Ничего ты не решил.
В коде как была куча ошибок, так и осталась. В большинстве условий IF перепутано “=” и “==”

1 лайк

Главное, что вопрос решен. САМ решил :sweat_smile:

2 лайка

“Нет человека - нет проблем” :smiley:

1 лайк

Ну, почему, например, “забить на это дело и пойти пить пиво” - чем не решение проблемы?

3 лайка
int Ponoff=0;
int vapor=0;
int ozon=0;
int data;
int data1;

void setup() 
{
pinMode(2, OUTPUT);
pinMode(3,OUTPUT); 
pinMode(4,OUTPUT);
}

void loop()
 
{
  
  
  
  
  //.........проверяем включено ли питание блока 
 data=analogRead(A0);
 data1=digitalRead(3);

  {if(Ponoff=0 && data>=1000 )
  {
    digitalWrite(3,!digitalRead(3)); Ponoff=1;
  delay (250);}
  
  if(Ponoff=1 && data>=1000 )
    {
      digitalWrite(3,!digitalRead(3)); Ponoff=0;
  delay (250);}
 }

//................вапор
 {

  if(vapor=0 && data>=637 && data<=643 && data1 == HIGH )
  {
    digitalWrite(2,!digitalRead(2)); vapor=1;
  delay (250);} 
  
  
  if(vapor=1 && data>=637 && data<=643 && data1 == HIGH )
    {
      digitalWrite(2,!digitalRead(2)); vapor=0;
  delay (250);}


  else
 { if (data1 == 0)
 {digitalWrite(2,LOW);}
 }
 }

//..............озон

{
 int vap=digitalRead(2);
  if(ozon=0 && data>=318 && data<=323 && data1 == HIGH && vap ==1 )
  {
    digitalWrite(4,!digitalRead(4)); ozon=1;
  
  

  delay (250);} 
   
  
  
  if(ozon=1 && data>=318 && data<=323 && data1 == HIGH && vap ==1 )
    {
      digitalWrite(4,!digitalRead(4)); ozon=0;
      


 
  delay (250);}
   
   
  

else
 { if (data1 == 0 or vap ==0)
 {digitalWrite(4,LOW);}
 }
}
}

И опять то же самое. Братан, лучше пивка попей, не твое это :joy:

код рабочий. проверено. тема закрыта

Драндулет на деревянных колесах тоже транспорт, но на дороги общего пользования на нем лучше не выезжать.