Здравствуйте!
Пишу дорожку громкости звука на ардуине нано, и столкнулся с проблемой: почему-то не могу нормально изменять значение переменной, она постоянно сбрасывается. Понимаю, звучит очень глупо, и чувствую я себя так-же, но реально не понимаю в чем проблема.
Собственно кусок кода, в котором проблема:
Serial.print(ls);
Serial.print(" ");
Serial.print(l_maxval);
if (ls > l_maxval) {
l_maxval = 7;
} else {
//l_maxval = l_maxval * 0.995;
//l_maxval = constrain(l_maxval, V_CUT, 2500);
}
Serial.print(" ");
Serial.println(l_maxval);
в мониторе порта вижу следующее:
Переменная глобальная, объявлена в самом начале,
int l_maxval = 0;
и более нигде не используется, в остальных местах специально закомментировал. Т.е она меняется, но в конце loop() почему-то сбрасывается. Есть подозрения что дело в памяти, т.к сбрасываться она может не только на 0, но и на степени двойки, например 255(знаю что не 256, но подозрительно близко и стабильно), а при смене типа переменной на float сбрасывается только на 2. Но загрузчик на память не жалуется:
Скетч использует 9036 байт (29%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 471 байт (22%) динамической памяти, оставляя 1577 байт для локальных переменных. Максимум: 2048 байт.
int:
float:
Помогите, пожалуйста, понять в чем вообще может быть проблема, и куда копать/смотреть, подобные сбросы переменных просто так, или из-за (возможно) перегрузки памяти не нагуглил.
весь код: #include <FastLED.h>#define NUM_LEDS 50 #define DATA_PIN 10 #de - Pastebin.com