Уменьшается объем скетча и перестает работать
- Войдите на сайт для отправки комментариев
Чт, 21/02/2019 - 22:14
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%
А где то куда вставляете?
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;// заносим в массив значение состояния канала } }Этот цикл никогда не закончится. Компилятор это видит и выбрасывает часть программы, что идёт после него, т.к. она всё равно никогда не будет выполняться.
Спасибо.
по стилистике написания пропущена q. (q=q+1)