Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Многоячеистый пользовательский символ

В этом разделе мы создадим Ferris из шести соседних сеток с помощью генератора с предыдущей страницы. Ниже приведён код на Rust, который использует сгенерированные массивы байтов, чтобы вывести глиф на ЖК-дисплей.

Ferris из шести ячеек на LCD-дисплее

Здесь мы сосредоточимся только на составлении глифа. Настройка проекта и инициализация ЖК-дисплея остаются такими же, как раньше, и в этом разделе повторяться не будут.

Сгенерированные массивы байтов для символов

#![allow(unused)]
fn main() {
const SYMBOL1: [u8; 8] = [
    0b00110, 0b01000, 0b01110, 0b01000, 0b00100, 0b00011, 0b00100, 0b01000,
];

const SYMBOL2: [u8; 8] = [
    0b00000, 0b00000, 0b00000, 0b10001, 0b10001, 0b11111, 0b00000, 0b00000,
];

const SYMBOL3: [u8; 8] = [
    0b01100, 0b00010, 0b01110, 0b00010, 0b00100, 0b11000, 0b00100, 0b00010,
];

const SYMBOL4: [u8; 8] = [
    0b01000, 0b01000, 0b00100, 0b00011, 0b00001, 0b00010, 0b00101, 0b01000,
];

const SYMBOL5: [u8; 8] = [
    0b00000, 0b00000, 0b00000, 0b11111, 0b01010, 0b10001, 0b00000, 0b00000,
];

const SYMBOL6: [u8; 8] = [
    0b00010, 0b00010, 0b00100, 0b11000, 0b10000, 0b01000, 0b10100, 0b00010,
];
}

Объявляем их как символы

Каждый глиф хранится в отдельной ячейке CGRAM. В этом примере мы используем ячейки с 0 по 5.

#![allow(unused)]
fn main() {
lcd.custom_char(&mut Delay, &SYMBOL1, 0);
lcd.custom_char(&mut Delay, &SYMBOL2, 1);
lcd.custom_char(&mut Delay, &SYMBOL3, 2);
lcd.custom_char(&mut Delay, &SYMBOL4, 3);
lcd.custom_char(&mut Delay, &SYMBOL5, 4);
lcd.custom_char(&mut Delay, &SYMBOL6, 5);
}

Вывод

Первые три глифа выводим в первой строке, а оставшиеся три — во второй строке, выравнивая их так, чтобы получился один составной символ.

#![allow(unused)]
fn main() {
lcd.set_cursor(&mut Delay, 0, 4)
    .write(&mut Delay, CustomChar(0))
    .write(&mut Delay, CustomChar(1))
    .write(&mut Delay, CustomChar(2));

lcd.set_cursor(&mut Delay, 1, 4)
    .write(&mut Delay, CustomChar(3))
    .write(&mut Delay, CustomChar(4))
    .write(&mut Delay, CustomChar(5));
}

Клонируйте существующий проект

Можно клонировать проект, который я создал, и перейти в папку mutli-glyph.

git clone https://github.com/ImplFerris/pico2-embassy-projects
cd pico2-embassy-projects/lcd/mutli-glyph/

Версия на rp-hal

Версия с использованием rp-hal также доступна:

git clone https://github.com/ImplFerris/pico2-rp-projects
cd pico2-rp-projects/lcd/mutli-glyph/