там мой 707-ой тёзка обещал этот же функционал уложить в 1000 строк
посмотрим, вдруг уложит
я обещал за пятерку советы по оптимизации. Переписать твой код обойдется дороже, меньше чем за пятнашку не возьмусь. И да, если не уложусь в 1000 строк - денег не возьму. Но нужен код.
То b707, ничего не буду чистить, каждый имеет право на свое мнение. Мне, например, прошивки без исходников тоже нихрена не нравятся. Я тоже считаю, что Ардуина - открытая платформа.
Да что там укладывать. Берем пишем 10 строк в одной строке и количество строк уменьшится. Напишите библиотеки и Include Вот и основной скетч "похудеет". Но фишка в том на каком стиле писать будете - если Ардуино-Си это одно. а если с классами шаблонами то другое. Ведь почему в инете дерьмокод, так он сделан дерьмокодерами и для дерьмокодеров. В идеальных кодах для таких программистах просто не хватает основного копонента.
Функторы придуманы, чтобы не париться с указателями :) самоделкиным всё это, разумеется, не нужно. нужно суровым энтерпрайзерам, где по 20 человек в команде на одном репо, и у каждого зп от $4500 начинается, вот для чего они нужны.
не хватит терпения прочитать по причне огромного размера :)
почти что так
когда люди видят такой код
xTag[1] = basColorR;
xTag[0] = basColorG;
xTag[2] = basColorB;
//переберём цвета (RGB)
#ifdef __NeoPixel
tripix = pix * 3;
CurPix = Cur + tripix;
for (uint8_t i = 0; i < 3; i++)
{ if ((CurPix[i]) < (xTag[i])) //определимся надо уменьшать или увеличивать
//если до цели больше чем один шаг, делаем шаг
{ if (((xTag[i]) - (CurPix[i])) > (shagx[i])) {
CurPix[i] = (CurPix[i]) + (shagx[i]);
LocalFlajok = false;
}
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
))
Там пришлость делать кучу всяких ухищрений, чтобы успевало просчитываться табло для обеспечения плавности. И оперативу тоже пришлось оптимизировать, ибо два раза буферировать табло уже не влазило, а надо ведь ещё синусоиды хранить для синтеза звука.
Звук никак не совмещается с одновременным переливом.
Всё состоит из вот таких простых мелких заморочек.
не хватит терпения прочитать по причне огромного размера :)
почти что так
когда люди видят такой код
xTag[1] = basColorR;
xTag[0] = basColorG;
xTag[2] = basColorB;
//переберём цвета (RGB)
#ifdef __NeoPixel
tripix = pix * 3;
CurPix = Cur + tripix;
for (uint8_t i = 0; i < 3; i++)
{ if ((CurPix[i]) < (xTag[i])) //определимся надо уменьшать или увеличивать
//если до цели больше чем один шаг, делаем шаг
{ if (((xTag[i]) - (CurPix[i])) > (shagx[i])) {
CurPix[i] = (CurPix[i]) + (shagx[i]);
LocalFlajok = false;
}
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
))
Там пришлость делать кучу всяких ухищрений, чтобы успевало просчитываться табло для обеспечения плавности. И оперативу тоже пришлось оптимизировать, ибо два раза буферировать табло уже не влазило, а надо ведь ещё синусоиды хранить для синтеза звука.
Звук никак не совмещается с одновременным переливом.
Всё состоит из вот таких простых мелких заморочек.
а зачем его читать, наше дело скомпилировать и залить )))
интересно, как один единственный сегмент может показать знак градуса?
а на второй мой вопрос вы уже частично ответили - в чем заключается плавный перелив.
Если я правильно понял этот кусочек кода, CurPix[i] - цвет пикседя в старой картинке, например вывод времени, а xTag[i] - цвет в новой картике, например при выводе температуры. А плавный переход заключается в изменении от первого значения до второго по шагам.
здесь на 6 секунде дисплей показывает "10.ПН" - что это значит? И почему "10" одним цветом, а непонятные буквы другим?
Ну и вообще это видео, имхо, более показательно, чем первое. Если запустить его в замедленном повторе - видно как работает "плавный переход". ИМХО, задумка с переходом интересная, но уж больно много паразитно засвеченных пикселей
они находятся в жилой комнате или гдето в коридоре ?
я понимаю, о чем вы. Картинка все время прыгает и мешает спать. Но вы боритесь с причиной, а не со следствием. Причина в том, что часы слишком перегружены дополнительной инфой. Время, дата. давление, температура с 10 датчиков??? - имхо. это бред И все это часы прокручивают каждые 2-3 секунды, причем даже глухой ночью.
Я себе собрал такие часы (фото не мое)
они выводят только время и в темноте приглушают яркость на саый минимум. Даже даты нет. Итог - спать совершенно не мешают.
Но вы боритесь с причиной, а не со следствием. Причина в том, что часы слишком перегружены дополнительной инфой.
нормальненькие красивые у вас получились
Куча инфы выводится только днём и вы правильно заметили, это уже перебор.
когда выключаешь свет, часики приглушаются и начинают показывать только время, при том перелив начинает происходить оооччень медленно, буквально целых 30 секунд
Просто когда я это сделал речь о всяких температурах ещё не шла, был только календарь.
А когда сделал, то стало понятно, что это ещё и красивенько.
И уж потом добавились градусники и барометр, ну как без них ?
да че там, шрифт спер у какого-то индийца :) Типичные офисные часы. Разница от покупных только в том, что мои синхронизируются с инетом и не теряют время при пропадении электричества.
вся программа - примерно 20 строк для 8266 и 30 строк для СТМ32 :)
да че там, шрифт спер у какого-то индийца :) Типичные офисные часы. Разница от покупных только в том, что мои синхронизируются с инетом и не теряют время при пропадении электричества.
вся программа - примерно 20 строк для 8266 и 30 строк для СТМ32 :)
да, синхронизация это хорошо
как бы и к моим присобачить ?
Портировал бы на ESP8266 , но тогда со звуком беда. там максимум 5-битный звук можно получить
Можно на ESP32, но она пока что только едет из китая.
Ещё напрягает провод до уличного градусника.
Вообще уличный градусник это реально хорошая функция
не хватит терпения прочитать по причне огромного размера :)
почти что так
когда люди видят такой код
xTag[1] = basColorR;
xTag[0] = basColorG;
xTag[2] = basColorB;
//переберём цвета (RGB)
#ifdef __NeoPixel
tripix = pix * 3;
CurPix = Cur + tripix;
for (uint8_t i = 0; i < 3; i++)
{ if ((CurPix[i]) < (xTag[i])) //определимся надо уменьшать или увеличивать
//если до цели больше чем один шаг, делаем шаг
{ if (((xTag[i]) - (CurPix[i])) > (shagx[i])) {
CurPix[i] = (CurPix[i]) + (shagx[i]);
LocalFlajok = false;
}
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
А че не так в коде? Нормальный вполне. Разве что временных переменных для текущих элементов массива добавить для оптимизации. Если компилятор сам не сообразит. Или через указатели, или массив структур, или выкинуть массив и раскрыть цикл, шо там тех 3-х элементов. В общем нормальный код, но можно покрутить если есть желание. Главное чтоб у Вас желание не пропало, а писать код доступный каждому идиоту - прямой путь в идиоты. И всеравно найдется еще тупей, который "нипанимаю!" ))
Портировал бы на ESP8266 , но тогда со звуком беда. там максимум 5-битный звук можно получить
читал я вашу ветку на радиокоте - вы там пишете, что у ЕСП8266 нет ШИМ. Откуда вы это взяли. это ерунда. У ЕСП ШИМ на всех ногах. кроме. если не ошибаюсь. 16-й. Частота ШИМ настраивается, то ли до 32 КГц, толи до 64х. В любом случае весь звуковой диапазон покрывает.
А че не так в коде? Нормальный вполне.
.....
идиоты. И всеравно найдется еще тупей, который "нипанимаю!" ))
о том и речь, что в коде совершенно ничего сложного
Он не ценен мыслями.
Никакой пользы для обучения.
Он ценен только как готовый товар, в который вложена куча времени.
ЕСП ШИМ на всех ногах. кроме. если не ошибаюсь. 16-й. Частота ШИМ настраивается, то ли до 32 КГц, толи до 64х. В любом случае весь звуковой диапазон покрывает.
шим там софтовый, частоту больше 1кГц держит совершенно не стабильно.
Вообщем знающие люди говорят что для звука не годится.
Там для звука есть I2S, но он требует внешний ЦАП, либо если использовать его как ШИМ то это только 5 бит
о том и речь, что в коде совершенно ничего сложного
но все-таки 6тыс строк для таких часов - нереально много. Вот сейчас говорю абсолютно спокойно. без глума - я абсолютно уверен, что если не до 1000 строк - то хотя бы раза в 2 ваш код точно можно сократить. И вообще вам следовало бы этим заняться - тогда не придется трахаться с запхзиванием жалких тысячи байт в ЕЕПРОМ
Дак Вы решаете заодно попытку защитить интелектуальную собственность на опенсорс платформе. Ну возможно, но боюсь что тогда и хек не стоит публиковать.
но все-таки 6тыс строк для таких часов - нереально много. Вот сейчас говорю абсолютно спокойно. без глума - я абсолютно уверен, что если не до 1000 строк - то хотя бы раза в 2 ваш код точно можно сократить. И вообще вам следовало бы этим заняться - тогда не придется трахаться с запхзиванием жалких тысячи байт в ЕЕПРОМ
строки то конечно можно уменьшить
поубирать пустые разделительные строки, комменты, ну там дефайны лишние
Ну там может быть реального кода ещё отжать строк 100.
Я вас уверяю в коде нет или почти нет лишних повторений.
Есть немного только там, где требуется скорость работы. Возможно и можно такое подсократить если посмотреть на сколько реально станет медленнее и может быть это допустимо.
Но всё это крохи. И полкилобайта не освободить.
шим там софтовый, частоту больше 1кГц держит совершенно не стабильно.
Вообщем знающие люди говорят что для звука не годится.
ну не знаю, я по внутренностям 8266 не специалист, использую его только через ардуино. Но что-то как-то не верится, неужели там нет таймеров?
Если не подходит 8266 - возьмите СТМ32. Уж там с таймерами и с ШИМ-ом все в порядке. Кроме того, там есть ДМА - а значит можно одновременно выводить картинку на пиксели и звук
об этом много говорено
Кекс публиковать не боюсь. Чем его декомпилировать проще новый написать.
А в готовом виде он непригоден для серийного производства.
Знаете сколько народу повторило мои часики ?
Не более двух десятков
Много строк или нет - вопрос сильно относительный. Делал контроллер аквариума с графическим многооконным интерфейсом, тачскрином, 8 каналами управления (почти все индивидуальные там насос, сям подсвет с ШИМ), RTC, несколько термометров, серврпривод кормушки, ИК ДУ и может еще что забыл - 3000 строк плюс либ на глаз пару тысяч будет. Собирается в 27кБ. С таким функционалом часики тоже займут прилично. Понятно что можно все в либы запихнуть и в 20 строк вызовы в скетче вписать. Надо в се в сумме рассматривать.
строки то конечно можно уменьшить
поубирать пустые разделительные строки, комменты, ну там дефайны лишние
не говорите ерунды, это все никак не влияет на размер кода, я не об этом. Оптимизация кода - это переписать код и убрать все повторы, правильно организовать данные. чтобы обрабатывать их пакетом. Избавится от неэффективных конструкция. например использования типа float и класса String
Я недавно одному заказчику оптимищировал код - так только одно избавление от String уменьшило размер прошивки почти вдвое.
Цитата:
Ну там может быть реального кода ещё отжать строк 100.
Я вас уверяю в коде нет или почти нет лишних повторений.
а я вас уверяю, что вы очень сильно ошибаетесь. Вы этих повторов просто не видите
ну не знаю, я по внутренностям 8266 не специалист, использую его только через ардуино. Но что-то как-то не верится, неужели там нет таймеров?
Если не подходит 8266 - возьмите СТМ32. Уж там с таймерами и с ШИМ-ом все в порядке. Кроме того, там есть ДМА - а значит можно одновременно выводить картинку на пиксели и звук
8266 это хрень в китайском стиле.
Пользователям отдаётся только свободная флэш и свободное процессорное время
и почти никакой документации о том сколько его отдаётся и когда.
И про реальную периферию очень мало инфы, я уж не говорю про то, что я на всё это гляжу сквозь ARDUINO IDE
Вообщем это китайская тайна покрытая китайским мраком.
Но тем не менее сочетание WiFi, низкой цены и простоты вхождения для 8266 почитай уникально. И часики на нем и WS2812B выглядят заманчиво за счет исключения RTC. Про нормальный звук с него - тоже сомневаюсь. Хотя ШИМ для движка в Н-мосте сделал.
неэффективных конструкция. например использования типа float и класса String
от флоата можно отказаться, но он такой удобный
от serial-a можно отказаться, он не оч нужен, но это значит с нуля писать какое-то взаимодействие с компом.
string-а нет
Вообщем на данном этапе мне показалось проще выкинуть несколько массивов в еепром, тем более что им там самое место.
Да и функционал уже практически весь реализован.
Даже вантачный таймер.
Тыкаешь по кнопке и уже пошел обратный отсчет 5 или 20 минут, тыкаешь второй раз и добавилось 5 или 20.
Наверно писал большой коллектив индусов https://www.youtube.com/watch?v=NDMaH3XqtRc
там мой 707-ой тёзка обещал этот же функционал уложить в 1000 строк
посмотрим, вдруг уложит
там мой 707-ой тёзка обещал этот же функционал уложить в 1000 строк
посмотрим, вдруг уложит
я обещал за пятерку советы по оптимизации. Переписать твой код обойдется дороже, меньше чем за пятнашку не возьмусь. И да, если не уложусь в 1000 строк - денег не возьму. Но нужен код.
Бросайте уже вдахновенна сраца. Все, что надо было ТСу ему сказали. Тему можно закрыть, я думаю, и даже посылать никаво в никуда не надо.
Бросайте уже вдахновенна сраца. Все, что надо было ТСу ему сказали. Тему можно закрыть, я думаю, и даже посылать никаво в никуда не надо.
с заданными адресами
закрывать ты сам сказал - оснований нет. Можешь потереть те мои сообщения. которые считаешь лишними. Тебе - доверяю.
b612, Ну храшо. Разбирайся.
То b707, ничего не буду чистить, каждый имеет право на свое мнение. Мне, например, прошивки без исходников тоже нихрена не нравятся. Я тоже считаю, что Ардуина - открытая платформа.
Да что там укладывать. Берем пишем 10 строк в одной строке и количество строк уменьшится. Напишите библиотеки и Include Вот и основной скетч "похудеет". Но фишка в том на каком стиле писать будете - если Ардуино-Си это одно. а если с классами шаблонами то другое. Ведь почему в инете дерьмокод, так он сделан дерьмокодерами и для дерьмокодеров. В идеальных кодах для таких программистах просто не хватает основного копонента.
Пух, ты еще функторы не освоил?
нафига изучать эту дрянь. функторы придуманы для того чтобы индусы могли программировать и зарабатывать себе на жизнь.
Не знаю. Ты ж для чего-то всю эту дрянь изучаешь, шаблоны с бесполезными лямбдами. Я и подумал, када ты нас стройными рядами к функторам поведешь.
Функторы придуманы, чтобы не париться с указателями :) самоделкиным всё это, разумеется, не нужно. нужно суровым энтерпрайзерам, где по 20 человек в команде на одном репо, и у каждого зп от $4500 начинается, вот для чего они нужны.
Столкнулся ещё с такой бедой
static uint16_t nachalyMelodij[32] EEMEM = {0, 18, .....
в еепром ложится так 00 00 12 00 ...
вроде всё нормально НО
eeprom_read_word((uint16_t*)(0)) читает 0
а
eeprom_read_word((uint16_t*)(1)) читает 0x1200
т.е путает старший байт с младшим
Как поправить ?
eeprom_read_word((uint16_t*)(1)) читает 0x1200
т.е путает старший байт с младшим
Как поправить ?
это не функция путает, а ты. У тебя значение типа word - размером 2 байта, поэтому его смещение должно быть четным
Единичку в скобках на 2 замени и подумай, почему.
Upd. А, ну все, думать не нада. :-)
Единичку в скобках на 2 замени и подумай, почему.
ему думать некогда, код набивать надо :) еще пару тысяч строк
Спасибо.
недоглядел. раньше там индекс 16-битного массива стоял теперь просто адрес
Спасибо.
так сказать, "в благодарность", можешь ответить на пару вопросов по своему проекту?
так сказать, "в благодарность", можешь ответить на пару вопросов по своему проекту?
Вапще, я в этой ветке причин для срача не вижу. Пусь нарот сам выбирает, что повторять, здешний код или с котофорума.
Дед, он сказал, что я (начинающий), этого кода не осилю, это что?, не смогу скомпилировать и залить?
конечно, всегда пожалуйста )
ок
На часах правее цифр есть еще один сегмент - горизонтальная палочка на уровне верхнего края цифры. Для чего он?
Дед, он сказал, что я (начинающий), этого кода не осилю
не хватит терпения прочитать по причне огромного размера :)
конечно, всегда пожалуйста )
ок
На часах правее цифр есть еще один сегмент - горизонтальная палочка на уровне верхнего края цифры. Для чего он?
и ещё сотни в настройках
не хватит терпения прочитать по причне огромного размера :)
когда люди видят такой код
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
))
Там пришлость делать кучу всяких ухищрений, чтобы успевало просчитываться табло для обеспечения плавности. И оперативу тоже пришлось оптимизировать, ибо два раза буферировать табло уже не влазило, а надо ведь ещё синусоиды хранить для синтеза звука.
Звук никак не совмещается с одновременным переливом.
Всё состоит из вот таких простых мелких заморочек.
не хватит терпения прочитать по причне огромного размера :)
когда люди видят такой код
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
))
Там пришлость делать кучу всяких ухищрений, чтобы успевало просчитываться табло для обеспечения плавности. И оперативу тоже пришлось оптимизировать, ибо два раза буферировать табло уже не влазило, а надо ведь ещё синусоиды хранить для синтеза звука.
Звук никак не совмещается с одновременным переливом.
Всё состоит из вот таких простых мелких заморочек.
а зачем его читать, наше дело скомпилировать и залить )))
интересно, как один единственный сегмент может показать знак градуса?
а на второй мой вопрос вы уже частично ответили - в чем заключается плавный перелив.
Если я правильно понял этот кусочек кода, CurPix[i]
-
цвет пикседя в старой картинке, например вывод времени, а xTag[i] - цвет в новой картике, например при выводе температуры. А плавный переход заключается в изменении от первого значения до второго по шагам.Это вроде вопрос 20-30 строк
а зачем его читать, наше дело скомпилировать и залить )))
огребать все заморочки с версиями библиотек и т.п.
берём SinaProg2.1.1 и нет проблем
Это вроде вопрос 20-30 строк
еще вопрос вот по этому видео
https://youtu.be/-oNX_1El7Ts
здесь на 6 секунде дисплей показывает "10.ПН" - что это значит? И почему "10" одним цветом, а непонятные буквы другим?
Ну и вообще это видео, имхо, более показательно, чем первое. Если запустить его в замедленном повторе - видно как работает "плавный переход". ИМХО, задумка с переходом интересная, но уж больно много паразитно засвеченных пикселей
еще вопрос вот по этому видео
https://youtu.be/-oNX_1El7Ts
здесь на 6 секунде дисплей показывает "10.ПН" - что это значит? И почему "10" одним цветом, а непонятные буквы другим?
все поголовно не могут понять что такое ПН, ВТ, СР, ЧТ
я удивляюсь, такое впечатление, что люди никогда не пользовались никакими календариками
хуже всего с "ВС" , все сразу думают ято это температура в цельсиях
Плавный переход придуман НЕ ДЛЯ КРАСОТЫ
вы далеко не первый
все поголовно не могут понять что такое ПН, ВТ, СР, ЧТ
:))))
а для чего?
а для чего?
они находятся в жилой комнате или гдето в коридоре ?
у вас уже есть такие часы ?
они находятся в жилой комнате или гдето в коридоре ?
я понимаю, о чем вы. Картинка все время прыгает и мешает спать. Но вы боритесь с причиной, а не со следствием. Причина в том, что часы слишком перегружены дополнительной инфой. Время, дата. давление, температура с 10 датчиков??? - имхо. это бред И все это часы прокручивают каждые 2-3 секунды, причем даже глухой ночью.
Я себе собрал такие часы (фото не мое)
они выводят только время и в темноте приглушают яркость на саый минимум. Даже даты нет. Итог - спать совершенно не мешают.
Но вы боритесь с причиной, а не со следствием. Причина в том, что часы слишком перегружены дополнительной инфой.
Куча инфы выводится только днём и вы правильно заметили, это уже перебор.
когда выключаешь свет, часики приглушаются и начинают показывать только время, при том перелив начинает происходить оооччень медленно, буквально целых 30 секунд
Просто когда я это сделал речь о всяких температурах ещё не шла, был только календарь.
А когда сделал, то стало понятно, что это ещё и красивенько.
И уж потом добавились градусники и барометр, ну как без них ?
нормальненькие красивые у вас получились
да че там, шрифт спер у какого-то индийца :) Типичные офисные часы. Разница от покупных только в том, что мои синхронизируются с инетом и не теряют время при пропадении электричества.
вся программа - примерно 20 строк для 8266 и 30 строк для СТМ32 :)
нормальненькие красивые у вас получились
да че там, шрифт спер у какого-то индийца :) Типичные офисные часы. Разница от покупных только в том, что мои синхронизируются с инетом и не теряют время при пропадении электричества.
вся программа - примерно 20 строк для 8266 и 30 строк для СТМ32 :)
как бы и к моим присобачить ?
Портировал бы на ESP8266 , но тогда со звуком беда. там максимум 5-битный звук можно получить
Можно на ESP32, но она пока что только едет из китая.
Ещё напрягает провод до уличного градусника.
Вообще уличный градусник это реально хорошая функция
не хватит терпения прочитать по причне огромного размера :)
когда люди видят такой код
то у подаляющего большинства пропадает желание что-либо там править и воообще дальше читать
А че не так в коде? Нормальный вполне. Разве что временных переменных для текущих элементов массива добавить для оптимизации. Если компилятор сам не сообразит. Или через указатели, или массив структур, или выкинуть массив и раскрыть цикл, шо там тех 3-х элементов. В общем нормальный код, но можно покрутить если есть желание. Главное чтоб у Вас желание не пропало, а писать код доступный каждому идиоту - прямой путь в идиоты. И всеравно найдется еще тупей, который "нипанимаю!" ))
Портировал бы на ESP8266 , но тогда со звуком беда. там максимум 5-битный звук можно получить
читал я вашу ветку на радиокоте - вы там пишете, что у ЕСП8266 нет ШИМ. Откуда вы это взяли. это ерунда. У ЕСП ШИМ на всех ногах. кроме. если не ошибаюсь. 16-й. Частота ШИМ настраивается, то ли до 32 КГц, толи до 64х. В любом случае весь звуковой диапазон покрывает.
делайте мобильный датчик на любом радиомодуле
.....
идиоты. И всеравно найдется еще тупей, который "нипанимаю!" ))
Он не ценен мыслями.
Никакой пользы для обучения.
Он ценен только как готовый товар, в который вложена куча времени.
Вообщем знающие люди говорят что для звука не годится.
Там для звука есть I2S, но он требует внешний ЦАП, либо если использовать его как ШИМ то это только 5 бит
о том и речь, что в коде совершенно ничего сложного
но все-таки 6тыс строк для таких часов - нереально много. Вот сейчас говорю абсолютно спокойно. без глума - я абсолютно уверен, что если не до 1000 строк - то хотя бы раза в 2 ваш код точно можно сократить. И вообще вам следовало бы этим заняться - тогда не придется трахаться с запхзиванием жалких тысячи байт в ЕЕПРОМ
Дак Вы решаете заодно попытку защитить интелектуальную собственность на опенсорс платформе. Ну возможно, но боюсь что тогда и хек не стоит публиковать.
поубирать пустые разделительные строки, комменты, ну там дефайны лишние
Ну там может быть реального кода ещё отжать строк 100.
Я вас уверяю в коде нет или почти нет лишних повторений.
Есть немного только там, где требуется скорость работы. Возможно и можно такое подсократить если посмотреть на сколько реально станет медленнее и может быть это допустимо.
Но всё это крохи. И полкилобайта не освободить.
шим там софтовый, частоту больше 1кГц держит совершенно не стабильно.
Вообщем знающие люди говорят что для звука не годится.
ну не знаю, я по внутренностям 8266 не специалист, использую его только через ардуино. Но что-то как-то не верится, неужели там нет таймеров?
Если не подходит 8266 - возьмите СТМ32. Уж там с таймерами и с ШИМ-ом все в порядке. Кроме того, там есть ДМА - а значит можно одновременно выводить картинку на пиксели и звук
Кекс публиковать не боюсь. Чем его декомпилировать проще новый написать.
А в готовом виде он непригоден для серийного производства.
Знаете сколько народу повторило мои часики ?
Не более двух десятков
Много строк или нет - вопрос сильно относительный. Делал контроллер аквариума с графическим многооконным интерфейсом, тачскрином, 8 каналами управления (почти все индивидуальные там насос, сям подсвет с ШИМ), RTC, несколько термометров, серврпривод кормушки, ИК ДУ и может еще что забыл - 3000 строк плюс либ на глаз пару тысяч будет. Собирается в 27кБ. С таким функционалом часики тоже займут прилично. Понятно что можно все в либы запихнуть и в 20 строк вызовы в скетче вписать. Надо в се в сумме рассматривать.
строки то конечно можно уменьшить
поубирать пустые разделительные строки, комменты, ну там дефайны лишние
не говорите ерунды, это все никак не влияет на размер кода, я не об этом. Оптимизация кода - это переписать код и убрать все повторы, правильно организовать данные. чтобы обрабатывать их пакетом. Избавится от неэффективных конструкция. например использования типа float и класса String
Я недавно одному заказчику оптимищировал код - так только одно избавление от String уменьшило размер прошивки почти вдвое.
Я вас уверяю в коде нет или почти нет лишних повторений.
а я вас уверяю, что вы очень сильно ошибаетесь. Вы этих повторов просто не видите
Если не подходит 8266 - возьмите СТМ32. Уж там с таймерами и с ШИМ-ом все в порядке. Кроме того, там есть ДМА - а значит можно одновременно выводить картинку на пиксели и звук
Пользователям отдаётся только свободная флэш и свободное процессорное время
и почти никакой документации о том сколько его отдаётся и когда.
И про реальную периферию очень мало инфы, я уж не говорю про то, что я на всё это гляжу сквозь ARDUINO IDE
Вообщем это китайская тайна покрытая китайским мраком.
Но тем не менее сочетание WiFi, низкой цены и простоты вхождения для 8266 почитай уникально. И часики на нем и WS2812B выглядят заманчиво за счет исключения RTC. Про нормальный звук с него - тоже сомневаюсь. Хотя ШИМ для движка в Н-мосте сделал.
от serial-a можно отказаться, он не оч нужен, но это значит с нуля писать какое-то взаимодействие с компом.
string-а нет
Вообщем на данном этапе мне показалось проще выкинуть несколько массивов в еепром, тем более что им там самое место.
Да и функционал уже практически весь реализован.
Даже вантачный таймер.
Тыкаешь по кнопке и уже пошел обратный отсчет 5 или 20 минут, тыкаешь второй раз и добавилось 5 или 20.
флоат исключать, очень громоздкая. Нафига оно вобще в часах, эффекты посчитать и с фиксированой точкой отлично.