Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

Часы на TFT

Пн янв 21, 2019 11:17:04

Приветствую коллег!

Интерес к часам на ГРИ и ВЛИ стабильный.
Много часов делается на 7-сегментных индикаторах и просто на массивах светодиодов...

А будет ли интересна сообществу тема часов настольных на TFT-дисплейчике ?

Если да, то вот:
Изображение Изображение

Часы сделаны для Очень Ленивого Кота, которому влом взяться за мышку и тыкнуть в правом нижнем углу рабочего стола по часам, что бы увидеть календарь.
И вообще - Коту положено мышек кушать, а не тыкать ейным носов во всякие мониторные углы.

Поскольку у Кота лапки - никаких кнопок не предусмотрено, исключительно нажатия на экран.

Часы сделаны на базе китайского дисплея с тачем - 320*240 2.4"
Изображение

Командует парадом ATMEGA 32A, точный подсчет времени ведет DS3231, а обеспечивает всю эту кухню правильным сбалансированным (рекомендуемым лучшими котоводами) питанием AMS1117-3.3.

Что умеют часы:
  • Показывать время и календарь на месяц
  • Листать календарь помесячно вперед/назад
  • Мяукать каждый час (с 7 до 22)
  • Промяукивать с разной громкостью три мелодии в 5 будильниках
    (Будильники при этом настраиваются либо на один раз, либо на нужные дни недели (мультивыбор))
  • Показывать время/календарь разными цветами - несколько предустановленных палитр - можно выбрать, либо включить рандомное переключение...
  • Отображать информацию на трех разных языках - Рус/Укр/Eng
  • Автоматически переходить на летнее и возвращаться на зимнее время (отключаемая функция)


Под спойлером - схема и рисунок ПП


Ну и немножко фоток


В принципе, это были часы - проба пера - справится ли мега с таким дисплеем и хватит ли ресурсов для шрифтов и графики.
Хватило. Но под завязку.
В принципе, в мечтах сделать на немного большей диагонали и добавить туда ФМ-приемник.
Но это уже либо расти вширь и брать Мегу 64/128, либо расти ввысь и пробовать применить СТМ32....
Последний раз редактировалось goldenandy Пн янв 21, 2019 19:33:21, всего редактировалось 4 раз(а).

Re: Часы на TFT?

Пн янв 21, 2019 11:29:18

Изобретаем фоторамку?

Re: Часы на TFT?

Пн янв 21, 2019 11:57:26

Изобретаем фоторамку?

Почти :)

Ленивому коту облом мышкой тыкать по часам на рабочем столе, что бы увидеть календарик.....
Вот кот себе и мутит часы с календариком на тфт с тачем....

Re: Часы на TFT?

Пн янв 21, 2019 16:56:29

Часы с подключением к Интернет? C автоматической коррекцией времени? С будильником? С таймером кофеварки? )) C прогрозом погоды на сегодня/завтра? )) ... С календарём? Часы знают когда вставать на работу? Часы играют музыку по утрам? Интернет радио... или MP3 плеер... или (на худой конец) простенький FM приёмничек... Тогда имеет смысл делать.

А если это очередные простенькие часики... без ничего (даже без "кукушки")... просто для красоты... то нет никакого смысла вообще заморачиваться))

Re: Часы на TFT?

Пн янв 21, 2019 17:30:40

Часы с подключением к Интернет? C автоматической коррекцией времени? С будильником? С таймером кофеварки? )) C прогрозом погоды на сегодня/завтра? )) ... С календарём? Часы знают когда вставать на работу? Часы играют музыку по утрам? Интернет радио... или MP3 плеер... или (на худой конец) простенький FM приёмничек... Тогда имеет смысл делать.

А если это очередные простенькие часики... без ничего (даже без "кукушки")... просто для красоты... то нет никакого смысла вообще заморачиваться))


Что на данный момент есть:
Отображение времени и календаря на текущий месяц.
Листание календаря помесячно вперед-назад.
Ежечасный биип.
5 будильников (3 мелодии, 7 уровней громкости).
Отключаемый автоперевод времени зима/лето.
3 языка (Укр/Рус/Eng).
Управление с тачскрина.

