Началось всё с того, что появилась необходимость добавить поддержку некоторых кириллических символов в библиотеке.
Имелся экран с i2c модулем и ардуинка.
Имелся экран с i2c модулем и ардуинка.
Скачать библиотеку для ардуино можно по ССЫЛКЕ
Для создания кастомных символов используется массив вида :
uint8_t n[8] = {0x0, 0x0, 0x11, 0x11, 0xff, 0x11, 0x11, 0x0};
Элементы массива начиная с 0го связаны с номером строки. 0ой элемент - первая строка, первый - вторая и т.д.
На рисунке мы видим наглядное изображение этого массива (это буква н :). Откуда же брать HEX(шестнадцатеричные0 значения? Всё просто.
Открываем например Каукулятор виндоус и выбираем на нём режим программера (мыж программисты).
Далее, выбрав BIN, забиваем последовательность пикселей в строке с лева направо. 1 - горит, 0 - не горит.
Например - для 5ой строки 11111. Для 4ой - 10001. Понятно да?
В разделе HEX увидим нужную нам циферку. Остаётся поставить её в массив в виде 0x1F (0xFF даёт аналогичный результат)
Вот пример моего примитивного, но работающего кода:
#include <Wire.h> #include <LiquidCrystal_I2C.h> uint8_t n[8] = {0x0, 0x0, 0x11, 0x11, 0xff, 0x11, 0x11}; //н uint8_t mya[8] = {0x0, 0x0, 0x10, 0x10, 0x1e, 0x11, 0x1e}; // ь uint8_t j[8] = {0x0, 0x0, 0x15, 0x15, 0xe, 0x15, 0x15}; //ж uint8_t Te[8] = {0x0, 0x1F, 0x4, 0x4, 0x4, 0x4, 0x4,0x0}; //т uint8_t m[8] = {0x0, 0x0, 0x11, 0x1B, 0x15, 0x11, 0x11}; //м uint8_t p[8] = {0x0, 0x0 ,0xFF, 0x11, 0x11, 0x11, 0x11};//п uint8_t u[8] = {0x0, 0x0, 0x11, 0x11, 0xf, 0x1, 0xe}; //у uint8_t l[8] = {0x0, 0x0, 0x7, 0x9, 0x11, 0x11, 0x11}; // л LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); lcd.createChar(0, n); lcd.createChar(1, mya); lcd.createChar(2, j); lcd.createChar(3, Te); lcd.createChar(4, m); lcd.createChar(5, p); lcd.createChar(6, u); lcd.createChar(7, l); lcd.home(); //температура lcd.write(3); lcd.print("e"); lcd.write(4); lcd.write(5); lcd.print("e"); lcd.print("p"); lcd.print("a"); lcd.print("m"); lcd.write(6); lcd.print("p"); lcd.print("a"); lcd.setCursor(0, 1); lcd.print("B"); lcd.write(7); lcd.print("a"); lcd.write(2); lcd.write(0); lcd.print("o"); lcd.print("c"); lcd.print("m"); lcd.write(1); } void loop() { //ничего не делаем }
Комментариев нет:
Отправить комментарий