Pull to refresh
6
0
Send message
Большое спасибо за статью! Я как раз уже давно хотел написать софтрендерер, но с матчастью были проблемы (осилил пока только простой Wireframe-рендеринг без корректного отсечения), жду следующих частей статьи.
Хм, интересно. Спасибо, буду знать. Видимо, это распространённое заблуждение, т.к. я в нескольких местах читал, что резистор на кнопку вешается именно для этого. Правда, тогда остаётся непонятным, почему у меня дребезг никак не проявляется. Программного подавления нет и опрос кнопок идёт напрямую из loop, который выполняется довольно быстро (если не срабатывает таймер с тяжёлым телом).
Да, я знаю, что они не для подавления дребезга предназначены. Просто в данном случаи их можно было использовать в этих целях. Мне очень не хотелось добавлять ещё 6 внешних (не подтягивающих) резистора для кнопок на плату, и так 25 резисторов вышло на плате.
Ну, в том-то и дело, что я не был уверен, что я не буду перепрограммировать. Последние изменения в код я внёс уже после того, как припаял всё (нашёл один небольшой косяк в коде). Постоянно перепаивать не будешь, да и к тому же я не исключал добавление новых фич.
Хм, интересно, не знал. Пока ещё ни разу не наступал. Я сначала тоже думал переделать синхронизацию с RTC, например, на 1 раз в час, а в остальное время тикать родным резонатором, но это было бы чревато другими багами, т.к. код был изначально написан в расчёте на то, что время изменяется с разрешением в 1 секунду, а здесь бы появилась возможность отката на несколько секунд назад/вперёд в момент синхронизации, которую нужно было бы корректно обрабатывать. Поэтому я выбрал наиболее простой вариант решения проблемы. В принципе, раз в полсекунды вполне хватило бы, но для этого нужно было бы отдельный таймер писать. На платке RTC-модуля, который у меня выведены только питание с землёй и два пина I2C, так что прицепиться к пину 1 Гц достаточно сложно.
Ну, на самом деле я долго думал, делать переключение, или нет. Я его сделал в первую очередь потому, что я равнялся на обычные цифровые часы, у которых оно есть. Светодиод старшего разряда я не стал использовать потому, что было бы неочевидно, в каком формате выводится время, если не знать заранее. К тому же светодиоды AM/PM имеют дополнительную функцию в режиме таймера (AM — таймер остановлен, PM — таймер идёт, AM+PM — таймер на паузе).
Ну, насколько я понял, MAX7219 и 7221 — это драйверы для матричных светодиодных дисплеев? Мне они не нравятся, таких часов на матричных дисплеях у китайцев хватает.

Насчёт Ардуины не спорю, вполне можно было собрать на голой атмеге, я думал насчёт этого. Но с Ардуиной проще править код, можно легко добавить фичи или вообще задействовать плату для какой-нибудь другой задачи. Постоянно перетыкать атмегу между Ардуино и платой как-то неудобно. А основной плюс отдельного RTC в том, что он благодаря батарейке сохраняет время при выключенной ардуине.
Да, я знаю, я сознательно развёл плату именно таким образом :) Я сначала хотел как раз диагональными дорожками соединить, но потом решил, что дорожки лесенкой будут смотреться интереснее, чем просто набор диагональных дорожек.
59.82$ за производство 5-ти плат и 9.22$ за доставку, всего обошлось в 69.04$ (чуть больше 3000 рублей).
2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity