Мда.. представляю, сколько сил было вложено в распайку всего этого. Почти 1100 светодиодов, куча транзисторых ключей, микросхем...
Да и в коде, учитывая "пробег" сигнала по нижней строке слева направо, потом по верхней справа налево, потом по секундным 74HC595, буферы, думается, реализовать было не очень просто, с индексацией массивов буферов, наверное, с ума можно было сойти.
Жаль, что код не C-шный, лично меня basic вгоняет в депрессию . Хоть и изучал его немного во время учёбы, но слишком уж он громоздкий сам по себе, плохо видно структуру программы. Скобочки в C как-то компактнее и нагляднее.
Это обобщенный совокупный опыт. Все взято на просторах. Что-то присовокупил дополнительно и вышло так как вышло.
===
Способ организации буферов менялся несколько раз. Но участие в политических дискусах укрепляло дух.
Кстати, по поводу модели в Proteus. Мне кажется, что если моделировать, ставя не светодиоды, а матрицы (чисто цифровая модель LEDMPX), можно получить приличную скорость моделирования. По крайней мере, 4 матрицы (256 светодиодов) в моём проекте часов моделируются в реальном времени.
Только все эти транзисторные ключи не ставить, ибо замедлят донельзя.
Ну, почему жуть? Я всегда прямо с устройством работаю, без всяких Proteus-ов. Оно как-то удобнее. Прямо в IDE (я использую QtCreator) кнопку нажал, прошивка скомпилировалась и улетела в устройство, и тут же видно - работает или нет.
Ну, по идее, и с basic это должно скриптоваться. Чтобы по нажатии какой-нибудь кнопочки в тамошней IDE скомпиленная прошивка улетала с помощью скрипта (вызывающего тот же avrdude) в МК.
WiseLord писал(а):Кстати, по поводу модели в Proteus. Мне кажется, что если моделировать, ставя не светодиоды, а матрицы (чисто цифровая модель LEDMPX), можно получить приличную скорость моделирования. По крайней мере, 4 матрицы (256 светодиодов) в моём проекте часов моделируются в реальном времени.
Только все эти транзисторные ключи не ставить, ибо замедлят донельзя.
Нашел такую штуку. Обзывается она в библиотеке MATRIX-8X8. Пробую её в мелких часах (3 матрицы всего), вполне себе так моделируется.
WiseLord писал(а):Кстати, по поводу модели в Proteus. Мне кажется, что если моделировать, ставя не светодиоды, а матрицы (чисто цифровая модель LEDMPX), можно получить приличную скорость моделирования. По крайней мере, 4 матрицы (256 светодиодов) в моём проекте часов моделируются в реальном времени.
Только все эти транзисторные ключи не ставить, ибо замедлят донельзя.
Попробовал... скорость в 460 раз ниже реальной. С трудом можно понять что отрисовывается. Пришлось отключить ШИМ и все прочее что не затрагивает индикацию. Кто хочет посмотреть как они работают - собирайте.
===
Обнаружилась ошибка. Скорее всего связана с доработкой отключения делений ночью. Исправлю и выложу позже. Там вероятно добавленные флаги надо поправить.
fedyasolder писал(а):Термометр - школьничество. Шо он покажет? Температуру в месте установки? Или в месте термодатчика? Температура между полом и потолком отличается на градусы. Меня умиляет когда часовые коты гордо показывают до десятых.
Датчик температуры в часах. Очень удобно. У меня в доме несколько часов-термометров в доме. Стоят на полочках, не на полу, не на потолке, температуру показывают хорошо, с десятыми долями градуса. Летом показывают до +30, зимой до +17 по морозам. Десятые доли градуса помогают следить за динамикой, включил кондиционер, сразу видно что работает. Включил обогреватель, тоже видно что нагрел хотя бы на 0.4 градуса, теплее уже от того что градусник показывает больше.
Летом перепад температуры между полом и потолком мизерный, от 0 до 1 градуса, зимой может быть больше и что? Это всем очевидно и так.
Привык к часам с градусником, без градусника не нужны
Уличный градусник отдельно, так проще и удобнее.
Бегущая строка тоже баловство. Две мелкие строки лучше (верхняя название параметра, нижняя - сам параметр).
Будильник мне не нужен был и не понадобится.
Я выложил весь материал по конструкции, каждый может добавить то что хочет. Места хватит и на свистелки и на перделки, и на дополнительные мигалки
Для таких ярких часов хорошо бы снижение яркости ночью, а то они глаза слепят. Причем эдак в миллион раз, все равно видно будет. Глаза в темноте повышают чувствительность в миллиард раз, в этом то и проблема. На солнце до 50 000 люкс, в сумраке 0.00001
Добиться такого диапазона достаточно сложно, ни шим, ни снижение напряжения не помогут.
WiseLord писал(а):Жаль, что код не C-шный, лично меня basic вгоняет в депрессию . Хоть и изучал его немного во время учёбы, но слишком уж он громоздкий сам по себе, плохо видно структуру программы. Скобочки в C как-то компактнее и нагляднее.
Тут не такие объемы кода чтобы заморачиваться с языком, по сути скрипт простейший. Basic для микроконтроллеров вполне нормально. Все равно там основной упор на регистры, таймеры, фьюзы и электронику.
SIM31 писал(а):Для таких ярких часов хорошо бы снижение яркости ночью, а то они глаза слепят. Причем эдак в миллион раз, все равно видно будет. Глаза в темноте повышают чувствительность в миллиард раз, в этом то и проблема. На солнце до 50 000 люкс, в сумраке 0.00001
Добиться такого диапазона достаточно сложно, ни шим, ни снижение напряжения не помогут.
Первые часы которые я сделал в темноте светят со скважностью в 1% и причем ярко. Тока я им не пожалел. Можно уменьшить еще просто увеличив разрядность шим на пару бит.
А вместо кондиционера у меня лобзик, температуру измеряю телом. Холодно - лобзик в руки... С жарой сложнее...
===
В данной конструкции у меня сильно греется стабилизатор. Использование штатного датчика под вопросом. Есть идея насчет внешнего без вмешательства в схему, использовав разъем программирования. Все равно я их править буду, может чего и получится.
fedyasolder писал(а):Первые часы которые я сделал в темноте светят со скважностью в 1% и причем ярко. Тока я им не пожалел.
А если зависнет ШИМ, светодиоды выгорают? ))
Можно уменьшить еще просто увеличив разрядность шим на пару бит.
До 32 бит скорее.
А вместо кондиционера у меня лобзик, температуру измеряю телом. Холодно - лобзик в руки... С жарой сложнее...
От жары помогает... кондиционер... ))
А тело обманчиво, зимой кажется что +17 в доме нормально, а летом под кондиционером +25 воспринимается как холод, после +30 )))
В данной конструкции у меня сильно греется стабилизатор. Использование штатного датчика под вопросом. Есть идея насчет внешнего без вмешательства в схему, использовав разъем программирования. Все равно я их править буду, может чего и получится
SIM31 писал(а):А если зависнет ШИМ, светодиоды выгорают? ))
Только если зависнет генератор. Но поскольку от кварца, то бояться нечего. В иных случаях гавкнет пёс и всё перезапустится.
===
Покупные стабы хорошо по цене, но я не буду использовать готовое в том что слепил. Это оскверняет процесс творчества.
Нашёл на просторах Youtube интересное, на мой взгляд, видео.
Французский мастер вручную делает радиолампы, с начала и до конца, придавая каждой из них характер уникальности.
Считаю, что многим будет интересно ознакомиться с инструментами и материалами. Хотя видео и называется «изготовление триодов в кустарных условиях», некоторые машины очень серьёзны для домашней работы.
Приятного просмотра!
Если бы не увидел своими глазами — не поверил бы. Человек сам изготавливает радиолампы от начала до конца — от анодов-катодов до стеклянной колбы, из каких-то проволочек, жестянок и стеклянных трубок получаются не только вполне элегантные и товарного вида, но и очень даже работоспособные радиолампы, что доказывают и действующие схемы, и лабораторные эксперименты и диаграммы.
Итак товарищи, сталинцы. Во мне проснулся перфекционист.
Иногда часы помаргивают по причине того что проскакивает помеха в TSOP. Питание это или недостаточная оптическая изоляция не знаю. Поэтому я решил рубить под корень (моргание при приёме ик-команды также пропадает естественно). Внимание, добавляем второй мк для приёма ик-команд. Вешается он на разъем ISP программирования основного мк. Заодно поднял частоту динамической индикации, теперь каждая строка выводится с частотой ~120Гц. Кварц для основного мк можно не использовать, перепрограммировать на внутренний генератор. А лучше заменить кварц на бОльшую частоту (требует указания частоты заголовке в main.bas и перекомпиляции)
Заодно исправлена ошибка указанная ранее Попереключал режимы так сяк, ошибка осталась. Придётся в протеусе её выискивать. Шибко много флагов наверчено с добавленными режимами. В голове уже не помещается.
В случае возникновения проблем с приёмом команды. Следует нажать кнопку привязки пульта и замкнуть кратковременно ногу 3 Attiny85 на землю. Будет отправлена в основной мк тестовая команда (якобы от ик-пульта). На табло появится надпись hAA (двоичное число 10101010). Если так, то проблема либо в TSOP (не на ту частоту или неисправен), либо отчасти в Attiny85 (у меня так получилось). Если не так, то нерабочий Attiny85.
Я решил задействовать паяный (после бабаха в высоковольтной схеме, хотя он программируется и верифицируется ), в итоге танцевал с бубном. Но чтобы старания не пропали даром прилеплю картинку тестовой команды сюда. Левая часть картинки - байт команды, правая - циклический избыточный код для контроля верности передачи (CRC8). Т.е. в основной мк передается два байта данных hAA и hD1. Длинная пауза после 3-го тактового импульса (зеленый график) образовалась из-за того что произошло прерывание для работы динамической индикации. После обработки процедуры динамической индикации передача продолжилась. Также есть широкий тактовый импульс в передаче байта избыточного циклического кода возникший при срабатывании того же прерывания.
Биты конфигурации Attiny85
Простыми словами, указываем внутр ген на 8МГц
Насчет температурного показометра. Возможно добавлю датчик в виде терморезистора. Это чтобы задействовать только одну ногу и меньше памяти задействовать. Сперва обмозгую.
===
Ошибку таки исправил.
Не расслабляемся, товарищи. Для калибровки АЦП с терморезистором используем прошивку из архива с соотв названием. Для удобства используем калькулятор расчета прямой по точкам
Получив уравнение ищем приведенные строки в файлах main.bas и temp_measure.bas и заменяем на свои.
Temperature = Adc_temp / 14
Temperature = Temperature - 4.29
Куда подключать терморезистор указано на схеме.
Из мелких улучшений:
- поправлены шрифты в разных местах
- улучшен до предела отклик на ик-пульт (команда влетает сразу)
- изменена прошивка мк приёма ик-команды во избежание приема новой команды при передаче; т.е. перед началом передачи crc могла быть принята другая команда и начинал работать вечный цикл из-за несоотв байтов команды и crc
- портянка ещё раз разбита на дополнительные файлы
- мелкие усовершенствования с целью оптимизации кода и более приглядного вида
- на видео знак "+" с тонкими шрифтами выглядит жирновато; в прошивке это уже исправлено
Меню:
0 - обычный режим (часы:минуты); при настройке с отображением Т или без
1 - настройка часов
2 - настройка минут
3 - настройка секунд
4 - настройка Pwmdark
5 - настройка Pwmlight
6 - настройка режима работы подсветки (вкл\выкл\авто)
7 - настройка яркости подсветки
8 - настройка уровня включения подсветки
9 - настройка величины гистерезиса включения\отключения подсветки
10 - отображение секунд (вкл\выкл\авто)
11 - отображение секунд (мигающая точка\точка\дуга закрашивание\дуга очистка)
12 - смена эффекта отображения секунд (выкл\мин\час\сутки)
13 - задержка мигания точки
14 - режим отображения температуры (выкл\авто)
15 - способ отображение температуры (одновременно\поочередно с временем)
16 - смена шрифта (выключено\ежеминутно\ежечасно\ежесуточно)
17 - шрифт (1-10)
18-26 - активность шрифтов #2-#10 при автоматической смене.
шрифт #1 активен всегда
--> 0
Предвосхищая вопросы касаемо применения DS18B20. Подружить без сохраннения полной прозрачности работы динамической индикации не получится. Я даже подружил и проверил это визуально. Если нужно могу объяснить что не так.