Пока функционал уперся в ресурсы АТМеги32.
Есть мысли допилить либо на 64/128 меге, либо переползти на СТМ32 (заодно и скорость отрисовки дисплея повысится), тогда можно добавить ФМ-приемник и другие плюшки.

Соответственно, вопрос - нужно ли это поделие сюда выкладывать .?... Я в прошлом году Коту статью отправил - но Кот, похоже, ушел на зимние каникулы.

Re: Часы на TFT?

Пн янв 21, 2019 18:14:22

128 меги хватит с головой))
скорость отрисовки дисплея ? Для часиков? )) Бегущей строки достаточно, с головой)) Или будем видео смотреть с ютуба? ))
я бы напихал кучу плюшек и сделал бы отдельной статьёй. А то тут (на форуме) всё теряется))

Re: Часы на TFT

Пн янв 21, 2019 19:33:47

Обновил шапку, добавил описание, фотки

Re: Часы на TFT

Вт янв 22, 2019 00:31:44

Лучше сделай нам экранчик для пульта... а то у нас маленький экранчик)) - https://radiokot.ru/forum/viewtopic.php?f=28&t=159826

Re: Часы на TFT

Вт янв 22, 2019 00:46:17

Лучше сделай нам экранчик для пульта... а то у нас маленький экранчик)) - https://radiokot.ru/forum/viewtopic.php?f=28&t=159826


Это какой такой экранчик ?

Кто мешает просто поставить больший экран ?
По сути только "драйвер" экрана переписать...
Если будет другое разрешение - описать новые координаты ?

ЗЫ. 128 мега на кораблик лепилась только из-за 6 каналов ШИМ ?

Re: Часы на TFT

Вт янв 22, 2019 00:58:04

goldenandy писал(а):Это какой такой экранчик ?

побольше))
goldenandy писал(а):Кто мешает просто поставить больший экран ?

время)) делать всё одновременно не успеваем... ))
goldenandy писал(а):128 мега на кораблик лепилась только из-за 6 каналов ШИМ

Нет. Больше памяти... Связь (Wi-Fi, интертет режим сервер), GPS навигатор, приложение для андроид...)) и т.д. и т.п.

Re: Часы на TFT

Вт янв 22, 2019 01:21:41

Еще раз.
У вас проект достаточно большой и сложный, вы замахнулись на универсальность и вагон функционала.
Для такого проекта у вас структура программы достаточно хорошо должна быть продумана и разделена на модули.
Один из признаков хорошего тона в программировании МК - это отделение логики от железа. Так называемый HAL - Hardware abstraction layer.
На этом уровне описываются все железные манипуляции с привязкой к портам.
В случае дисплея наружу, в основную программу, торчит 1 функция - displaySendByte().
Она только отправляет в него байт/слово. Всё.
Далее - отдельный блок - работа с дисплеем. Там уже выписаны более высокоуровневые процедуры, характерные для примененного дисплея - инициализация, вывод пикселя и т.д.
Далее, третий модуль - графика верхнего уровня. Там уже в виде блока дефайнов надо задать местоположение каждого элемента на дисплее, его размеры....
Там же - текстовые ресурсы и растры....
И наружу из модуля торчат только совсем общие функции - drawSignalLevel, showBatteryAlert, drawStickPosition.....

Тем самым замена дисплея на другой требует переписывания процедуры отправки данных в HAL и, если дисплей другой по цвету/разрешению - коррекцию в дефайнах положения графических примитивов.

Re: Часы на TFT

Вт янв 22, 2019 11:44:49

