Помогите ужать размер скетча, для Atmega8, Bootloader отключен , что мог то сократил код. А все равно большой ( устройство обычный таймер с движком от батарейки. таймер на 5 минут, далее просто остановка движка.) Сейчас место занимает около 8-9 кб , а нужно 8 кб/ Что делать ? что можно сократить , удалить?
простой таймер? - там внутри какая-то игрушка, а не таймер. Таймер - это 10 строк - отсчитал время. выключил нагрузку. ВСЕ! Серьезно копаться в этом...неохота Навскидку сразу видно, что вывод минут на дисплей сделан очень неэффективно - через класс String и выборкой цифр из строки??? - ужас А для вывода минут, где в первых разрядах нули - написана отдельная функция - ужас-ужас Что помешало взять обычное число и поделить на разряды в виде целых чисел, без стрингов вообще? Избавьтесь от String - сразу выиграете килобайта два
И правда, убрали String . и код почти в 2 раза уменьшился)). код внизу. А в целом String , он для чего? . На сколько знаю, это для слияние , удобно для текста буквы, фразы. Или полезнее для цифр ? Код (C++): void led_min(int n, byte type) { ListDisp[0] = n%10; n= n/10; ListDisp[1] = n%10; n= n/10; ListDisp[2] = n%10; n= n/10; ListDisp[3] = n%10; if (type == 5) { ListDisp[4] = 11; ListDisp[5] = 5; } else if (type == 10) { ListDisp[4] = 11; ListDisp[5] = 1; } else if (type == 0) { ListDisp[3] = 11; ListDisp[4] = 0; ListDisp[5] = 0; } else if (type == 255) { ListDisp[2] = 11; ListDisp[3] = 13; ListDisp[4] = 13; ListDisp[5] = 12; } tm1637.display(ListDisp, ListDispPoint); if (type == 255) delay(500); else delay(5000); }
это библиотека для работы со строками. В неё заложены полезные процедуры работы строками в понятном для неискушенного байтами программиста виде. Полезная штука для своих задач