Терминал

wasq
Offline
Зарегистрирован: 26.05.2018

Вместо светодиодов использую цветные экраны TFT для своих поделок. На этик экранах можно помигать квадратиками или еще чем ( цветными, иммитация светодиодов ) и выводить надписи, сообщения и цифровые данные. На таких простейших контроллеров реализовывать меню смысла нет. Это не ПК. Все эти вопросы решаются сменой ПО для нужных настроек и управлений, Простой контроллер создан для управления, а не постоянной настройки его ПО. Реально в таких контроллерах — это смена экрана отображения ( может все не поместиться на один экран ) и смена УСТАВОК, но это не меню и гораздо проще решается. А картинки и фото выводит на них вообще смысла нет

Также мне не нравиться, что к ардуино подключается толстая плата с индикатором на проводках + согласование уровней, которая ничего не умеет, пожирает ресурсы ПИНОВ его и ПЗУ — функции на обслуживание его и шрифты, считай 20 кБ пропало, да еще и библиотеки подключать и разбираться с ними. Да и пирог из плат получается неудобный, особенно при засовывании их в коробочку да еще и другими прибамбасами.

Неоднократно использую в своих поделках так называемый ТЕРМИНАЛ. Это законченное устройство с отображения информации, со своим микроконтроллером, прошитыми командами и шрифтами. Все реализую на одной печатной плате, TFT стекло своим шлейфом припаивается к pcb, на обратной стороне Atmega328P с обвязкой.

Вот здесь представлю свой макетный вариант, созданный для отладки ПО и оборудования. Дисплей стекло TFT 240х320 2,8 дм + джойстик на 5 положений ( 4 + пресс ). интерфейс связи с ардуино I2C. Библиотеки для ардуино IDE ( UNO3) написаны, оттестированы ( что придумал на данное время ) Встроены 2 шрифта 5х7 и 12х16 с кириллицей, также шрифт больших ЦИФР. Воспринимает как UTF8 так и WIN1251. Для обмена по I2C реализовал свою библиотеку, ардуиновская меня не устроила. У меня все на прерываниях и посылается/принимается все пакетами, нет ожиданий, работа по флагам готов или нет, можно наиболее полно реализовать реальное время.

Также в ТЕРМИНАЛ прошито несколько десятков АВТАТАРОК, которые пригодятся вместо слов — видно из далее, типа = СТОП, уровень вверху, внизу и т.д. фото поближе

и фото всего макета с ардуинок, макет быстренько собран из листов ПВХ и склеен + есть источник питания от 220 В для автономной работы

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

  Terminal_SetFont(SetFont5x7);
  Terminal_SetColor(black,white);
  Terminal_ClearScreen();
  Terminal_WriteStrXYC(1,1,black,blue,"- ЭТО КИРИЛИЦА");
  Terminal_SetFont(SetFontDos_12x16);
  Terminal_WriteStrXYC(10,20,black,white,"- Latinica");
  Terminal_WriteStrXYC(10,50,black,cyan,"МорВолна на черном фоне");
  Terminal_DrawRectXYC( 1, 15, 180, 60, red, white); // Вывод цветного квадратика 
  Terminal_DrawPictoXYC(120 , 25,blue,white,cF13_8x16);  //  Вывод пиктограммы

Реально я так тексты не храню и не вывожу, они занимают много места в ОЗУ и его просто не хватит. Тексты я храню в ПЗУ с помощью progmem и извлекаю их от туда для вывода.  Также терминал можно располагать как пожелаете и менять направление вывода.

 

 

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

а где исходники и схема?

чтоб повторить и использовать....

скорость заполнения например всего экрана? т е сколько кадров в секунду максимум?

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Не повторишь, аффтар по Микро-Паскалю прикалываеца. :) 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

DetSimen пишет:

Не повторишь

жаль :(

так тоскливо для какого нибудь проекта программировать графическую часть....а так воткнул по I2C готовое устройство.

wasq
Offline
Зарегистрирован: 26.05.2018

Если есть желанье  повторить - опубликую, а библиотеки для ардуино ВСЕ НА СИ - ради Вас старался

На микро паскале только внутри ТЕРМИНАЛА, но вам там и HEXа хватит, если не пожелаете разбираться.

b707
Онлайн
Зарегистрирован: 26.05.2017

идейка шикарная. правда реализация на Уно все портит. Надо разводить платку на отдельном контроллере и крепить сзади ТФт дисплея - получится этакий  "текстовой Некстион"

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

wasq пишет:

Если есть желанье  повторить - опубликую, а библиотеки для ардуино ВСЕ НА СИ - ради Вас старался

На микро паскале только внутри ТЕРМИНАЛА, но вам там и HEXа хватит, если не пожелаете разбираться.

это вы с Амперки моду взяли HEX выкладывать :) ?