Проект.. да какой он сложный)) Там готовые модули... Ну может только отдельно радиоканал (с цифровой обработкой сигнала)...
Отделить логику от железа не так просто. Отдельная функция для отправки байт/слово вещь интересная, только боюсь не так всё просто... Думаю будет слошком много операций для обработки и вывода каждого байта отдельно... Бумаю лучше делать через буферизацию.
В программе ещё всё привязано к таймингам.)) МК ещё болжен успевать принимать/отправлять/обрабатывать данные/считать контрольные суммы/читать писать епром с верификацией данных... по секторам/опрашивать кучу датчиков/управлять автоматическими системами (типа автопилот и т.д.)... и ещё при этом выводить данные на экран... и всё это одновременно))
Поэтому думаем над идеей отдельного экрана, на отдельном МК, на который будут отправляться данные с главного проца, а "экран" уже сам будет всё рисовать. Там же - текстовые ресурсы и растры.... Как-то так - https://www.youtube.com/watch?v=bXRNrtnK8Zc
Короче типа видеокарты в ПК ))
И частота кадров должна быть побольше, а не как на том видео... всё тормозит))
Сейчас для 64x128 время обновления 10 милисекунд... с учётом остальных операций частота кадров 32 кадра/c.
Для 320*240 2.4" = 9600 байт... при скрости SPI 2 Мбит/c... в теории 26 кадров/секунду... с учётом вычислений в 10 раз меньше))
Можно разогнать проц до 16 МГц (максимум 25 Мгц)... Тогда можно сделать развёртку максимум где то до 50 кадров/c...
(Можно смотреть видео, как в старом телевизоре). ))
...
короче, плюшек много... ))

Re: Часы на TFT

Вт янв 22, 2019 22:20:21

1. Давай переносить обсуждение в профильную тему по пульту (меня, правда, коробит от дикой помеси языков и количества ошибок у sashamelja).
2. По экрану. Смотрите. LCD-монохром 64*128 (их у китайцев навалом, на контроллере ST7920) требует килобайт видеобуффера в ОЗУ. Вывод инфы на него по параллельному 8битному интерфейсу несколько более быстр, нежели по СПИ, хотя там есть тайминги самого контроллера. Но они прекрасно алгоритмизируются и весь вывод укладывается в обработчик таймера. Т.е. таймер молотит каждые 70-75 мкс и льет данные в дисплей из буфера.
Ежели хочется бОльшего - ТФТ, особенно, если с тачем - сильно не рекомендую СПИ.
СПИ в мегах работает на максимальной частоте - 1/2 от тактовой. Для отправки 16-битного пикселя - т.е. 2 байт - нужно минимум 32 такта камня - и это не считая того, что СПИ 8-битный и нужно ждать , пока уйдет первое слово, что бы загрузить и отправить второе. Делать машину состояний на прерывание по готовности СПИ - на этих скоростях могут быть большие накладные расходы на вход/выход из прерывания и сохранение регистров.
Учитывая то, что у вас мега 128 - два свободных порта под параллельный интерфейс дисплея можно найти. тогда два байта отправляются за:
1. выставить первый байт в порт 1
2. выставить второй байт в порт 2
3. поднять строб записи
4. положить строб записи.

Вот как то так.
Т.е. 4 такта против 32 - и без ожиданий.


И плюс если дисплей с тачем, то тач тоже сидит на СПИ. Причем, если сам контроллер дисплея реально скоростной, то тач на частотах СПИ выше 500 кГц начинает безбожно врать. Т.е. делить СПИ между дисплеем и тачем - вещь неблагодарная.

--------
Соответственно, в теме про пульт рисуйте ТЗ дисплейного модуля - какой желателен дисплей (интерфейс/контроллер/разрешение, наличие тача) - и будем думать. Я могу из проекта часов надергать библиотеки и описать, как их применять.

И сильно продумывайте протоколы общения между основным блоком и дисплеем. (как вариант физического протокола - я бы попробовал предложить UART - но нужно кварцевать как мастера, так и слейва. Но есть плюс - отладку можно вести из терминала на ПК).
Логический уровень - зависит от ваших потребностей.
Ну и опять же - собирать программу когнтроллера дисплея нужно блоками - физика дисплея - один уровень, логика дисплея - второй уровень, графические примитивы - третий уровень, вывод данных по командам мастера - четвертый уровень. Причем прогу писать надо так же, как организована мафия в Японии - уровень не знает никого, кроме соседних уровней.

