Уменьшается объем скетча и перестает работать

Седой
Offline
Зарегистрирован: 19.02.2019
byte sum, sum1;// переменные для определения изменения одного из каналов
  for (byte q = 1; q < 9; q = + 1)
  { sum = sum + sost_cnal[q];
  }
  if (sum != sum1)
  {
    for ( byte w = 1; w < 9; w = w + 1)
    {
      if (sost_cnal[w] == 1)// включаем реле
      {
        digitalWrite(w, LOW);// переводим вывод в низкое состояние
      }
      else if (sost_cnal[w] == 0)//выключаем реле
      {
        digitalWrite(w, HIGH);// переводим вывод в высокое состояние
      }
    }

    sum1 = sum;
  }
  sum = 0;

В общем столкнулся с такой проблемой, есть скетч, пытаюсь доработать вставляю этот код, перестает работать и занимаемый объем памяти уменьшается с 69% до 26%

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А  где то куда вставляете?

Седой
Offline
Зарегистрирован: 19.02.2019
  long t_on, t_off, t_real; //время включения, отключения, реальное время
  byte h, m, s, h_on, m_on, h_off, m_off, can; // промежуточные переменные для вычисления времени в секундах(сразу вставлять формулу считает не коректно хз почему)on_off- переменная для устранения бага с мерцающим светодиодом
  h = time.Hours;
  m = time.minutes;
  s = time.seconds;
  t_real = h * 3600 + m * 60 + s ; // реальное время в секундах
  byte sum, sum1;// переменные для определения изменения одного из каналов
  for (byte q = 1; q < 9; q = + 1)
  { sum = sum + sost_cnal[q];
  }
  if (sum != sum1)
  {
    for ( byte w = 1; w < 9; w = w + 1)
    {
      if (sost_cnal[w] == 1)// включаем реле
      {
        digitalWrite(w, LOW);// переводим вывод в низкое состояние
      }
      else if (sost_cnal[w] == 0)//выключаем реле
      {
        digitalWrite(w, HIGH);// переводим вывод в высокое состояние
      }
    }

    sum1 = sum;
  }
  sum = 0;
  
  for (int i = 100; i < 900; i = i + 100) //цикл перебора значений времени
  {
    h_on = EEPROM.read(i + 10);// загружаем из памяти час включения, +10 поправка на ячейку в памяти
    m_on = EEPROM.read(i + 15);//загружаем из памяти минуту включения, +15 поправка на ячейку в памяти
    t_on = h_on * 3600 + m_on * 60; // время включения в секундах
    h_off = EEPROM.read(i + 20);// загружаем из памяти час выключения, +20 поправка на ячейку в памяти
    m_off = EEPROM.read(i + 25);// загружаем из памяти минуту выключения, +25 поправка на ячейку в памяти
    t_off = h_off * 3600 + m_off * 60; //время отключения в секундах
    can = i / 100 + 1;// переменная номера цифрового вывода к которому подключен канал, +1 смещение так как используется со 2-9 вывод


    if (EEPROM.read(i) == 1)//проверяем включен ли канал в меню
    {
      if (sost_cnal[i / 100] == 0) // смотрим состояние канала, если канал выключен
      {
        if (t_on <= t_real) // если время включения меньше реального то включаем канал
        {
        
          sost_cnal[i / 100] = 1;// заносим в массив значение состояния канала
        }
      }
      if (sost_cnal[i / 100] == 1) //смотрим состояние канала, если канал включен
      {
        if (t_off <= t_real && t_on >= t_real)// проверяем условие в случае когда время выключения в секундах меньше чем время включения
        {
        
          sost_cnal[i / 100] = 0;// заносим в массив значение состояния канала
        }
        if (t_on <= t_off && t_off <= t_real)// проверяем условие в случае когда время выключения в секундах больше чем время включения
        {
        
          sost_cnal[i / 100] = 0;// заносим в массив значение состояния канала
        }
      }
    }
    if (EEPROM.read(i) == 0)//проверяем выключен ли канал в меню( если во время того как канал был включен, а его отключают в меню чтоб он выключился)
    { digitalWrite(can, HIGH);// переводим вывод в высокое состояние
      sost_cnal[i / 100] = 0;// заносим в массив значение состояния канала
    }
  }

 

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

Седой пишет:

for (byte q = 1; q < 9; q = + 1)

Этот цикл никогда не закончится. Компилятор это видит и выбрасывает часть программы, что идёт после него, т.к. она всё равно никогда не будет выполняться.

Седой
Offline
Зарегистрирован: 19.02.2019

Спасибо.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

по стилистике написания пропущена q.  (q=q+1)