напомню что данная ветка предназначена для похвалиться своими проектами и помочь жителям форума повторить устройство и/или внести в него какие либо изменения/дополнения.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Если надо кому прозрачности и повторяемости, я какрас щас терминал пилю, на Atmega8, с выводом по сериал и по воздуху.  Нннада?

b707
Онлайн
Зарегистрирован: 26.05.2017

DetSimen пишет:

Если надо кому прозрачности и повторяемости, я какрас щас терминал пилю, на Atmega8, с выводом по сериал и по воздуху.  Нннада?

больше терминалов хороших и разных :)

У атмега8  хватит ОЗУ для работы с ТФТ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Лучше на стандартном 328-м. Хотя бы MiniPro припаять тудыть, чтобы не страдать фигней с Atmega8.

Запилить тоже на Nextion что-ли... ))

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

DetSimen пишет:

 по воздуху.  Нннада?

однозначно. Только хватит ли скорости uart для относительно комфортного обновления всего экрана?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

sadman41 пишет:

 на Nextion 

дороже получается чем atmega328p + tft SPI

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Дак у меня текстовый терминал.  Ему пофиг на скорость, строчечки бегут по мере заполнения, как у православного Linux.  Utf-8 перекодируется на лету в CP866, с его встроенной псевдографикой. 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

на выходе будет штото типа 

На любом разрешении экрана, хоть TFT 480х320, хоть OLED 160х120. 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Ну, не хочете - не еште.  

sadman41
Offline
Зарегистрирован: 19.10.2016

Так что, к терминалу ещё и дойч вспоминать придётся?

sadman41
Offline
Зарегистрирован: 19.10.2016

andycat пишет:

sadman41 пишет:

 на Nextion 

дороже получается чем atmega328p + tft SPI

Так надо полный цикл посчитать. С печаткой, пайкой и пр.

FoxJone
Offline
Зарегистрирован: 19.04.2019

DetSimen пишет:

Ну, не хочете - не еште.  

Хочем, хочем! Покезывай давай!

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

FoxJone пишет:

Хочем, хочем! Покезывай давай!

Через 15 дней тада выкладу. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

на выходе будет штото типа 

На любом разрешении экрана, хоть TFT 480х320, хоть OLED 160х120. 

он что в стиле турбо паскаля будет выводить?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

это, матьтваю, TurboVision, из которого я вырос, забросив Фортран И Basic. :) 

FoxJone
Offline
Зарегистрирован: 19.04.2019

DetSimen пишет:

это, матьтваю, TurboVision, из которого я вырос, забросив Фортран И Basic. :) 

А че он у вас такой немецкий то? Я рос на обычном паскале, который писали на бумажке, потом били текст на терминале, потом сбивали на перфоленты, а уж потом ленту засовывали в ЕС-1022... А вот когда начал писать свои первые платные программы (то есть типа уже вырос) то это уже был инглицкий турбовижн, я точно помню (середина 90-х вроде была)! А потом даже русский, но эт для ламеров, мы с такими не водились;)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

это, матьтваю, TurboVision, из которого я вырос, забросив Фортран И Basic. :) 

у меня ТСС 1.00 был такой, я в нем ассемблером пользовался, он выравнивал код кратно 16 или 32, забыл уж, один хрен лучше чем я ручками он не делал )))

wasq
Offline
Зарегистрирован: 26.05.2018

b707 пишет:
идейка шикарная. правда реализация на Уно все портит.

Яж по русски написал, ТЕРМИНАЛ на отдельном микроконтроллере Atmega328P !! Это отдельное устройство, со своим ПО !! и он по I2C общается с любым оборудованием - и для отладки - подключен к АРДУИНо - что видно на фото. А выложу Все, для АРДУИНКИ библиотеки на Си для общения с терминалом. А ТЕРМИНАЛ на Микро Паскале и кому не охото в нем разбираться ( нужно только использовать ) - шьют HEXa в него и терминал готов, а хочеш расширять и модернизировать ТЕРМИНАЛ - ковыряй Паскаль или пиши свое на Си.

wasq
Offline
Зарегистрирован: 26.05.2018

Схема Терминала. TFT 240х320, контроллер ILI9341 2,8 дм. Для сопряжения с ним по сигналам ( он 3 вольтовый ) применена микросхема Мк1-74LVC244AD, стабилизатор 3,3V на микросхеме М2 в корпусе SOT-23. Сам контроллер на M1 – Atmega328P в 32 выводном корпусе. Предусмотрен разъем ВГ1 для аппаратного программирования его по SPI, также предусмотрен разъем для заливки в него ПО по UART - ВГ3 ( если первично залить в него загрузчик ) ИЛИ для обмена данными с кем то вашей программы ( я использовал для отладки под монитором ПК).

