Переменные постоянно сбрасываются

Nailoren
Offline
Зарегистрирован: 30.10.2018
int sostOsv;
int sostObogrev;

if (input_string=="Off1"){digitalWrite(Rel1, LOW);sms.SendSMS(n1, "Otkluchen svet");memset(n,0,20);sostOsv = 0;}
if (input_string=="Off2"){digitalWrite(Rel2, LOW);sms.SendSMS(n1, "Otkluchen obogrev");memset(n,0,20);flag=1;sostObogrev = 0;}
if (input_string=="On1"){digitalWrite(Rel1, HIGH);sms.SendSMS(n1, "Vkluchen svet");memset(n,0,20);sostOsv = 1;}
if (input_string=="On2"){digitalWrite(Rel2, HIGH);sms.SendSMS(n1, "Vkluchen obogrev");memset(n,0,20);flag=0;sostObogrev = 1;}
if (input_string=="T"){sms.SendSMS(n1, sendsms);memset(n,0,20);}
if (input_string=="sost")
{
  if(sostObogrev == 0 and sostOsv == 0){
    sms.SendSMS(n1, "Otkluchen svet, Otkluchen obogrev");
    memset(n,0,20);
  }
  if(sostObogrev == 1 and sostOsv == 0){
    sms.SendSMS(n1, "Otkluchen svet, Vkluchen obogrev");
    memset(n,0,20);
  }
  if(sostObogrev == 0 and sostOsv == 1){
    sms.SendSMS(n1, "Vkluchen svet, Otkluchen obogrev");
    memset(n,0,20);
  }
  if(sostObogrev == 1 and sostOsv == 1){
    sms.SendSMS(n1, "Vkluchen svet, Vkluchen obogrev");
    memset(n,0,20);
  }
}

Здравствуйте форумчане. Вообщем собираю сборку для умного дома и при запросе состояния реле, приходит один и тот же ответ, независимо от того, включено то или иное реле или отключено. Как сделать так, чтобы переменные sostOsv и sostObogrev запоминались?

Nailoren
Offline
Зарегистрирован: 30.10.2018

Сначала сетовал на memset, но попробовал убрать и ничего не изменилось

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

либо сделать эти переменные static, либо вынести их в глобальные

b707
Offline
Зарегистрирован: 26.05.2017

Надо код выкладывать полностью.

Если все что выложено выше - находится внутри процедурфы loop() или какой-то другой, то переменные будут сбрасываться, они же при каждом запуске loop  создаются заново в строке 1 и 2

Читайте что такое глобальные или статические переменные.

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Nailoren пишет:

Сначала сетовал на memset

Надо запомнить этот шедевр.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DIYMan пишет:

Nailoren пишет:

Сначала сетовал на memset

Надо запомнить этот шедевр.

Ну, а чо, если мемсет не той системы попался? Бывает.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DIYMan пишет:

Nailoren пишет:

Сначала сетовал на memset

Надо запомнить этот шедевр.

ты еще запомни, если отправляешь переменную n1, то мемсетом надо обязательно чистить какую-то таинственную n.