А разве нельзя эти же значения (2Ah и 2Bh) просто прописать в initlcd.h? А дальше пока программ выполняется они не изменятся. Все равно ведь при инициализации дисплея эти параметры прописываются. Или я что-то не понимаю? Может мы говорим об одном и том же?
Просто я хочу внести эти настройки в initlcd.h и больше к ним не возвращаться. Что бы в скетче не писать Х+24 а просто Х вывести точку в координатах 0,0 дисплея (24,0 - координаты памяти).
Если вариантов нет кроме ка всегда прибавлять +24, то их, я так понимаю, нужно прописать в UTFT.cpp? Где и как?
Если вы не будите использовать ротацию изображения (поворот вокруг оси на 90, 180, 270, 360 градусов) можите один раз инициализировать и забыть.
вобщем идея такова если у вас изображение ушло за верхнюю границу, то прибавляем к переменной Y0 количество пикселей за областью видимости, так же поступаем и с X0, оно у нас ушл за левый край, значит надо сместьть нулевой пиксел на количество скрытых пикселей.
чтоб пока не разбираться с Partial Area 0x30 Vertical Scrolling Definition 0x33h
1. попробуйте тогда пока оставить disp_x_size =319; disp_y_size =479;(и для всех остальных опытов что ниже тоже)чтоб был математический запас. и запустите пример UTFT_Demo_480x320, какая картинка будет ? должна на весь экран развернуться. В таком варианте и можно в своем скетче , везде к нужной координате поприбавлять +24.
forfrends пишет:
А разве нельзя эти же значения (2Ah и 2Bh) просто прописать в initlcd.h?
А дальше пока программ выполняется они не изменятся.
2. -это ничего не даст, ибо при рисовании через них рисуется. Поэтому в случае с диспом ili9327 и меньшей матрицы мне помогло добавить в setxy.h вверху строчку y1=y1+80; , попробуйте y1=y1+24; ,
-нет, как раз таки меняются. каждый раз когда отправляются координаты пикселя для его рисования, и цвет пикселя тоже ими передается. т.е. это не постоянная величина , а всегда переменная. Если в ините задать границы - по идее контроллер должен был создать окно в которое буде выводиться пиксели , мож существует какая волшебная команда чтоб он запомнил это окно, но этого я не нашел, поэтому в ините можно что угодно туда занести и это никак не влияет.
3. Думаю вы заметили, что в ините что вы используете , там 36 регистр почемуто описывается 2 раза , поэтому если меняли вверху , то нижний его переизменил. Менять надо нижний. LCD_Write_COM(0x36);// Memory Access Control LCD_Write_DATA(0x0A); , а именно вместо 0x0A ставите 0b00000000 и пробовать подставлять 1 . Если что попробуйте в минимальном ините это делать ! ! ! ili9327_8 ili9488 minimal init Explay N1.rar .
Memory Access Control 0x36
0 0 1 1 0 1 1 0
MY MX MV ML BGR MH X X // M - Mirror - зеркалирование
4. оставьте в 0x36 регистре значение 0b00000000 ! ну иль BGR правильную цветопередачу 0b00001000. И меняйте направление сканирования в Display Function Control 0xb6 (этот регистр применяется ещё в ряде контроллеров)
а именно , во втором параметре - это LCD_Write_DATA(0x22);// 0x42 = Rotate display 180 deg. , в двоичном коде это 0b001000010 , пробовать менять надо 0 GS SS SM ISC[3:0] это 6,5,4 биты. Т.е. подставляйте
Из этого было немного сложно понять что за контроллер стоит. Дисплей отложил в сторону на некоторое время. Когда вновь взялся за него, то неправильно собрал на макетке резисторные делители (дело было ночью, спать хотелось ужасно...) и подал на дасплей 4.6 вольт вместо 3.3в. и так по всем пинам... НО! Читалка как-то "достучалась" до контроллера и дисплей выдал немного другую инфу:
Контроллер оказался ILI9486 8 бит, но к нему так же подходят иниты от ILI9488. Но появилась проблема: размещение экрана дисплея относительно памяти кристала смещено в центр на 24 пикселя по Х. В результате изображение смещено на -24 пикселя. Для инитов от ILI9488 изображение еще оказалось в зеркальном отображении, но это легко исправилось в initlcd.h редактированием регистра 36h:
LCD_Write_COM(0x36);
LCD_Write_DATA(0b00011100);
В UTFT.cpp нужно прописать следующее разрешение дисплея:
disp_x_size = 295; // 271+24 пикселя для смещения в видимую область.
disp_y_size = 479;
"Пляски с бубном" и молитвы на даташит не помогли решить проблему сдвига изображения. Смещение по Х можно решить 2-мя путями:
1) дописать в самом начале setxy.h следующие строчки строчки:
x1=x1+24;
x2=x2+24;
Вариант самый простой, так как тогда х0,y0 и будет x0,y0 а не x-24,y0. Но это добавляет работы для ардуины. Соответственно замедляет скорость вывода на дисплей.
2) Не трогать setxy.h, а просто в самом скетче все координаты вводить с поправкой икса на +24 то есть вместо
slider, не вводите в заблуждение человека. И всех остальных. Регистры 2Ah и 2Bh используются для установки рамера скрина. Размещать его можно и в ините, и в setxy, и в тексте скетча, а в правильных компиляторах main.c. Главное помнить, каждый раз когда вы задвете новые параметры высоты столбца и ширины скрина старые параметры становяться невалидными, а попросту поверх них вы записываете новые размеры рабочей области экрана. Так можно реализовать сначала заполнение всего экрана обоями, а потом указав меньшую область выводить в нее например слайдшой ввиде динамического изображения (псевдо видео). Делается это зачастую из за недостаточного RAM на борту м/к и низкого FPS, но дает возможность использовать модифицированную функцию последовательного заполнения выбранной области, выводя картинку за картинкой, создавая илюзию видео. такимже образом можно выводить эконки заданного размера снизив нагрузку на м/к и повысив скорость вывода.
diger67, это и так понятно, что данный дисплей работает так. Заблуждения нет, а просто процесс изучения дисплея. Проблемой было то что вроде как в даташите можно "сместить" область рабочей памяти и сделать константой (регистры 2Ah, 2Bh и 2Ch), а на деле это все то что вы описали.
Кстати по даташиту дисплей можно подключить по SPI. Режим работы задается подтягиванием "ножек" IM2, IM1 и IM0 к 0 или 1. Попробую на шлейфе их найти. О результатах (если таковые будут) отпишусь.
Так сказать сложно, я покупал tft панели, там просто были выведены пины на разъем, а коммутацию делал на плате. Разбирая при изучении готовые шилды сталкивался с размещением перемычек прямо на шлейфе. То что вы нашли, не факт то что это пины конфигурации.
здоорово, что победили дисп. :))) хороший, большой :)
forfrends пишет:
Прошу вашего взгляда на картинку и подсказки, правильно ли я нашел пины IM0, IM1 и IM2:
....
Я так понимаю, нужно разрезать дорожку IM2 и кинуть ее на VDD для активации 4-line SPI (3-line SPI не получится так как IM0, IM1 замкнуты).
Серьезная заява :) . пока не приходилось их включать по SPI. дорожки im0-2 приходилось резать иголкой от шприца, чтоб с 16 на 8 бит. Вам только к SDA надо еще подключиться :
// при размещении картинки можно выбрать меньшее разрешение к примеру 320x240 , картинки будут кликабельны.
в даташите написано что в других режимах его можно подключать на + или - . А в SPI режиме он нужен.
По скорости аппаратный SPI примерно равен бывшему 8ми битному режиму (из тестов на 8bit и SPI шилдах 320x240). Так что скорость рисования скажем будет таже. В случае применения 100р плат STM32 или ESP8266 будет гораздо быстрее, вся инфа по подключению к ним SPI дисплеев есть в инете и ютубе.
В даташите ili9486 указано что в SPI режиме WRX это SCL . В либах обычно прокоментировано какие пины куда. mosi miso sck для аппаратного однозначны, а другие можно переназначать на какие пожелаете.
Завести такой большой дисп на SPI было б круто. На Али распространенные ардуиновские SPI шилды в основном 1.8 2.2 2.8" . замерьте заранее за сколько времени делаются тест Адафруита .
// сейчас у меня шилды 2,2" и 2,8" SPI на аппаратном, поставил резистивные делителис 5в на 3,3в уровней 1,5ком+2,2ком . и 2,2ком+4,7ком тож работают (первый резистор - вход 5в уровня, средняя точка - выход 3,3в уровня , второй резистор на минус) , но больше по номиналу верхний резистор не надо брать , иначе форма сигналов будет заваливаться. Быстрые распространенные дешевые платы stm32 esp8266 уже сами по себе на 3,3в , там все напрямую, хотя я бы поставил последовательно 33-100ом , мало ли при переходные процессы, чтоб выхода не уперлись друг в друга.
Да, читал что SDA может быть подключен к + или -. Похоже что это он и есть. Запитан к "GND" :
Надо будет перечитать все что есть по подключению по SPI, только потом буду дорожки резать. Не хочется ковырять бисплей незная зачем. Спасибо за подсказку - иглой от шприца, а то я думал чем бы его...
Стандартный тест UTFT\examples\Arduino (AVR)\UTFT_Demo_480x272 делает на 8 битах за 45300 мс. Это при использовании x1=x1+24; в setxy.h. Думаю если это убрать и скоректировать х в самом скетче, то скорость чуть подрастет. Надо будет еще резисторы поискать, а то у меня все на макетке и использую сейчас резисторы 10 и 20 кОм. Как вариант, это все потом можно будет кинуть на Ардуино ДУЕ (есть у меня) но она для меня пока темный лес. Многие библиотеки на ней не работают или работают с глюками. Так пробовал сконектить МЕГА и ДУЕ через модули nrf24l01 и ничего не вышло. Самое лучшее чего смог добиться от ДУЕ - приема сигнала, а передавать не передавала. Пробовал все возможные библиотеки.
Я только учусь программированию.
По пунктам 4 и 5: записи регистра 0x36 имеет результат, но не особо. Если коротко, то: поворот на 90, отзеркаливание, цветопередача. Больше эффектов нет. Ну кроме что этим регистром можно подкорректировать запуск инита от ili9488. Регистр 0x22 - почти тот же эффект. Бит SM "растягивает" изображение по "y" с пропуском пикселей, остальные биты - повороты, отражение... Пересмотрел еще раз даташит - смещение по Х нигде не нашел, по У - сколько угодно, те же Partial Area 0x30 и Vertical Scrolling Definition 0x33h. Ну да ладно, буду в скетче это корректировать.
Попробую еще татч подключить. Что-то я забыл про него упомянуть.
Только что попробовал подключить к ДУЕ - библиотека UTFT не кмпилируется- куча ошибок:
Arduino: 1.6.9 (Windows 7), Плата:"Arduino Due (Programming Port)"
Изменены опции сборки, пересобираем все
In file included from C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.h:186:0,
from D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:13:
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/hardware/arm/HW_ARM_defines.h:38:0: warning: "pgm_read_word" redefined [enabled by default]
#define pgm_read_word(data) *data
^
In file included from C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/Arduino.h:31:0,
from sketch\UTFT_Demo_480x272.ino.cpp:1:
C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/avr/pgmspace.h:103:0: note: this is the location of the previous definition
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
^
In file included from C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.h:186:0,
from D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:13:
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/hardware/arm/HW_ARM_defines.h:39:0: warning: "pgm_read_byte" redefined [enabled by default]
#define pgm_read_byte(data) *data
^
In file included from C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/Arduino.h:31:0,
from sketch\UTFT_Demo_480x272.ino.cpp:1:
C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/avr/pgmspace.h:102:0: note: this is the location of the previous definition
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino: In function 'void loop()':
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:58:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:61:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("<http://electronics.henningkarlsen.com>", CENTER, 259);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:78:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("Sin", 5, 15);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:85:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("Cos", 5, 27);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:92:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("Tan", 5, 39);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:322:40: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("That's it!", CENTER, 93);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:323:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("Restarting in a", CENTER, 119);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:324:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("few seconds...", CENTER, 132);
^
D:\Temp\arduino_modified_sketch_449763\UTFT_Demo_480x272.ino:328:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
myGLCD.print("Runtime: (msecs)", CENTER, 243);
^
In file included from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.h:186:0,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.cpp:45:
C:\Users\Игорь\Documents\Arduino\libraries\UTFT\hardware/arm/HW_ARM_defines.h:38:0: warning: "pgm_read_word" redefined [enabled by default]
#define pgm_read_word(data) *data
^
In file included from C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/Arduino.h:31:0,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.h:185,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.cpp:45:
C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/avr/pgmspace.h:103:0: note: this is the location of the previous definition
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
^
In file included from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.h:186:0,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.cpp:45:
C:\Users\Игорь\Documents\Arduino\libraries\UTFT\hardware/arm/HW_ARM_defines.h:39:0: warning: "pgm_read_byte" redefined [enabled by default]
#define pgm_read_byte(data) *data
^
In file included from C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/Arduino.h:31:0,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.h:185,
from C:\Users\Игорь\Documents\Arduino\libraries\UTFT\UTFT.cpp:45:
C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\cores\arduino/avr/pgmspace.h:102:0: note: this is the location of the previous definition
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
^
libraries\UTFT\UTFT.cpp.o: In function `UTFT::UTFT(unsigned char, int, int, int, int, int)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:144: undefined reference to `UTFT::_set_direction_registers(unsigned char)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::LCD_Write_COM(char)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:191: undefined reference to `UTFT::LCD_Writ_Bus(char)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::LCD_Write_DATA(char)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:225: undefined reference to `UTFT::LCD_Writ_Bus(char)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::InitLCD(unsigned char)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:261: undefined reference to `UTFT::_hw_special_init()'
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:272: undefined reference to `UTFT::_set_direction_registers(unsigned char)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::clrScr()':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:803: undefined reference to `UTFT::_fast_fill_8(int, long)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::fillScr(unsigned int)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:870: undefined reference to `UTFT::_fast_fill_8(int, long)'
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:876: undefined reference to `UTFT::LCD_Writ_Bus(char)'
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:877: undefined reference to `UTFT::LCD_Writ_Bus(char)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::drawHLine(int, int, int)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:1049: undefined reference to `UTFT::_fast_fill_8(int, long)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::drawVLine(int, int, int)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:1090: undefined reference to `UTFT::_fast_fill_8(int, long)'
libraries\UTFT\UTFT.cpp.o: In function `UTFT::fillRect(int, int, int, int)':
C:\Users\Игорь\Documents\Arduino\libraries\UTFT/UTFT.cpp:561: undefined reference to `UTFT::_fast_fill_8(int, long)'
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Due (Programming Port).
Пример от Adafruit компилируется с ошибками, но загружается. При этом дисплей молчит.
можете изменить (подредактировать) свой пост , думаю просто описка
По пунктам 4 и 5: записи регистра 0x36 0xB6-регистр(КОМанда) , после обращения к нему LCD_Write_COM(0xB6) кидаются последовательно 3 параметра(ДАТА) , нужный второй был LCD_Write_DATA(0x22); имеет результат, но не особо. Если коротко, то: поворот на 90, отзеркаливание, цветопередача. Больше эффектов нет. Ну кроме что этим регистром можно подкорректировать запуск инита от ili9488. Регистр 0x22 - почти тот же эффект. регистра 0x22 в этом контроллере нет. видимо имели ввиду второй параметр(данные)
аппаратно работает это так не вдаваясь в подробности, на примере регитра 0xB6, грубо говоря, на шину данных D0-D7 контроллера устанавливается адрес регистра к которому надо обратиться к примеру 0xB6 , устанавливается уровень 0 на выводе D/C (Data/Command) - чтоб дисплей знал что мы ему собрались кинуть адрес регистра(команду) , дергается WR (write запись) . Дисплей принимает. дальше устанавливаем D/C(DC он же RS) в 1 , тогда дисп. будет знать что мы будем кидать параметры(данные) которые надо занести в этот регистр . Устанавливаем 0x00 на шине данных и дергаем WR , Устанавливаем 0x22 на шине данных и дергаем WR , Устанавливаем 0x3B на шине данных и дергаем WR , (у регистров/команд бывает по даташиту от 1 до 10 параметров(данных). Конечно библиотека это всё делает сама, мы только подставляем цифры.
немного оффтоп. ( как подключить на телефон другой дисплей )
Если у вас сломался на телефоне дисплей , и такого нет рядом в продаже , то вкорячте что есть под рукой, который и неподходит даже . :)
просто близкому человеку нужны были контакты, на симку скопировать :) // софтины не хотелось искать и с ними разбираться.
И главное - надежно примотать скотчем :)
родной дисп 2.4" ili9341 , в библиотеке UTFT пошарил по папкам драйверов UTFT\tft_drivers , у большинства схожие setxy.h , значит и инит подойдёт 99% . попался под руку 2.8" ili9338 от Alcatel . Подключить все, кроме RD (его на + , чтоб дисп всегда был на приёме) и прочей лабуды типа TE , FMARK , ... которая и не используется при обычном подключении к ардуино . Все оба питания от пина питания на котором +3.3в , а не 1.8в.
Если ставите дисп с совершенно другим контроллером как здесь, то надо оставлять старый дисплей подключенным, чтобы телефон опознал его родной дисп на месте (ID контроллера, и иногда производитель ставит резистор или делитель на шлейфе чтоб типа только его подходили дисплеи). Таким образом второй дисп просто висит параллельно в режиме приёма.
p.masyukov, пожалуйста, перечитайте предыдущие страницы темы, их всего 4. Отвсет расписан что как и куда. Ищите примерную распиновку, читалкой определяете контроллер, подбираете инициализацию и радуетесь полученному девайсу :) Но вам всеравно нужно перечитать тему.
chugun, то же самое: перечитайте предыдущие страницы темы. Ищите примерную распиновку, читалкой (их две) определяете контроллер, подбираете инициализацию.
slider, помогите разобраться с SPI: по даташиту используются 4 контакта: D/CX, CSX, SCL, SDA. Из даташита: The 4-line serial mode consists of the Data/Command selection input (D/CX), chip enable input (CSX), the serial clock input (SCL) and serial data Input/Output (SDA) for data transmission. (страница 30: 7.1.3. Serial Interface)
p.masyukov, прочитали бы пред. страницы , уже отвечал на этот вопрос. ещё добалю что в планшетниках и навигаторах используют мощные процы , поэтому дешёвые дисплеи в которых нет контроллеров с видеопамятью (своего рода видеокарт). Поэтому их можно подключить только через спецплаты выполняющих эту роль. Узнав цену вы раздумаете что либо с ним делать. Иначе бы вы запустили бы уже его на малом разрешении.
chugun, это вопрос к вам. У вас же есть этот дисплей, вам и исследовать его. Разве что где-то вы ошиблись в подключении, раз читалка ничего не выдала. прочитайте тему, в последних сообщениях последние варианты читалок.
forfrends, как бы время чтоб это исследовать. Диспы по идее должны быть у меня с выведенными SDA .
Гляньте даташит ili9341, это же распространенный arduino SPI, тем более либа с аппаратным дружит. Можно еще глянуть pdf к UTFT , там должно быть описано подключение SPI "4пин" и "5пин" . В примере UTFT\examples\Arduino (AVR)\UTFT_Demo_320x240_Serial написано
Уважаемые slider и forfriends , тему то я читал ... С подключением всё ровно, т.к. экран снят с рабочего телефона и управляющие сигналы не плохо наблюдаются и различаются при помощи осцилографа, а именно RST, CS, RS, WR, RD, D0...D15 . Был бы лог.сканер - можно было бы снять инициализацию при включении телефона, но ...
Читалка у меня своя, т.к. пишу в CodeVisionAVR и судя по предыдущим постам - это не единственный экран у которого чтение ID возвращает нули.
Повторюсь - варианты инициализации пробовал для SPFD 5420A и ILI 9326 (т.к. именно эти драйверы поддерживают экраны с разрешением 240x400) - безрезультатно.
Вопрос оставляю открытым - может у кого имеется инфа по данному дисплею YDE FPC 32 T902 A1 ( фото выше ) ...
там идет чтение не только по нулевому регистру, а по всем доступным. Посмотрите код и попробуйте переделать для CVAVR. ID не всегда лежит по 0-му адресу. Кстати, не обязательно что бы контроллер поддерживал ваше разрешение. Могут поставить дисплей с меньшим разрешением чем выдает контроллер. Установленный у вас контроллер вполне может иметь разрешение 272х480 или 320х480, а использовать только часть видеопамяти. Советую попробовать иниты от других контроллеров.
forfrends , он походу в теме , оставьте, раз в другой оболочке сам написал. и осцилом полез.
У меня тож разные диспы 200х400 выдавали нули, закинул . пока через пару месяцев не вернулся к ним снова. оказалось управляющие пины по другому распологались там, не так как думал. подключил по другому и считалось всё. Бывали ещё пины (im) переворачивающие байты (8и8 //8080 8086), как ниббы в байте . бывало что пришлось задержки в читалку вставлять, для полных 16ти байтовых ответов немного иначе оказалось читалка должна читать (это можно проследить по изменениям в читалках до последних версий). Бывало что на шлейфе кондёр стоял на управляющем пине, поэтому через 10ком заваливался импульс. Считаю простой вариант это использовать для чтения ардуину Мегу, или немного портировать на MegaCore atmega128, там тоже есть цельные 8ми битные порты, так чтобы оставался аппаратный RX TX чтоб посмотреть большой ответ в мониторе порта.
// драйверов поддерживающих 240x400 много и они разные.
Эх, похоже придется затею с SPI отложить. Сильно узкие дорожки. Нет у меня навыка паять такею мелочь, велика вероятность что только испорчу дисплей. НО! По ходу все возможно было сделать. slider, вы сами и написали ответ: UTFT myGLCD(DMTFT28105,MOSI,SCK,10,NOTINUSE,9) для связи используется только MOSI (SDA). Да и на других сайтах нашел ту же инфу. Может чуток поднаберусь опыта - попробую. А пока разберусь еще с 3-мя дисплеями. Лежат и ждут своего часа :)
// Мне вот только странно что на ДУЕ ничего не заработало. Попробую стандартную (не правленную) библиотеку, может скомпилируется, а то не хочет.
Уже не плохо, хоть какие-то наводящие ответы, спасибо товарищи !!!
ArduinoMega и использую ...
Что за ниббы - поясните ???
Ещё вопрос по самой первой читалке из начала темы - разве чтение выполняется дерганьем WR при низком RD ??? Судя по даташиту на SPFD5420 - чтение происходит при дерганье RD, при высоком уровне на WR... Вот выдержка из даташита :
WR - In 80-system interface mode, a write strobe signal can be input via this pin and initializes a write operation when the signal is low.
RD - In 80-system interface mode, a read strobe signal can be input via this pin and initializes a read operation when the signal is low.
chugun, если взять ту же библиотеку UTFT, то в ней есть папка tft_drivers, в ней по папкам рассортированы контроллеры и инициализации к ним. Можно их испольховать. Лучше оставьте первую читалку, она только по 0-му адресу читает, возьмите читалку №3, ссылку давал выше. Она 100% вам выдаст какую-то полехную информацию.
///
Вопрос: как подключать татч?? На самом татче 4 пина, а все примеры идут с 5-и пиновыми настройками. Как быть? Наверное на шилдах стоят какие-то контроллеры татча? Если подключать на прямую, то нужна ли какая-то обвязка (резисторы конденсаторы)? Принцип работы татча знаю: два края "+" и "-", с других - чтение. Но хотелось бы что бы это заработало на библиотеке UTouch. Или может есть другие варианты?
....Ещё вопрос по самой первой читалке из начала темы - разве чтение выполняется дерганьем WR при низком RD ??? Судя по даташиту на SPFD5420 - чтение происходит при дерганье RD, при высоком уровне на WR...
да, в первой читалке был какойто косяк, но она работала ибо это для 16ти бит проканывало, (важны спады и подъемы RD, задержки, по pdf после спада получите ноли , но через небольшое время - достоверная инфа, Дальше после подъема , после небольшого времени инфа ещё сколько-то существует потом пропадает - получите ноли , гляньте хорошенько картинку Read Cycle Sequence ). В последних читалках вроде все как надо.
Возможно где и ошибаюсь, но понял и увидел так (что дергать WR RD и куда, при каком DC(RS) см. разные pdf):
a). 16бит где сразу идет ответ во все 16бит . А если дисп включить в режим 8бит то передастся сначала старший байт, дергаем снова - младший байт.
б). для других видов контроллеров 16бит передаются только младшими байтами, естественно само собой и 8бит режиме. При первом дерганье всегда получается лабуда или даже ваши ноли - ей верить нельзя так написано в pdf (типа случайное значение xx). надо второй раз дернуть - получим старший байт(первый параметр) , при третьем - младший(второй параметр), при последующих дерганьях получаем последующие параметры ,встречал до 10штук . В последующих читалках опрос каждого регистра сделал через сброс диспа, 1.чтобы небыло шлака(последних показаний) при первом дерганьи 2.чтобы дисп был адекватен, а то вдруг послали ему команду(регистр) сна или ещё какого нибудь каматоза. После каждого сброса надо немного подождать 100-150мсек, поэтому читалки так не быстро всё выдают. (возможно и во сне диспы отвечают, особо не проверял, сделать сброс после опроса всех параметров каждого регистра - незаморачиваясь . и третий, главный заяц, тот что случайное значение всегда будет равно 00 - что не будет засорять полученную таблицу всяким шлаком ) И. да, рекомендую притянуть все используемые пины Меги мегаомными резисторами к минусу, чтобы избежать другого вида мусора - остаточного. Там уж все равно на задевание пальца будет действовать, если появился мусор на задевание - ага , дисп не в режиме ответа!
forfrends пишет:
Вопрос: как подключать татч?? На самом татче 4 пина, а все примеры идут с 5-и пиновыми настройками. Как быть? Наверное на шилдах стоят какие-то контроллеры татча? Если подключать на прямую, то нужна ли какая-то обвязка (резисторы конденсаторы)? Принцип работы татча знаю: два края "+" и "-", с других - чтение. Но хотелось бы что бы это заработало на библиотеке UTouch. Или может есть другие варианты?
TouchScreen.h ( от Адафруит) - для подключения тача напрямую надо 4 пина (2 однозначно аналоговых и 2 цифровых иль аналоговых) . нормально рабтает, есть параметр силы нажатия. для калибровки понадобиться мультиметр чтоб измерить сопротивления. Тач питается от ардуины , поэтому важно стабильное 5в , без просадок в хреновом USB шнуре.
UTouch.h (от UTFT, но сначала надо запускать пример для калибровки, в pdf и ютубе есть) - для подключения через SPI (вроде 5 пин) микруха SPI XPT2046 ,( питается от стаба рядом 3.0-3.3в и соответственно тач тоже) можно здесь поискать или погуглить . можно еще такие платки прикупить на Али и Ебай что-то типа " lcd tft adapter board " " XPT2046 PCB " " Pitch Adapter PCB FPC "
Для всяких двухрядных надо искать что то типа " double row pcb " их тоже много всяких разных и на любой шаг
разъемы под них что то типа " lcd tft connector "
В настоящее время продаются шилды и с емкостными тачами (Они дороже) , у продавцов есть примеры под них. Значит можно приладить емкостные тачи какие есть (хотя в местных магазах они бывают дешевле чем резистивные), главное найти под них уже написанную либу у продавцов шилдов или в гугле.
Нет, он точно 8 битный. Спаял с доски 8 бит на шлейфе, потом тупо 8 пустых контактов даже не разведены на сборки. Реагирует только на ili932x и то какой то призрак на 10-15 процентах экрана выводится. Статейка по ссылке помогла при ремонте битого индикатора, там дело как раз было в сигналах IM0-2, менял на то что было в инете на али подходящее по распиновке.
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
Еще попробовал вывести надпись на русском - получилась какая-то белиберда. Вместо букв набор символов и значков. Содержимое DefaultFonts.c:
#if defined(__AVR__)
#include <avr/pgmspace.h>
#define fontdatatype const uint8_t
#elif defined(__PIC32MX__)
#define PROGMEM
#define fontdatatype const unsigned char
#elif defined(__arm__)
#define PROGMEM
#define fontdatatype const unsigned char
#endif
// SmallFont.c
// Modified by Alexey Stepanov (cyrillic symbols added)
// Font Size : 8x12
// Memory usage : 1720 bytes
// # characters : 144
// offset : 32
//fontdatatype SmallFont[1732] PROGMEM={
fontdatatype SmallFont[2008] PROGMEM={
//0x08,0x0C,0x20,0x8F,
0x08,0x0C,0x20,0xA6,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <Space>
0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00, // !
0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00, // #
0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00, // $
0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00, // %
0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00, // &
0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00, // (
0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00, // )
0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00, // *
0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00, // +
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80, // ,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, // .
0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00, // /
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // 0
0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // 1
0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00, // 2
0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00, // 3
0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00, // 4
0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00, // 5
0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00, // 6
0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // 7
0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00, // 8
0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00, // 9
0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00, // :
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00, // ;
0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // <
0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // =
0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // >
0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00, // ?
0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00, // @
0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00, // A
0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // B
0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00, // C
0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00, // D
0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00, // E
0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00, // F
0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00, // G
0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00, // H
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // I
0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00, // J
0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00, // K
0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00, // L
0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // M
0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00, // N
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // O
0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00, // P
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00, // Q
0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00, // R
0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00, // S
0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // T
0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00, // U
0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00, // V
0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00, // W
0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00, // X
0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // Y
0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00, // Z
0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00, // [
0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00, // <Backslash>
0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00, // ]
0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, // _
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00, // a
0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00, // b
0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00, // c
0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00, // d
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00, // e
0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00, // f
0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38, // g
0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00, // h
0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00, // i
0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0, // j
0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00, // k
0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // l
0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // m
0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00, // n
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00, // o
0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0, // p
0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C, // q
0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00, // r
0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00, // s
0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00, // t
0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00, // u
0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00, // v
0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00, // w
0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00, // x
0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0, // y
0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00, // z
0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00, // {
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, // |
0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00, // }
0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
0x00,0x00,0x30,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // градус 127 0x7F
0x00,0x00,0xF8,0x48,0x40,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // Б 128 0x80
0x00,0x00,0xF8,0x48,0x40,0x40,0x40,0x40,0x40,0xE0,0x00,0x00, // Г 129 0x81
0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x48,0xFC,0x84,0x00, // Д 130 0x82
0x50,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00, // Ё 131 0x83
0x00,0x00,0xA8,0xA8,0xA8,0x70,0xF8,0xA8,0xA8,0xA8,0x00,0x00, // Ж 132 0x84
0x00,0x00,0xF0,0x88,0x08,0x30,0x08,0x08,0x08,0xF0,0x00,0x00, // З 133 0x85
0x00,0x00,0xEC,0x48,0x58,0x58,0x68,0x68,0x48,0xDC,0x00,0x00, // И 134 0x86
0x30,0x00,0xEC,0x48,0x58,0x58,0x68,0x68,0x48,0xDC,0x00,0x00, // Й 135 0x87
0x00,0x00,0x3C,0x48,0x48,0x48,0x48,0x48,0x48,0xCC,0x00,0x00, // Л 136 0x88
0x00,0x00,0xFC,0x48,0x48,0x48,0x48,0x48,0x48,0xCC,0x00,0x00, // П 137 0x89
0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x40,0x40,0x80,0x00,0x00, // У 138 0x8A
0x00,0x00,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x70,0x00,0x00, // Ф 139 0x8B
0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0xFC,0x04,0x00, // Ц 140 0x8C
0x00,0x00,0xCC,0x48,0x48,0x48,0x38,0x08,0x08,0x1C,0x00,0x00, // Ч 141 0x8D
0x00,0x00,0xD6,0x54,0x54,0x54,0x54,0x54,0x54,0xFE,0x00,0x00, // Ш 142 0x8E
0x00,0x00,0xD6,0x54,0x54,0x54,0x54,0x54,0x54,0xFE,0x02,0x00, // Щ 143 0x8F
0x00,0x00,0xE0,0xC0,0x40,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // Ъ 144 0x90
0x00,0x00,0xEE,0x44,0x44,0x64,0x54,0x54,0x54,0xEE,0x00,0x00, // Ы 145 0x91
0x00,0x00,0xE0,0x40,0x40,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // Ь 146 0x92
0x00,0x00,0xE0,0x90,0x08,0x38,0x08,0x08,0x90,0x60,0x00,0x00, // Э 147 0x93
0x00,0x00,0xEC,0x52,0x52,0x52,0x72,0x52,0x52,0xEC,0x00,0x00, // Ю 148 0x94
0x00,0x00,0x3C,0x48,0x48,0x48,0x38,0x48,0x48,0x9C,0x00,0x00, // Я 149 0x95
0x00,0x00,0x08,0x30,0x40,0x70,0x48,0x48,0x48,0x30,0x00,0x00, // б 150 0x96
0x00,0x00,0x00,0x00,0x00,0x70,0x28,0x30,0x28,0x70,0x00,0x00, // в 151 0x97
0x00,0x00,0x00,0x00,0x00,0x78,0x28,0x20,0x20,0x70,0x00,0x00, // г 152 0x98
0x00,0x00,0x00,0x00,0x00,0x18,0x28,0x28,0x28,0x7C,0x44,0x00, // д 153 0x99
0x00,0x00,0x00,0x28,0x00,0x30,0x48,0x78,0x40,0x30,0x00,0x00, // ё 154 0x9A
0x00,0x00,0x00,0x00,0x00,0x54,0x54,0x38,0x54,0x54,0x00,0x00, // ж 155 0x9B
0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x30,0x08,0x70,0x00,0x00, // з 156 0x9C
0x00,0x00,0x00,0x00,0x00,0xCC,0x48,0x58,0x68,0xCC,0x00,0x00, // и 157 0x9D
0x00,0x00,0x00,0x30,0x00,0xCC,0x48,0x58,0x68,0xCC,0x00,0x00, // й 158 0x9E
0x00,0x00,0x00,0x00,0x00,0x48,0x50,0x60,0x50,0x48,0x00,0x00, // к 159 0x9F
0x00,0x00,0x00,0x00,0x00,0x1C,0x28,0x28,0x28,0x4C,0x00,0x00, // л 160 0xA0
0x00,0x00,0x00,0x00,0x00,0x44,0x6C,0x54,0x44,0x44,0x00,0x00, // м 161 0xA1
0x00,0x00,0x00,0x00,0x00,0xCC,0x48,0x78,0x48,0xCC,0x00,0x00, // н 162 0xA2
0x00,0x00,0x00,0x00,0x00,0xFC,0x48,0x48,0x48,0xCC,0x00,0x00, // п 163 0xA3
0x00,0x00,0x00,0x00,0x00,0x7C,0x54,0x10,0x10,0x38,0x00,0x00, // т 164 0xA4
0x00,0x00,0x00,0x00,0x00,0x38,0x54,0x54,0x54,0x38,0x10,0x38, // ф 165 0xA5
0x00,0x00,0x00,0x00,0x00,0xCC,0x48,0x48,0x48,0xFC,0x04,0x00, // ц 166 0xA6
0x00,0x00,0x00,0x00,0x00,0xCC,0x48,0x38,0x08,0x0C,0x00,0x00, // ч 167 0xA7
0x00,0x00,0x00,0x00,0x00,0x54,0x54,0x54,0x54,0x7C,0x00,0x00, // ш 168 0xA8
0x00,0x00,0x00,0x00,0x00,0x54,0x54,0x54,0x54,0x7E,0x02,0x00, // щ 169 0xA9
0x00,0x00,0x00,0x00,0x00,0xE0,0xA0,0x30,0x28,0x70,0x00,0x00, // ъ 170 0xAA
0x00,0x00,0x00,0x00,0x00,0xC6,0x44,0x64,0x54,0xE6,0x00,0x00, // ы 171 0xAB
0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x30,0x28,0x70,0x00,0x00, // ь 172 0xAC
0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x18,0x48,0x30,0x00,0x00, // э 173 0xAD
0x00,0x00,0x00,0x00,0x00,0xC8,0x54,0x74,0x54,0xC8,0x00,0x00, // ю 174 0xAE
0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x48,0x38,0x4C,0x00,0x00, // я 175 0xAF
0x3C,0xE7,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT FULL 176 0xB0
0x3C,0xE7,0x81,0x81,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT 75% 177 0xB1
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT 50% 178 0xB2
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0xFF, // BATT 25% 179 0xB3
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF, // BATT EMPTY 180 0xB4
0xFF,0xFF,0x00,0x3F,0x3F,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сингал 100% 181 0xB5
0x00,0x00,0x00,0x3F,0x3F,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сигнал 75% 182 0xB6
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сигнал 50% 183 0xB7
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00, // сигнал 25% 184 0xB8
0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x54,0x38,0x10,0x00,0x00, // стрелка вверх 185 0xB9
0x00,0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // стрелка вниз 186 0xBA
0x00,0x00,0x00,0x00,0x10,0x08,0x7C,0x08,0x10,0x00,0x00,0x00, // стрелка вправо 187 0xBB
0x00,0x00,0x00,0x00,0x10,0x20,0x7C,0x20,0x10,0x00,0x00,0x00, // стрелка влево 188 0xBC
0x00,0x00,0x00,0x3C,0x0C,0x14,0x24,0x44,0x80,0x00,0x00,0x00, // стрелка вверх вправо 189 0xBD
0x00,0x00,0x00,0x80,0x44,0x24,0x14,0x0C,0x3C,0x00,0x00,0x00, // стрелка вниз вправо 190 0xBE
0x00,0x00,0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C,0x00,0x00, // веселый смайл 191 0xBF
0x00,0x00,0x3C,0x7E,0xDB,0xFF,0xFF,0xDB,0x66,0x3C,0x00,0x00, // веселый негр 192 0xC0
0x00,0x00,0x3C,0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C,0x00,0x00, // грустный смайл 193 0xC1
0x00,0x00,0x3C,0x7E,0xDB,0xFF,0xFF,0xE7,0x5A,0x3C,0x00,0x00, // грустный негр 194 0xC2
0x00,0x00,0x3C,0x42,0x81,0x81,0x81,0x81,0x42,0x3C,0x00,0x00, // пустой круг 195 0xC3
0x00,0x00,0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0x00,0x00, // полный круг 196 0xC4
0x00,0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0x00,0x00, // квадрат пустой 197 0xC5
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // квадрат полный 198 0xC6
};
// SmallSymbolFont.c (C) 2013 by Alexey Stepanov
// Font Size : 8x12
// Memory usage : 280 bytes
// # characters : 23
// offset : 32
fontdatatype SmallSymbolFont[280] PROGMEM={
0x08,0x0C,0x20,0x17,
0x3C,0xE7,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT FULL 32
0x3C,0xE7,0x81,0x81,0x81,0xBD,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT 75% 33
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0xBD,0x81,0xFF, // BATT 50% 34
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0xFF, // BATT 25% 35
0x3C,0xE7,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF, // BATT EMPTY 36
0xFF,0xFF,0x00,0x3F,0x3F,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сингал 100% 37
0x00,0x00,0x00,0x3F,0x3F,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сигнал 75% 38
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x03,0x03,0x00, // сигнал 50% 39
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00, // сигнал 25% 40
0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x54,0x38,0x10,0x00,0x00, // стрелка вверх 41
0x00,0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // стрелка вниз 42
0x00,0x00,0x00,0x00,0x10,0x08,0x7C,0x08,0x10,0x00,0x00,0x00, // стрелка вправо 43
0x00,0x00,0x00,0x00,0x10,0x20,0x7C,0x20,0x10,0x00,0x00,0x00, // стрелка влево 44
0x00,0x00,0x00,0x3C,0x0C,0x14,0x24,0x44,0x80,0x00,0x00,0x00, // стрелка вверх вправо 45
0x00,0x00,0x00,0x80,0x44,0x24,0x14,0x0C,0x3C,0x00,0x00,0x00, // стрелка вниз вправо 46
0x00,0x00,0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C,0x00,0x00, // веселый смайл 47
0x00,0x00,0x3C,0x7E,0xDB,0xFF,0xFF,0xDB,0x66,0x3C,0x00,0x00, // веселый негр 48
0x00,0x00,0x3C,0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C,0x00,0x00, // грустный смайл 49
0x00,0x00,0x3C,0x7E,0xDB,0xFF,0xFF,0xE7,0x5A,0x3C,0x00,0x00, // грустный негр 50
0x00,0x00,0x3C,0x42,0x81,0x81,0x81,0x81,0x42,0x3C,0x00,0x00, // пустой круг 51
0x00,0x00,0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0x00,0x00, // полный круг 52
0x00,0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0x00,0x00, // квадрат пустой 53
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // квадрат полный 54
};
// BigFont.c (C)2010 by Henning Karlsen
// Font Size : 16x16
// Memory usage : 3044 bytes
// # characters : 95
fontdatatype BigFont[4612] PROGMEM={
0x10,0x10,0x20,0x8F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <Space>
0x00,0x00,0x00,0x00,0x07,0x00,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00, // !
0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00, // #
0x00,0x00,0x02,0x40,0x02,0x40,0x0F,0xF8,0x1F,0xF8,0x1A,0x40,0x1A,0x40,0x1F,0xF0,0x0F,0xF8,0x02,0x58,0x02,0x58,0x1F,0xF8,0x1F,0xF0,0x02,0x40,0x02,0x40,0x00,0x00, // $
0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x10,0x0E,0x30,0x0E,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x70,0x0C,0x70,0x08,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // %
0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x08,0x0F,0x98,0x19,0xF8,0x18,0xF0,0x18,0xE0,0x19,0xF0,0x0F,0x98,0x00,0x00,0x00,0x00, // &
0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xF0,0x00,0x00,0x00,0x00, // (
0x00,0x00,0x00,0x00,0x0F,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x0F,0x00,0x00,0x00,0x00,0x00, // )
0x00,0x00,0x00,0x00,0x01,0x80,0x11,0x88,0x09,0x90,0x07,0xE0,0x07,0xE0,0x3F,0xFC,0x3F,0xFC,0x07,0xE0,0x07,0xE0,0x09,0x90,0x11,0x88,0x01,0x80,0x00,0x00,0x00,0x00, // *
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x0F,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00, // ,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00, // ,
0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, // /
0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x78,0x1C,0xF8,0x1C,0xF8,0x1D,0xB8,0x1D,0xB8,0x1F,0x38,0x1F,0x38,0x1E,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 0
0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x03,0x80,0x1F,0x80,0x1F,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x1F,0xF0,0x00,0x00,0x00,0x00, // 1
0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x38,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // 2
0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x03,0xC0,0x03,0xC0,0x00,0x70,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 3
0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0xE0,0x03,0xE0,0x06,0xE0,0x0C,0xE0,0x18,0xE0,0x1F,0xF8,0x1F,0xF8,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x03,0xF8,0x00,0x00,0x00,0x00, // 4
0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xE0,0x1F,0xF0,0x00,0x78,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 5
0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 6
0x00,0x00,0x00,0x00,0x1F,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // 7
0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0x38,0x07,0xE0,0x07,0xE0,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 8
0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00, // 9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // :
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ;
0x00,0x00,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x00, // <
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // =
0x00,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00, // >
0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1E,0x78,0x18,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // ?
0x00,0x00,0x0F,0xF8,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x07,0xF8,0x00,0x00, // @
0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00, // A
0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // B
0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x38,0x0E,0x38,0x07,0xF0,0x00,0x00,0x00,0x00, // C
0x00,0x00,0x00,0x00,0x1F,0xE0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x70,0x1F,0xE0,0x00,0x00,0x00,0x00, // D
0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x1F,0xF8,0x00,0x00,0x00,0x00, // E
0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // F
0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x0E,0x38,0x07,0xF8,0x00,0x00,0x00,0x00, // G
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // H
0x00,0x00,0x00,0x00,0x0F,0xE0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // I
0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // J
0x00,0x00,0x00,0x00,0x1E,0x38,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0F,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // K
0x00,0x00,0x00,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x0E,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // L
0x00,0x00,0x00,0x00,0x1C,0x1C,0x1E,0x3C,0x1F,0x7C,0x1F,0xFC,0x1F,0xFC,0x1D,0xDC,0x1C,0x9C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // M
0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1E,0x1C,0x1F,0x1C,0x1F,0x9C,0x1D,0xDC,0x1C,0xFC,0x1C,0x7C,0x1C,0x3C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // N
0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // O
0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // P
0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0x78,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x7C,0x1C,0xFC,0x0F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0xFC,0x00,0x00, // Q
0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // R
0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x0F,0xE0,0x07,0xF0,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // S
0x00,0x00,0x00,0x00,0x1F,0xFC,0x19,0xCC,0x11,0xC4,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x07,0xF0,0x00,0x00,0x00,0x00, // T
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // U
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // V
0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // W
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // X
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // Y
0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x38,0x18,0x38,0x10,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x08,0x1C,0x18,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // Z
0x00,0x00,0x00,0x00,0x07,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0xF0,0x00,0x00,0x00,0x00, // [
0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x07,0x00,0x00,0x00,0x00, // <Backslash>
0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x07,0xF0,0x00,0x00,0x00,0x00, // ]
0x00,0x00,0x01,0x80,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0x7F,0xFF, // _
0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // a
0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1B,0xF0,0x00,0x00,0x00,0x00, // b
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x00,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // c
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x70,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // d
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // e
0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x70,0x07,0x70,0x07,0x00,0x07,0x00,0x1F,0xE0,0x1F,0xE0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00, // f
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xD8,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xF0,0x07,0xF0,0x00,0x70,0x1C,0x70,0x0F,0xE0, // g
0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0xF0,0x0F,0x38,0x0F,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // h
0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // i
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x03,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x1C,0x70,0x0C,0xF0,0x07,0xE0, // j
0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // k
0x00,0x00,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // l
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x00,0x00,0x00,0x00, // m
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // n
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // o
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x1F,0x00, // p
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xB0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x1F,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xF0, // q
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xF0,0x0F,0xF8,0x0F,0x38,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // r
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x30,0x1C,0x30,0x0F,0x80,0x03,0xE0,0x18,0x70,0x18,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // s
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x07,0x00,0x1F,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x70,0x07,0x70,0x03,0xE0,0x00,0x00,0x00,0x00, // t
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // u
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // v
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // w
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xE0,0x1C,0xE0,0x0F,0xC0,0x07,0x80,0x07,0x80,0x0F,0xC0,0x1C,0xE0,0x1C,0xE0,0x00,0x00,0x00,0x00, // x
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0xE0,0x01,0xC0,0x1F,0x80, // y
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x18,0xE0,0x11,0xC0,0x03,0x80,0x07,0x00,0x0E,0x20,0x1C,0x60,0x1F,0xE0,0x00,0x00,0x00,0x00, // z
0x00,0x00,0x00,0x00,0x01,0xF8,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0xF8,0x00,0x00,0x00,0x00, // {
0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // |
0x00,0x00,0x00,0x00,0x1F,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x38,0x00,0x38,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00, // }
0x00,0x00,0x00,0x00,0x1F,0x1C,0x3B,0x9C,0x39,0xDC,0x38,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xF8,0x01,0x98,0x01,0x98,0x01,0xF8,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // градус
0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // Б
0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // Г
0x00,0x00,0x00,0x00,0x07,0xF0,0x0C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3F,0xF8,0x30,0x18,0x20,0x08, // Д
0x06,0x60,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x1F,0xF8,0x00,0x00,0x00,0x00, // Ё
0x00,0x00,0x00,0x00,0x33,0xCC,0x19,0x98,0x19,0x98,0x19,0x98,0x0D,0xB0,0x0F,0xF0,0x0F,0xF0,0x1D,0xB8,0x19,0x98,0x19,0x98,0x19,0x98,0x33,0xCC,0x00,0x00,0x00,0x00, // Ж
0x00,0x00,0x00,0x00,0x17,0xE0,0x1E,0x70,0x1C,0x38,0x10,0x38,0x00,0x70,0x03,0xC0,0x03,0xC0,0x00,0x70,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // З
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0xF0,0x1D,0xF0,0x1F,0x70,0x1E,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // И
0x03,0x80,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0xF0,0x1D,0xF0,0x1F,0x70,0x1E,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // Й
0x00,0x00,0x00,0x00,0x03,0xF0,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // Л
0x00,0x00,0x00,0x00,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // П
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xF0,0x07,0xF0,0x00,0x70,0x00,0x70,0x1C,0xE0,0x0F,0xC0,0x00,0x00,0x00,0x00, // У
0x00,0x00,0x00,0x00,0x1F,0xF0,0x33,0x98,0x33,0x98,0x33,0x98,0x33,0x98,0x33,0x98,0x33,0x98,0x33,0x98,0x1F,0xF0,0x03,0x80,0x03,0x80,0x07,0xC0,0x00,0x00,0x00,0x00, // Ф
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF8,0x00,0x18,0x00,0x08, // Ц
0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x0F,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00, // Ч
0x00,0x00,0x00,0x00,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x3F,0xFC,0x00,0x00,0x00,0x00, // Ш
0x00,0x00,0x00,0x00,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x3F,0xFE,0x00,0x06,0x00,0x02, // Щ
0x00,0x00,0x00,0x00,0x3F,0x00,0x2E,0x00,0x2E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // Ъ
0x00,0x00,0x00,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3F,0x9C,0x39,0xDC,0x39,0xDC,0x39,0xDC,0x39,0xDC,0x39,0xDC,0x3F,0x9C,0x00,0x00,0x00,0x00, // Ы
0x00,0x00,0x00,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // Ь
0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x38,0x03,0xF8,0x03,0xF8,0x00,0x38,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // Э
0x00,0x00,0x00,0x00,0x3C,0xF8,0x1D,0x9C,0x1D,0x9C,0x1D,0x9C,0x1D,0x9C,0x1F,0x9C,0x1F,0x9C,0x1D,0x9C,0x1D,0x9C,0x1D,0x9C,0x1D,0x9C,0x3C,0xF8,0x00,0x00,0x00,0x00, // Ю
0x00,0x00,0x00,0x00,0x0F,0xF8,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x38,0x78,0x00,0x00,0x00,0x00, // Я
0x00,0x00,0x00,0x00,0x00,0x18,0x07,0xF8,0x0F,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x07,0xF0,0x00,0x00,0x00,0x00, // б
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // в
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, // г
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1F,0xF8,0x10,0x08,0x00,0x00, // д
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // ё
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0xCC,0x19,0xCC,0x19,0xCC,0x0D,0xD8,0x07,0xF0,0x0D,0xD8,0x19,0xCC,0x19,0xCC,0x00,0x00,0x00,0x00, // ж
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x00,0x70,0x03,0xE0,0x00,0x70,0x00,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // з
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0xF0,0x1D,0x70,0x1E,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // и
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x78,0x0E,0xB8,0x0F,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00, // й
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x70,0x0F,0xE0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00, // к
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x07,0x38,0x07,0x38,0x07,0x38,0x07,0x38,0x07,0x38,0x07,0x38,0x0E,0x38,0x00,0x00,0x00,0x00, // л
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x38,0x38,0x3C,0x78,0x3A,0xB8,0x39,0x38,0x38,0x38,0x38,0x38,0x00,0x00,0x00,0x00, // м
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // н
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // п
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x13,0x90,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // т
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x1F,0xF0,0x3B,0xB8,0x3B,0xB8,0x3B,0xB8,0x3B,0xB8,0x0F,0xF0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00, // ф
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF8,0x00,0x18,0x00,0x00, // ц
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00, // ч
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x3F,0xFC,0x00,0x00,0x00,0x00, // ш
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x3F,0xFE,0x00,0x06,0x00,0x00, // щ
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x2E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // ъ
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3F,0x9C,0x39,0xDC,0x39,0xDC,0x39,0xDC,0x3F,0x9C,0x00,0x00,0x00,0x00, // ы
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // ь
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x00,0x70,0x03,0xF0,0x00,0x70,0x00,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // э
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xF8,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x3F,0x9C,0x39,0x9C,0x39,0x9C,0x38,0xF8,0x00,0x00,0x00,0x00, // ю
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x07,0xF8,0x0E,0x38,0x0E,0x38,0x1C,0x38,0x00,0x00,0x00,0x00, // я
};
// SevenSegNumFont.c
// Font Size : 32x50
// Memory usage : 2004 bytes
// # characters : 10
fontdatatype SevenSegNumFont[2004] PROGMEM={
0x20,0x32,0x30,0x0A,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x38,0x00,0x00,0x18,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x38,0x00,0x00,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0C,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9
};
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
Что скачали и где? Для хороших иконок надо чтоб SPI микруха с ними на шилде стояла, с нее беруться большие разноцветные иконки. Соответственно чтоб ардуина была подключена к дисплею и этой микрухе. Она параллелится MicroSD , но имеет отдельно свой CS (F_CS) . Загуглите .
Для простых спец символов заброшенных библиотекой в код программы, в ардуинку, используется косая черта и код символа . Для некоторых функций если следует затем обычный символ то надо кавычки закрыть и снова открыть
Пока все собрано, Проверьте для большого и семисегментного шрифта наличие пробела для затирки букв/цифр чтоб нулем или черным квадратом не затирать. А то в либе они случайной бякой затирались. Если отсутствует то надо его дополнить в символы больших шрифтов.
это для быстрого вставки текста в скетч, чтобы не сидеть и не переводить по-букве. Можно и спец символы использовать (батарея, антена). В программе есть справка, там все описано.
Писал все в среде Autoit. Исходный код (кому надо):
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
LQ043T1DG01, вставлен в некую плату, видимо отладочный кит, но неважно, так вот возможно ли этот экран подключить а ардуине, например к меге, подскажите куда копать, с чего начать.
LQ043T1DG01, вставлен в некую плату, видимо отладочный кит, но неважно, так вот возможно ли этот экран подключить а ардуине, например к меге, подскажите куда копать, с чего начать.
когда ж удосужитесь читать хотябы первую страницу темы, ответы на эти диспы уже были , причем на каждой странице
Спасибо болшьшое, вы так любезны, ответив на мой вопрос о великий гуру, а если честно то неx@й вы@бывaться, ответил спокойно и все, а то читай учись, просто помоги человеку и все.. попробуй найди в куче постов что это именно твой дисплей...
jafff, может так быть что кроме вас с таким дисплеем никто не сталкивался. Лучше чем вы никто с ним не разберется. В этой теме форума приведены 100% работающие МЕТОДЫ. Ну и приведены примеры где эти методы сработали и получилось подключить и запустить дисплей. Ваш вопрос задает каждый новый в теме, и ответ всегда один - прочтите тему. Это поможет понять принцыпы "победы" над дисплеями. Не воспринимайте все в штыки, мы поможем чем сможем, просто и сами приложите усилия, ведь кроме вас никто не сможет использовать ваш дисплей.
Ну что же вы так сразу... Slider дал хорошие ссылки - там все коротко и четко написано по таким дисплеям как у вас.
Вам действительно следовало почитать тему - вы не сможете использовать этот дисплей на ардуине, так как у него нет видеопамяти. Подробнее смотрите в постах выше, Slider писал о подобных дисплеях.
Это я не вам, это я для человека писал. А на 2560 можно попробовать, поставить штуки 4 внешней SRAM сформировать Vsink, Hsink итд. Если найдет или разберется как прицепить 565ру5 можно и динамическую память. Только работать будет не очень. Как иксперимент можно взять ППЗУ, прошить в них какой то спрайт на весь экран и тупо вывести, это для отладки протокола обмена. Ну а потом можно и дальше двигаться.
А разве нельзя эти же значения (2Ah и 2Bh) просто прописать в initlcd.h? А дальше пока программ выполняется они не изменятся. Все равно ведь при инициализации дисплея эти параметры прописываются. Или я что-то не понимаю? Может мы говорим об одном и том же?
Просто я хочу внести эти настройки в initlcd.h и больше к ним не возвращаться. Что бы в скетче не писать Х+24 а просто Х вывести точку в координатах 0,0 дисплея (24,0 - координаты памяти).
Если вариантов нет кроме ка всегда прибавлять +24, то их, я так понимаю, нужно прописать в UTFT.cpp? Где и как?
Если вы не будите использовать ротацию изображения (поворот вокруг оси на 90, 180, 270, 360 градусов) можите один раз инициализировать и забыть.
можете мне помочь с инициализацией? Вращать не планирую
Попробуйте записать
2Ah (0x00), (0x18), (0x01), (0x3F)
2Bh (0x00), (0x18), (0x01), (0xDF)
вобщем идея такова если у вас изображение ушло за верхнюю границу, то прибавляем к переменной Y0 количество пикселей за областью видимости, так же поступаем и с X0, оно у нас ушл за левый край, значит надо сместьть нулевой пиксел на количество скрытых пикселей.
Я это уже пробовал - реакции никакой. Почему - не понятно.
Библиотеку брал здесь (в конце сообщения): http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256
Использую эти иниты:
initlcd.h:
setxy.h:
Мне кажется что настройки сбиваются именно в файле setxy.h
Я это уже пробовал - реакции никакой. Почему - не понятно.
Библиотеку брал здесь (в конце сообщения): http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256
Использую эти иниты:
initlcd.h:
setxy.h:
Мне кажется что настройки сбиваются именно в файле setxy.h
Не кажется, а так и есть. Вы используя setxy.h записываете новые значения в регистры 2Ah и 2Bh поверх ранее записанных.
чтоб пока не разбираться с Partial Area 0x30 Vertical Scrolling Definition 0x33h
1. попробуйте тогда пока оставить disp_x_size = 319 ; disp_y_size = 479 ; (и для всех остальных опытов что ниже тоже) чтоб был математический запас. и запустите пример UTFT_Demo_480x320, какая картинка будет ? должна на весь экран развернуться. В таком варианте и можно в своем скетче , везде к нужной координате поприбавлять +24.
А разве нельзя эти же значения (2Ah и 2Bh) просто прописать в initlcd.h?
А дальше пока программ выполняется они не изменятся.
2. -это ничего не даст, ибо при рисовании через них рисуется. Поэтому в случае с диспом ili9327 и меньшей матрицы мне помогло добавить в setxy.h вверху строчку y1=y1+80; , попробуйте y1=y1+24; ,
-нет, как раз таки меняются. каждый раз когда отправляются координаты пикселя для его рисования, и цвет пикселя тоже ими передается. т.е. это не постоянная величина , а всегда переменная. Если в ините задать границы - по идее контроллер должен был создать окно в которое буде выводиться пиксели , мож существует какая волшебная команда чтоб он запомнил это окно, но этого я не нашел, поэтому в ините можно что угодно туда занести и это никак не влияет.
http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov#comment-146701 и дальше.
3. Думаю вы заметили, что в ините что вы используете , там 36 регистр почемуто описывается 2 раза , поэтому если меняли вверху , то нижний его переизменил. Менять надо нижний. LCD_Write_COM(0x36); // Memory Access Control LCD_Write_DATA(0x0A); , а именно вместо 0x0A ставите 0b00000000 и пробовать подставлять 1 . Если что попробуйте в минимальном ините это делать ! ! ! ili9327_8 ili9488 minimal init Explay N1.rar .
Memory Access Control 0x36
5. попробуйте пункт.4 с настройками disp_x_size = 271 ; disp_y_size = 479 ; и примером UTFT_Demo_480x272
В общем результат:
Дисплей от китайского Samsung S5, чуть меньше 4", разрешение 480х272.
Еще фото дисплея: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=1#comment-168028
Надпись на шлейфе дисплея:
Читалки выдали странную инфу:
Из этого было немного сложно понять что за контроллер стоит. Дисплей отложил в сторону на некоторое время. Когда вновь взялся за него, то неправильно собрал на макетке резисторные делители (дело было ночью, спать хотелось ужасно...) и подал на дасплей 4.6 вольт вместо 3.3в. и так по всем пинам... НО! Читалка как-то "достучалась" до контроллера и дисплей выдал немного другую инфу:
Смотрите здесь и далее: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=2#comment-216113
Контроллер оказался ILI9486 8 бит, но к нему так же подходят иниты от ILI9488. Но появилась проблема: размещение экрана дисплея относительно памяти кристала смещено в центр на 24 пикселя по Х. В результате изображение смещено на -24 пикселя. Для инитов от ILI9488 изображение еще оказалось в зеркальном отображении, но это легко исправилось в initlcd.h редактированием регистра 36h:
В UTFT.cpp нужно прописать следующее разрешение дисплея:
1) дописать в самом начале setxy.h следующие строчки строчки:
Нужно писать:
Вызов инита:
Ссылка на подправленную библиотеку (в конце сообщения): http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256
slider, не вводите в заблуждение человека. И всех остальных. Регистры 2Ah и 2Bh используются для установки рамера скрина. Размещать его можно и в ините, и в setxy, и в тексте скетча, а в правильных компиляторах main.c. Главное помнить, каждый раз когда вы задвете новые параметры высоты столбца и ширины скрина старые параметры становяться невалидными, а попросту поверх них вы записываете новые размеры рабочей области экрана. Так можно реализовать сначала заполнение всего экрана обоями, а потом указав меньшую область выводить в нее например слайдшой ввиде динамического изображения (псевдо видео). Делается это зачастую из за недостаточного RAM на борту м/к и низкого FPS, но дает возможность использовать модифицированную функцию последовательного заполнения выбранной области, выводя картинку за картинкой, создавая илюзию видео. такимже образом можно выводить эконки заданного размера снизив нагрузку на м/к и повысив скорость вывода.
diger67, это и так понятно, что данный дисплей работает так. Заблуждения нет, а просто процесс изучения дисплея. Проблемой было то что вроде как в даташите можно "сместить" область рабочей памяти и сделать константой (регистры 2Ah, 2Bh и 2Ch), а на деле это все то что вы описали.
Кстати по даташиту дисплей можно подключить по SPI. Режим работы задается подтягиванием "ножек" IM2, IM1 и IM0 к 0 или 1. Попробую на шлейфе их найти. О результатах (если таковые будут) отпишусь.
Прошу вашего взгляда на картинку и подсказки, правильно ли я нашел пины IM0, IM1 и IM2:
Дорожка справа от IM2 это RESET
IM2 подключен к земле
IM0, IM1 - к VDD
Я так понимаю, нужно разрезать дорожку IM2 и кинуть ее на VDD для активации 4-line SPI (3-line SPI не получится так как IM0, IM1 замкнуты).
Так сказать сложно, я покупал tft панели, там просто были выведены пины на разъем, а коммутацию делал на плате. Разбирая при изучении готовые шилды сталкивался с размещением перемычек прямо на шлейфе. То что вы нашли, не факт то что это пины конфигурации.
здоорово, что победили дисп. :))) хороший, большой :)
Прошу вашего взгляда на картинку и подсказки, правильно ли я нашел пины IM0, IM1 и IM2:
....
Я так понимаю, нужно разрезать дорожку IM2 и кинуть ее на VDD для активации 4-line SPI (3-line SPI не получится так как IM0, IM1 замкнуты).
Серьезная заява :) . пока не приходилось их включать по SPI. дорожки im0-2 приходилось резать иголкой от шприца, чтоб с 16 на 8 бит. Вам только к SDA надо еще подключиться :
// при размещении картинки можно выбрать меньшее разрешение к примеру 320x240 , картинки будут кликабельны.
в даташите написано что в других режимах его можно подключать на + или - . А в SPI режиме он нужен.
По скорости аппаратный SPI примерно равен бывшему 8ми битному режиму (из тестов на 8bit и SPI шилдах 320x240). Так что скорость рисования скажем будет таже. В случае применения 100р плат STM32 или ESP8266 будет гораздо быстрее, вся инфа по подключению к ним SPI дисплеев есть в инете и ютубе.
Здесь http://arduino.ru/forum/apparatnye-voprosy/28-spi-tft-podklyuchenie#comment-160676 описал либы софтового и аппаратного SPI . инит от ili9341 может подойти. (можете сейчас проверить , скопировать команды инита в initlcd.h от 9341 в 9486 , только case и break должны там закоментированы ).
В даташите ili9486 указано что в SPI режиме WRX это SCL . В либах обычно прокоментировано какие пины куда. mosi miso sck для аппаратного однозначны, а другие можно переназначать на какие пожелаете.
вот еще гляньте http://arduino.ru/forum/apparatnye-voprosy/18-tft-podklyuchenie-problema-pomogite#comment-198429 что на некоторых шилдах так и пишут SDA, SCL , ... http://ru.aliexpress.com/item/New-Stylish-1-8-inch-128-x-160-Pixels-For-Arduino-TFT-LCD-Display-Module-Breakout/32612697845.html
или так SDO(miso), SDI (mosi), SCK, D/C, Reset, CS http://ru.aliexpress.com/item/Smart-Electronics-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/32597442041.html
Завести такой большой дисп на SPI было б круто. На Али распространенные ардуиновские SPI шилды в основном 1.8 2.2 2.8" . замерьте заранее за сколько времени делаются тест Адафруита .
// сейчас у меня шилды 2,2" и 2,8" SPI на аппаратном, поставил резистивные делители с 5в на 3,3в уровней 1,5ком+2,2ком . и 2,2ком+4,7ком тож работают (первый резистор - вход 5в уровня, средняя точка - выход 3,3в уровня , второй резистор на минус) , но больше по номиналу верхний резистор не надо брать , иначе форма сигналов будет заваливаться. Быстрые распространенные дешевые платы stm32 esp8266 уже сами по себе на 3,3в , там все напрямую, хотя я бы поставил последовательно 33-100ом , мало ли при переходные процессы, чтоб выхода не уперлись друг в друга.
//// по п.4 и п.5 каков результат был?
Да, читал что SDA может быть подключен к + или -. Похоже что это он и есть. Запитан к "GND" :
Надо будет перечитать все что есть по подключению по SPI, только потом буду дорожки резать. Не хочется ковырять бисплей незная зачем. Спасибо за подсказку - иглой от шприца, а то я думал чем бы его...
Стандартный тест UTFT\examples\Arduino (AVR)\UTFT_Demo_480x272 делает на 8 битах за 45300 мс. Это при использовании x1=x1+24; в setxy.h. Думаю если это убрать и скоректировать х в самом скетче, то скорость чуть подрастет. Надо будет еще резисторы поискать, а то у меня все на макетке и использую сейчас резисторы 10 и 20 кОм. Как вариант, это все потом можно будет кинуть на Ардуино ДУЕ (есть у меня) но она для меня пока темный лес. Многие библиотеки на ней не работают или работают с глюками. Так пробовал сконектить МЕГА и ДУЕ через модули nrf24l01 и ничего не вышло. Самое лучшее чего смог добиться от ДУЕ - приема сигнала, а передавать не передавала. Пробовал все возможные библиотеки.
Я только учусь программированию.
По пунктам 4 и 5: записи регистра 0x36 имеет результат, но не особо. Если коротко, то: поворот на 90, отзеркаливание, цветопередача. Больше эффектов нет. Ну кроме что этим регистром можно подкорректировать запуск инита от ili9488. Регистр 0x22 - почти тот же эффект. Бит SM "растягивает" изображение по "y" с пропуском пикселей, остальные биты - повороты, отражение... Пересмотрел еще раз даташит - смещение по Х нигде не нашел, по У - сколько угодно, те же Partial Area 0x30 и Vertical Scrolling Definition 0x33h. Ну да ладно, буду в скетче это корректировать.
Попробую еще татч подключить. Что-то я забыл про него упомянуть.
Только что попробовал подключить к ДУЕ - библиотека UTFT не кмпилируется- куча ошибок:
Пример от Adafruit компилируется с ошибками, но загружается. При этом дисплей молчит.
Ладно, с ДУЕ потом буду разбираться.
можете изменить (подредактировать) свой пост , думаю просто описка
По пунктам 4 и 5: записи регистра 0x36 0xB6-регистр(КОМанда) , после обращения к нему LCD_Write_COM(0xB6) кидаются последовательно 3 параметра(ДАТА) , нужный второй был LCD_Write_DATA(0x22); имеет результат, но не особо. Если коротко, то: поворот на 90, отзеркаливание, цветопередача. Больше эффектов нет. Ну кроме что этим регистром можно подкорректировать запуск инита от ili9488. Регистр 0x22 - почти тот же эффект. регистра 0x22 в этом контроллере нет. видимо имели ввиду второй параметр(данные)
аппаратно работает это так не вдаваясь в подробности, на примере регитра 0xB6, грубо говоря, на шину данных D0-D7 контроллера устанавливается адрес регистра к которому надо обратиться к примеру 0xB6 , устанавливается уровень 0 на выводе D/C (Data/Command) - чтоб дисплей знал что мы ему собрались кинуть адрес регистра(команду) , дергается WR (write запись) . Дисплей принимает. дальше устанавливаем D/C(DC он же RS) в 1 , тогда дисп. будет знать что мы будем кидать параметры(данные) которые надо занести в этот регистр . Устанавливаем 0x00 на шине данных и дергаем WR , Устанавливаем 0x22 на шине данных и дергаем WR , Устанавливаем 0x3B на шине данных и дергаем WR , (у регистров/команд бывает по даташиту от 1 до 10 параметров(данных). Конечно библиотека это всё делает сама, мы только подставляем цифры.
Да , закиньте пока DUE.
при подаче на IM0 лог0 -16бит режим , при лог1 - 8бит.
подходят иниты от подобных контроллеров ili9486 ili9488 , .... (совпадение setxy )
если 16бит , то годиться UTFT , только в файле UTFT.cpp выставить display_transfer_mode = 16; (иначе из массива для него режимы SPI ).
если 8 бит, то подойдет Adafruit (не SPI). UTFT_8bit_turbo из http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256 , только уменьшить разрешение в UTFT.cpp на disp_x_size = 239; disp_y_size = 319; . возможно еще MCUFRIEND_kvb
увы, на дисплее битая матрица :(
схема из тлф FLY DS123
немного оффтоп. ( как подключить на телефон другой дисплей )
Если у вас сломался на телефоне дисплей , и такого нет рядом в продаже , то вкорячте что есть под рукой, который и неподходит даже . :)
просто близкому человеку нужны были контакты, на симку скопировать :) // софтины не хотелось искать и с ними разбираться.
И главное - надежно примотать скотчем :)
родной дисп 2.4" ili9341 , в библиотеке UTFT пошарил по папкам драйверов UTFT\tft_drivers , у большинства схожие setxy.h , значит и инит подойдёт 99% . попался под руку 2.8" ili9338 от Alcatel . Подключить все, кроме RD (его на + , чтоб дисп всегда был на приёме) и прочей лабуды типа TE , FMARK , ... которая и не используется при обычном подключении к ардуино . Все оба питания от пина питания на котором +3.3в , а не 1.8в.
Если ставите дисп с совершенно другим контроллером как здесь, то надо оставлять старый дисплей подключенным, чтобы телефон опознал его родной дисп на месте (ID контроллера, и иногда производитель ставит резистор или делитель на шлейфе чтоб типа только его подходили дисплеи). Таким образом второй дисп просто висит параллельно в режиме приёма.
Кто в теме.. с умершего планшета есть дисплей с тачем.
Что необходимо для подключения к ардуино.. хочу выводить примитивные тексты, диаграммы и т.п.
был prestigio 5080B
Уважаемые, кто осилил такой дисплей от NOKIA X6 (китай) YDE FPC 32 T902 A1 ???
Распиновка совпадает с 3.0" 400x240 8K1465 TFT8K1465FPC-A1-E TRULY-C ( nokia china 5800 , X6 )
Инициализации ни для SPFD 5420A ни для ILI 9326 не заводят дисплей,.
Драйвер по нулевому адресу не определяется, читаются нули.
В телефоне дисплей исправно работает ...
Вопрос - каким драйвером управляется данный дисплей ???
p.masyukov, пожалуйста, перечитайте предыдущие страницы темы, их всего 4. Отвсет расписан что как и куда. Ищите примерную распиновку, читалкой определяете контроллер, подбираете инициализацию и радуетесь полученному девайсу :) Но вам всеравно нужно перечитать тему.
chugun, то же самое: перечитайте предыдущие страницы темы. Ищите примерную распиновку, читалкой (их две) определяете контроллер, подбираете инициализацию.
slider, помогите разобраться с SPI: по даташиту используются 4 контакта: D/CX, CSX, SCL, SDA. Из даташита: The 4-line serial mode consists of the Data/Command selection input (D/CX), chip enable input (CSX), the serial clock input (SCL) and serial data Input/Output (SDA) for data transmission. (страница 30: 7.1.3. Serial Interface)
Мне не понятно как они подключаются к Ардуино. К каким контактам подключать D/CX, CSX, SCL, SDA? Что из них MISO, MOSI, SCK? Из примера статьи http://arduino-kit.ru/catalog/id/displey-sensornyiy-24-tft-lcd-240x320 :
SDO (MISO) контакт 50 Ардуино МЕГА
SCK контакт 52 Ардуино МЕГА
SDI (MOSI) контакт 51 Ардуино МЕГА
D/C - любой, по назначению
RESET 3.3 V (подключить к РЕСЕТ ардуино)
CS - любой, по назначению
Из даташита SDA выполняет функцию SDO (MISO) и SDI (MOSI) (страница 31 и 215)I:
то к каким пинам все это дело подключать? Запутался я совсем.
p.masyukov, прочитали бы пред. страницы , уже отвечал на этот вопрос. ещё добалю что в планшетниках и навигаторах используют мощные процы , поэтому дешёвые дисплеи в которых нет контроллеров с видеопамятью (своего рода видеокарт). Поэтому их можно подключить только через спецплаты выполняющих эту роль. Узнав цену вы раздумаете что либо с ним делать. Иначе бы вы запустили бы уже его на малом разрешении.
chugun, это вопрос к вам. У вас же есть этот дисплей, вам и исследовать его. Разве что где-то вы ошиблись в подключении, раз читалка ничего не выдала. прочитайте тему, в последних сообщениях последние варианты читалок.
forfrends, как бы время чтоб это исследовать. Диспы по идее должны быть у меня с выведенными SDA .
Гляньте даташит ili9341, это же распространенный arduino SPI, тем более либа с аппаратным дружит. Можно еще глянуть pdf к UTFT , там должно быть описано подключение SPI "4пин" и "5пин" . В примере UTFT\examples\Arduino (AVR)\UTFT_Demo_320x240_Serial написано
значит используется варианты 5пина и 4пина MOSI(SDA),SCK,10,9 или погуглить DM-TFT28-105 https://drive.google.com/file/d/0B_PdRXFyf9Rvc1BUUGtEdVZPX0U/edit мож ещё что. надо время разобраться.
Иль методом тыка попробовать подключить по всякому на адафруит и утфт.
в утфт есть 2 разных инита s4p и s5p в папке UTFT\tft_drivers\ili9341 .
вызывать в примере по названиям как в memorysaver.h
//#define DISABLE_ILI9341_S4P 1 // MI0283QT9
Уважаемые slider и forfriends , тему то я читал ... С подключением всё ровно, т.к. экран снят с рабочего телефона и управляющие сигналы не плохо наблюдаются и различаются при помощи осцилографа, а именно RST, CS, RS, WR, RD, D0...D15 . Был бы лог.сканер - можно было бы снять инициализацию при включении телефона, но ...
Читалка у меня своя, т.к. пишу в CodeVisionAVR и судя по предыдущим постам - это не единственный экран у которого чтение ID возвращает нули.
Повторюсь - варианты инициализации пробовал для SPFD 5420A и ILI 9326 (т.к. именно эти драйверы поддерживают экраны с разрешением 240x400) - безрезультатно.
Вопрос оставляю открытым - может у кого имеется инфа по данному дисплею YDE FPC 32 T902 A1 ( фото выше ) ...
chugun посмотрите эту читалку: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=1#comment-169922
там идет чтение не только по нулевому регистру, а по всем доступным. Посмотрите код и попробуйте переделать для CVAVR. ID не всегда лежит по 0-му адресу. Кстати, не обязательно что бы контроллер поддерживал ваше разрешение. Могут поставить дисплей с меньшим разрешением чем выдает контроллер. Установленный у вас контроллер вполне может иметь разрешение 272х480 или 320х480, а использовать только часть видеопамяти. Советую попробовать иниты от других контроллеров.
forfrends , он походу в теме , оставьте, раз в другой оболочке сам написал. и осцилом полез.
У меня тож разные диспы 200х400 выдавали нули, закинул . пока через пару месяцев не вернулся к ним снова. оказалось управляющие пины по другому распологались там, не так как думал. подключил по другому и считалось всё. Бывали ещё пины (im) переворачивающие байты (8и8 //8080 8086), как ниббы в байте . бывало что пришлось задержки в читалку вставлять, для полных 16ти байтовых ответов немного иначе оказалось читалка должна читать (это можно проследить по изменениям в читалках до последних версий). Бывало что на шлейфе кондёр стоял на управляющем пине, поэтому через 10ком заваливался импульс. Считаю простой вариант это использовать для чтения ардуину Мегу, или немного портировать на MegaCore atmega128, там тоже есть цельные 8ми битные порты, так чтобы оставался аппаратный RX TX чтоб посмотреть большой ответ в мониторе порта.
// драйверов поддерживающих 240x400 много и они разные.
Эх, похоже придется затею с SPI отложить. Сильно узкие дорожки. Нет у меня навыка паять такею мелочь, велика вероятность что только испорчу дисплей. НО! По ходу все возможно было сделать. slider, вы сами и написали ответ: UTFT myGLCD(DMTFT28105,MOSI,SCK,10,NOTINUSE,9) для связи используется только MOSI (SDA). Да и на других сайтах нашел ту же инфу. Может чуток поднаберусь опыта - попробую. А пока разберусь еще с 3-мя дисплеями. Лежат и ждут своего часа :)
// Мне вот только странно что на ДУЕ ничего не заработало. Попробую стандартную (не правленную) библиотеку, может скомпилируется, а то не хочет.
Уже не плохо, хоть какие-то наводящие ответы, спасибо товарищи !!!
ArduinoMega и использую ...
Что за ниббы - поясните ???
Ещё вопрос по самой первой читалке из начала темы - разве чтение выполняется дерганьем WR при низком RD ??? Судя по даташиту на SPFD5420 - чтение происходит при дерганье RD, при высоком уровне на WR... Вот выдержка из даташита :
WR - In 80-system interface mode, a write strobe signal can be input via this pin and initializes a write operation when the signal is low.
RD - In 80-system interface mode, a read strobe signal can be input via this pin and initializes a read operation when the signal is low.
chugun, если взять ту же библиотеку UTFT, то в ней есть папка tft_drivers, в ней по папкам рассортированы контроллеры и инициализации к ним. Можно их испольховать. Лучше оставьте первую читалку, она только по 0-му адресу читает, возьмите читалку №3, ссылку давал выше. Она 100% вам выдаст какую-то полехную информацию.
///
Вопрос: как подключать татч?? На самом татче 4 пина, а все примеры идут с 5-и пиновыми настройками. Как быть? Наверное на шилдах стоят какие-то контроллеры татча? Если подключать на прямую, то нужна ли какая-то обвязка (резисторы конденсаторы)? Принцип работы татча знаю: два края "+" и "-", с других - чтение. Но хотелось бы что бы это заработало на библиотеке UTouch. Или может есть другие варианты?
....Ещё вопрос по самой первой читалке из начала темы - разве чтение выполняется дерганьем WR при низком RD ??? Судя по даташиту на SPFD5420 - чтение происходит при дерганье RD, при высоком уровне на WR...
да, в первой читалке был какойто косяк, но она работала ибо это для 16ти бит проканывало, (важны спады и подъемы RD, задержки, по pdf после спада получите ноли , но через небольшое время - достоверная инфа, Дальше после подъема , после небольшого времени инфа ещё сколько-то существует потом пропадает - получите ноли , гляньте хорошенько картинку Read Cycle Sequence ). В последних читалках вроде все как надо.
По сигналам все верно в даташите. Вот здесь http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=1#comment-168290 сделал картинки выдержки вроде из разных типов контроллеров
Возможно где и ошибаюсь, но понял и увидел так (что дергать WR RD и куда, при каком DC(RS) см. разные pdf):
a). 16бит где сразу идет ответ во все 16бит . А если дисп включить в режим 8бит то передастся сначала старший байт, дергаем снова - младший байт.
б). для других видов контроллеров 16бит передаются только младшими байтами, естественно само собой и 8бит режиме. При первом дерганье всегда получается лабуда или даже ваши ноли - ей верить нельзя так написано в pdf (типа случайное значение xx). надо второй раз дернуть - получим старший байт(первый параметр) , при третьем - младший(второй параметр), при последующих дерганьях получаем последующие параметры ,встречал до 10штук . В последующих читалках опрос каждого регистра сделал через сброс диспа, 1.чтобы небыло шлака(последних показаний) при первом дерганьи 2.чтобы дисп был адекватен, а то вдруг послали ему команду(регистр) сна или ещё какого нибудь каматоза. После каждого сброса надо немного подождать 100-150мсек, поэтому читалки так не быстро всё выдают. (возможно и во сне диспы отвечают, особо не проверял, сделать сброс после опроса всех параметров каждого регистра - незаморачиваясь . и третий, главный заяц, тот что случайное значение всегда будет равно 00 - что не будет засорять полученную таблицу всяким шлаком ) И. да, рекомендую притянуть все используемые пины Меги мегаомными резисторами к минусу, чтобы избежать другого вида мусора - остаточного. Там уж все равно на задевание пальца будет действовать, если появился мусор на задевание - ага , дисп не в режиме ответа!
Вопрос: как подключать татч?? На самом татче 4 пина, а все примеры идут с 5-и пиновыми настройками. Как быть? Наверное на шилдах стоят какие-то контроллеры татча? Если подключать на прямую, то нужна ли какая-то обвязка (резисторы конденсаторы)? Принцип работы татча знаю: два края "+" и "-", с других - чтение. Но хотелось бы что бы это заработало на библиотеке UTouch. Или может есть другие варианты?
TouchScreen.h ( от Адафруит) - для подключения тача напрямую надо 4 пина (2 однозначно аналоговых и 2 цифровых иль аналоговых) . нормально рабтает, есть параметр силы нажатия. для калибровки понадобиться мультиметр чтоб измерить сопротивления. Тач питается от ардуины , поэтому важно стабильное 5в , без просадок в хреновом USB шнуре.
UTouch.h (от UTFT, но сначала надо запускать пример для калибровки, в pdf и ютубе есть) - для подключения через SPI (вроде 5 пин) микруха SPI XPT2046 ,( питается от стаба рядом 3.0-3.3в и соответственно тач тоже) можно здесь поискать или погуглить . можно еще такие платки прикупить на Али и Ебай что-то типа " lcd tft adapter board " " XPT2046 PCB " " Pitch Adapter PCB FPC "
http://www.ebay.com/itm/2-8-2-4-inch-TFT-LCD-module-PCB-adapter-touch-IC-XPT2046-ads7843-for-arduino-/111096607326
http://www.ebay.com/itm/2-8-3-0-3-2-inch-TFT-LCD-module-PCB-adapter-touch-IC-XPT2046-ads7843-arduino-/121114582677
Это обычные переходники без установленной SPI микрухи тача , что касается широких шлейфов на любой шаг.
http://ru.aliexpress.com/af/lcd%252Btft%252Badapter%252Bboard.html?isAffiliate=y&initiative_id=SB_20160909072644&site=rus&g=y&SearchText=lcd+tft+adapter+board&needQuery=n
Для всяких двухрядных надо искать что то типа " double row pcb " их тоже много всяких разных и на любой шаг
разъемы под них что то типа " lcd tft connector "
В настоящее время продаются шилды и с емкостными тачами (Они дороже) , у продавцов есть примеры под них. Значит можно приладить емкостные тачи какие есть (хотя в местных магазах они бывают дешевле чем резистивные), главное найти под них уже написанную либу у продавцов шилдов или в гугле.
Вот такой имеется пирожок, писал выше. Живой но не как немогу завести. Шына 8Bit, без вариантов. http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-...
судя по количеству резисторов и дорожек от пинов дисплея (плохо видно) то это 16бит. Если хотите, можете прислать, гляну. мож как здесь начудили http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256 иль ещё что нового
судя по количеству резисторов и дорожек от пинов дисплея (плохо видно) то это 16бит. Если хотите, можете прислать, гляну. мож как здесь начудили http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256 иль ещё что нового
Нет, он точно 8 битный. Спаял с доски 8 бит на шлейфе, потом тупо 8 пустых контактов даже не разведены на сборки. Реагирует только на ili932x и то какой то призрак на 10-15 процентах экрана выводится. Статейка по ссылке помогла при ремонте битого индикатора, там дело как раз было в сигналах IM0-2, менял на то что было в инете на али подходящее по распиновке.
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
Еще попробовал вывести надпись на русском - получилась какая-то белиберда. Вместо букв набор символов и значков. Содержимое DefaultFonts.c:
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
Что скачали и где? Для хороших иконок надо чтоб SPI микруха с ними на шилде стояла, с нее беруться большие разноцветные иконки. Соответственно чтоб ардуина была подключена к дисплею и этой микрухе. Она параллелится MicroSD , но имеет отдельно свой CS (F_CS) . Загуглите .
Для простых спец символов заброшенных библиотекой в код программы, в ардуинку, используется косая черта и код символа . Для некоторых функций если следует затем обычный символ то надо кавычки закрыть и снова открыть
Пока все собрано, Проверьте для большого и семисегментного шрифта наличие пробела для затирки букв/цифр чтоб нулем или черным квадратом не затирать. А то в либе они случайной бякой затирались. Если отсутствует то надо его дополнить в символы больших шрифтов.
.
Либа "От СанСаныча": https://yadi.sk/d/UQHngzW-svzSH
Уже в примерах нашел русский. Да, там набор кавычек: (""\x99""o""\xa3"".c""\x9d\xa1\x97""o""\xa0\xab"") - читается как "(доп. символы)
Я тут накидал небольшую програмку для перевода русского текста в набор символов для UTFT и вставки в скетч:
http://portal4you.ucoz.ru/arduino/translater.rar
для примера: текст "Это пробный текст для перевода" будет переведен в :
\x93\xa4""o \xa3""po\x96\xa2\xab\x9e"" \xa4""e\x9f""c\xa4"" \x99\xa0\xaf"" \xa3""epe\x97""o\x99""a
это для быстрого вставки текста в скетч, чтобы не сидеть и не переводить по-букве. Можно и спец символы использовать (батарея, антена). В программе есть справка, там все описано.
Писал все в среде Autoit. Исходный код (кому надо):
Вопрос по библиотеке UTFT: В библиотеке что я скачал присутствует расширенный набор шрифта - добавлен русский текст и некоторые иконки (смайлики, батирея, уровень сигнала...) вопрос как вызывать эти иконки?
В теме http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru... в основном описывается как руссифицировать библиотеку Adafruit-GFX, но есть пример как использовать специальные символы из шрифта.
Спасибо, уже разобрался. Даже небольшую програмку написал в помощь - смотрите пост выше.
Программа определения типа монитора выдала следующее:
gtrance , врятли дисплей у вас подлючен как надо.
вы не внимательно читали тему. изучите повнимательней. иначе бы у вас уже все получилось.
// вы не использовали "вставка-редактирование кода" , и это не последняя читалка. в общем дисплей неправильно подключен.
все заработало со старой IDE и старой библиотекой.
*
Добрый день, есть такой экран https://www.ghielectronics.com/downloads/man/LQ043T1DG01.pdf
LQ043T1DG01, вставлен в некую плату, видимо отладочный кит, но неважно, так вот возможно ли этот экран подключить а ардуине, например к меге, подскажите куда копать, с чего начать.
Добрый день, есть такой экран https://www.ghielectronics.com/downloads/man/LQ043T1DG01.pdf
LQ043T1DG01, вставлен в некую плату, видимо отладочный кит, но неважно, так вот возможно ли этот экран подключить а ардуине, например к меге, подскажите куда копать, с чего начать.
когда ж удосужитесь читать хотябы первую страницу темы, ответы на эти диспы уже были , причем на каждой странице
comment-91565
comment-192094
comment-94551
ничего вы с ними не сделаете , раз спрашиваете.
еще тема с RGB интерфейс дисплей pomogite-pozhaluista-podklyuchit-kitaiskii-tft-displei-k-arduino
Спасибо болшьшое, вы так любезны, ответив на мой вопрос о великий гуру, а если честно то неx@й вы@бывaться, ответил спокойно и все, а то читай учись, просто помоги человеку и все.. попробуй найди в куче постов что это именно твой дисплей...
jafff, может так быть что кроме вас с таким дисплеем никто не сталкивался. Лучше чем вы никто с ним не разберется. В этой теме форума приведены 100% работающие МЕТОДЫ. Ну и приведены примеры где эти методы сработали и получилось подключить и запустить дисплей. Ваш вопрос задает каждый новый в теме, и ответ всегда один - прочтите тему. Это поможет понять принцыпы "победы" над дисплеями. Не воспринимайте все в штыки, мы поможем чем сможем, просто и сами приложите усилия, ведь кроме вас никто не сможет использовать ваш дисплей.
Да, теперь я понимаю почему многие на форуме отправляют в тему "ищу исполнителя".
Ну что же вы так сразу... Slider дал хорошие ссылки - там все коротко и четко написано по таким дисплеям как у вас.
Вам действительно следовало почитать тему - вы не сможете использовать этот дисплей на ардуине, так как у него нет видеопамяти. Подробнее смотрите в постах выше, Slider писал о подобных дисплеях.
Это я не вам, это я для человека писал. А на 2560 можно попробовать, поставить штуки 4 внешней SRAM сформировать Vsink, Hsink итд. Если найдет или разберется как прицепить 565ру5 можно и динамическую память. Только работать будет не очень. Как иксперимент можно взять ППЗУ, прошить в них какой то спрайт на весь экран и тупо вывести, это для отладки протокола обмена. Ну а потом можно и дальше двигаться.