Основной канал связи ( I2C + питание ) с оборудованием ( Ардуино ) выведен на разъем ВГ2. Также установлен Джойстик на 5 положение ( 4 + пресс). Имеется разъем расширения ВГ4, куда выведены 4 пина микроконтроллера и Земля. Если у вас задача маленькая и хватает ПЗУ и несколько пинов для управления, то можете чем то и по управлять/измерять не подключая ардуинку. Схема :

И перечень Элементов

Но пришлось резистор подсветки TFT R7 установить 51Ом, при 200 Ом очень тускловато смотрелся.

Ссылка на архив схема, плата, спецификация - https://cloud.mail.ru/public/5Dyr/2wHhwB1wJ

 

 

 

 

wasq
Offline
Зарегистрирован: 26.05.2018

Программы Терминала. Сначала со стороны Ардуино. Написано все только для Ардуино на Atmega 328P т.к. писалось без использования ее библиотек, непосредственно работая с портами и пинами ( для ускорения и уменьшения кода), Для тестовой — демо программы использовались библиотеки

TWI_I2C_master.h"                 //  Обслуживнаие TWI - I2C
ConsDrawPicto.h"                  //  Константы для вывода пиктограмм
Terminal_ARDA_V01.h"              //  Обслуживание Терминала

Я свои библиотеки не люблю пихать в среду ардуино, они у меня хранятся в моей отдельной папке, поэтому использую директиву #include - с путями, к папке с моими библиотеками.

Также сама тестовая программа, Она велика для форума, поэтому вместе с библиотеками упакована по ссылка - https://cloud.mail.ru/public/4qrz/yKbk6WkUT

Программу Самого терминала, к выкладке подготовлю чуть позже.

 

 

wasq
Offline
Зарегистрирован: 26.05.2018

Программы Терминала. Встроенная программа Терминала. Написана на микро Паскале. Если Вам не интересно в нем разбираться и что то менять то есть уже HEX-сик для прошивки, также описаны фьюзы, даже есть проект *.wpp – для программатора WizardProg87, которым я пользуюсь. В папке uses выложены библиотечные модули и включаемые файлы шрифтом и аватарок.

SPI_TFT_st7735,                // Модуль для работы с SPI, ориентированный для TFT
TFT_ILI9341,                   // Модуль работы с Экраном
TWI_Slave_IE,                  // Модуль ведомого / помощника по работе с I2C
Itr_WdtT2,                     // Таймер 2 и WDT = подсчет времени и ресет при потере контроля
KeyTest,                       // Тестирование и получени ерезультатат нажатия кнопок.
Convert;                       // Для Отладки, конвертация данных в строки и из них
{$INCLUDE   NaborAvator.pas }         //    Картинки BMP типа аваторов  = для прорисовки на TFT
{$INCLUDE   ConstNaborAvator.pas }    //    Константы аватарок 
{$I  "font_5x7.pas" }                 //    Системный Файл шрифтов 5x7 
{$I  "font_12x16_numbe.pas"  }        //    Файл шрифтов цифр 12x16 
{$I  "fBukDos_12x16case.pas"  }       //  Шрифт DOS_12x16 выбранный под таблицу системного 5х7
{$I  "fNumbe_24х32.pas"  }            //  Шрифт ЦИФРЫ + несколько знаков еще

Если пожелаете что-то менять в то - для работы в микроПаскале Вам потребуется полная версия, т.к. скомпилированный объем будет около 18 кБ, а демо версия до 4 кБ.

Но по моим понятиям, данная тема НЕ ДЛЯ ТОГО ЧТОБЫ СКОПИРОВАТЬ и ПОВТОРИТЬ. Я никогда этим не занимался. Интересно просто как кто решает те или иные задачи и интересно что — почерпнуть из них для себя и для своих будущих решений. Паскаль читается легко, Если есть интерес как без громоздких библиотек управлять TFT напрямую — вот вам один из способов. Также реализация помощника на TWI-I2C по прерываниям ( и мастера на Си для ардуино ) + шрифты с кириллицей двух форматов и многое другое — есть что почерпнуть и легко переноситься на Си кому надо и редактируется и делается свое. Для простого копирования тоже все есть — только не хватает описания протокола обмена -но он весь описан ПРОГРАММНО и с комментариями в программе для ардуино на Си.

Ссылка на архив -  https://cloud.mail.ru/public/5GQj/5NercBpGt