OLED 128x64 Свой шрифт
- Войдите на сайт для отправки комментариев
Вс, 29/09/2019 - 15:45
Здравствуйте! Подскажите в чем проблема.
Хочу нарисовать свой шрифт.
Рисую цифру 5.
В файле DefaultFonts.c добавляю:
fontdatatype Test[] PROGMEM = { 0x18, 0x28, 0x35, 0x01, //Высота //Ширина //№вASCII //Кол.символов 0x15, 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, 0xF8, 0xFF, 0x80, 0x0F, 0x00, 0xF8, 0xFF, 0x03, 0x0E, 0x00, 0x38, 0xC0, 0x03, 0x0C, 0x00, 0x38, 0xC0, 0x03, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0x1C, 0x00, 0x38, 0xE0, 0x00, 0x1C, 0x00, 0x38, 0xE0, 0x00, 0x1E, 0x00, 0x38, 0xE0, 0x00, 0x1E, 0x00, 0x38, 0xE0, 0x00, 0x0E, 0x00, 0x38, 0xE0, 0x01, 0x0F, 0x00, 0x38, 0xC0, 0x01, 0x07, 0x00, 0x38, 0xC0, 0x83, 0x07, 0x00, 0x38, 0x80, 0xFF, 0x03, 0x00, 0x38, 0x00, 0xFF, 0x01, 0x00, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 };
Загружаю на arduino:
#include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t Test[]; void setup() {} void loop() { myOLED.begin(); myOLED.clrScr(); myOLED.setFont(Test); myOLED.print("5", CENTER, 13); myOLED.update(); delay (500); }
Но получаю:
В чем может быть проблема?
Что то не ясно как вы кодировали символ ?!
Что то не ясно как вы кодировали символ ?!
С помощью программы GLCD Font Creator
Явно ошибка в кодировке. Пробуйте вставить все FF например. Потом первый замените на FE. Так можно понять принцип кодирования.
Первые 24 кода 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00
Явно ошибка в кодировке. Пробуйте вставить все FF например. Потом первый замените на FE. Так можно понять принцип кодирования.
Первые 24 кода 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00
Как придти к этому значению
Так чтобы понять в чем косяк - можно и самому коды описать. Это же не сложно.
5 строк по 24 символа. Каждый символ это столбик из 8 точек записанный в двоичном виде (верхняя точка - младший бит)
Так начни с меньшего массива, оно и понятнее будет.
Почему тогда первый байт отличен от нуля? На вашем рисунке 0х00 а в фонте 0х15 - откуда ошибка ? И запятая в конце фонта?
Так я и говорю что GLCD Font Creator что то другое нарисовал - для другого типа дисплеев или типа того.
P.S. вот ТУТ вроде куча готовых шрифтов ...