--------
ЗЫ. Половина контроллеров ТФТ дисплеев хоть и толерантна к 5 вольтам, но линии данных у них исключительно 3.3 вольта.
можно для увеличения скорости отрисовки тактовать дисплейную мегу от кварца 20-22 МГц, но придется питать контроллер 5 вольтами, на 3,3 вольтах 20 МГц могут не взлететь. В этом случае придется на линии данных и управления дисплея вешать резистивные делители.

Добавлено after 8 hours 50 minutes 16 seconds:
вот и статья подоспела

Re: Часы на TFT

Вт янв 22, 2019 23:03:19

пусть простят авторы топика но фсе это и болше умент заурядный планшет и каждая 2 фоторамка...

из +планшета куча готовых часоф и ещедневникоф с погодой голосовым напоминанием анимацией в виде картинки дождя снего ветра... и прочими вкусняшками..
ну и +можно ингда юзать и ка планшет тоже например для скайподобных прог
городить такое разве чтоиз самоутвердения ЯСМОК!

Re: Часы на TFT

Ср янв 23, 2019 00:41:26

Да не вопрос, уважаемый musor, простят. И мнение простят, и орфографию, и ретросленг падонкафф...
Идите с миром.

Re: Часы на TFT

Ср янв 23, 2019 12:28:51

прошивка, схема, фотографии, изображения, проект Eagle 7 - из статьи.

Re: Часы на TFT

Пт янв 25, 2019 18:47:46

Схемка просто шикарная :) Есть множество идей что можно сделать с таким дисплеем.

Просьба к автору, посоветуйте руководства по этому дисплею, в идеале примеры на codevision :oops: :beer:

Еще раз респект за схему!

Re: Часы на TFT

Пт янв 25, 2019 19:12:25

Kotto писал(а):посоветуйте руководства по этому дисплею

Даташит - наше все. В гугле - по поиску ILI9341 первая же ссыль - ДШ


Я перед покупкой дисплея просто погуглил что то типа "Работа с TFT дисплеем ILI9341" - попал на несколько статей про подключение дисплея к МК, к андурине и т.д. (Без ссылок, не знаю, можно ли тут ссылки на внешние ресурсы, надеюсь, за ссылку на ДШ не побьют)
На основе этих данных и накидал библиотечку.

Тут главное найти полную последовательность "магических цифр" - пакета команд и их аргументов для инициализации контроллера дисплея.

Kotto писал(а):в идеале примеры на codevision

Простите, а что такое кодвижн ? Это язык такой ?
Если мне не изменяет память - кодвижн - это IDE, а пишут там на асм/с/с++.

Так вот, волей случая для такого же дисплея, только с SPI-подключением в соседней ветке просили библиотеку. (Самое интересное, что библиотеку просили для CVAVR :) )

Так что вот библиотека - милости прошу, читайте, вникайте, пробуйте.
Это моя библиотечка, написана "по мотивам" просторов интернета. По идее, она вообще не должна зависеть ни от используемого компилятора, IDE.... И ей даже все равно, какой контроллер будет управлять дисплеем.
(единственное, возможно придется найти аналог _delay_ms(xxx) - функции, формирующей задержку в ххх миллисекунд.)
Библиотека подключается просто :
Код:
#include "ILI9341.h"

Re: Часы на TFT

Сб янв 26, 2019 05:13:44

Проект интересен уже тем, что это одно из немногих изделий, сделанных с цветным дисплеем. Надоели уже семисегментники, WH1206, китайские Nokia5110( с разборки).

goldenandy
Спасибо, очень подробно все изложено.
1 Не хватает только платы в SL6, не могли бы вы помочь в этом формате.
2 Поделитесь ссылкой на дисплей, чтобы не ошибиться с заказом, да и проверенный продавец- это хорошо.

Re: Часы на TFT

Сб янв 26, 2019 07:33:30

хочется прикошатить сие 2.8"??возможно ли?он под мегу2560
Изображение Изображение
Ответить