Работа OLED 0.91 inch 128*32 с библиотекой u8g2 (бывшая u8glib) (LRR 0.91 inch)
Библиотека u8g2 (бывшая u8glib) позволяет выводить на дисплей текстовую информацию. Большой выбор шрифтов и большое количество поддерживаемых дисплеев делает эту библиотеку наиболее популярной.
Для начала рассмотрим подключение дисплея OLED 0.91 inch 128*32 к ARDUINO. Для подключения потребуется всего 4 провода: GND, 5V, SCL (Clock Line) и SDA (Data Line)
В моем случае используются:
— версия программы ARDUINO 1.8.13
— плата ARDUINO UNO
— дисплей OLED 0.91 inch 128*32
— библиотека u8g2
Если у вас не установлена эта библиотека, то ее нужно установить. Пункт меню ИНСТРУМЕНТЫ — УПРАВЛЯТЬ БИБЛИОТЕКАМИ. Далее найти и установить u8g2
Я нашел в интернете самый простой скетч и слегка переработал его, чтобы понять возможности вывода текста на экран.
Работу скетча описал в комментариях
#include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> #include <Wire.h> U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0); // описание OLED 0.91 inch 128*32 void setup(void) { u8g2.begin(); } void loop(void) { u8g2.clearBuffer(); // очищаем буфер u8g2.setFont(u8g2_font_cupcakemetoyourleader_tr); // выбираем красивый шрифт u8g2.drawStr(0, 29, "D.A.CHOCOLATE"); // начальная позиция и текст u8g2.sendBuffer(); // отправляем в буфер delay(2000); // пауза for (int i = 0; i < 250; i++) { // добавляем цикл для эффекта бегущей строки u8g2.clearBuffer(); u8g2.setFont(u8g2_font_bubble_tr); // еще один красивый шрифт u8g2.drawStr(125-i, 29, "FANYA"); // горизонтальная позиция меняется от 125 до -125 u8g2. sendBuffer(); delay(20); // этой паузой задается скорость } u8g2.clearBuffer(); u8g2.setFont(u8g2_font_tenstamps_mf); // еще один красивый шрифт u8g2.drawStr(15, 29, "Little"); u8g2.sendBuffer(); delay(1500); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_heavybottom_tr); // еще один красивый шрифт u8g2.drawStr(32, 29, "Red Rat"); u8g2.sendBuffer(); delay(2000);
Посмотреть и выбрать шрифты можно по ссылке https://github.com/olikraus/u8g2/wiki/fntlistall
Шрифты отсортированы по размеру. Слева образец. Копируем название нужного шрифта и вставляем в скетч. Можно найти шрифты с русскими буквами, шрифты с символами (заряд батареи, уровень сигнала и т.п.)
Также в скетче указывается позиция вывода текста
u8g2. drawStr(32, 29, "Red Rat");
Как видно на фото, сначала указывается горизонтальная позиция (слева направо), затем вертикальная (сверху вниз). Значения могут выходить из диапазона 128*32. За счет этого у меня реализована бегущая строка. При отрицательных значениях текст начинается с позиции за видимой частью дисплея.
Для отображения нескольких строк делаем следующие:
u8g2.clearBuffer(); u8g2.setFont(u8g2_font_tenstamps_mf); u8g2.drawStr(15, 16, "Line 1"); u8g2.drawStr(15, 32, "Line 2"); u8g2.sendBuffer(); delay(4500);
В следующий раз я напишу как выводить на этот дисплей графическую информацию.
На этом все. Спасибо всем за внимание. Если вам помогла эта статья, можете сказать мне спасибо просто посмотрев рекламу 🙂
BSP430: include/bsp430/utility/u8glib.h Ссылка на файл
Объявления, относящиеся к поддержке u8glib для конкретной платформы. Подробнее…
#include
#include
Перейдите к исходному коду этого файла.
#define | configbsp430_utility_u8glib 0 |
#Define | 229_UTILIE0017 |
#define | BSP430_U8GLIB_REFRESH_INTERVAL_MS 0 |
int | iBSP430u8gRefresh (u8g_t *u8g) |
hBSP430halSERIAL | hBSP430u8gSPI ( void) |
u8g_dev_t | xBSP430u8gDevice |
Объявления, относящиеся к поддержке u8glib для конкретных платформ.
Универсальная графическая библиотека для 8-битных встраиваемых систем — это портативная библиотека с текстовой и графической поддержкой для ЖК-дисплеев, обычно используемых на платформах микроконтроллеров.
u8glib находится под сильным влиянием Arduino, и добавление еще одной целевой платформы в саму библиотеку было бы запутанным; однако довольно легко создать поддержку моста на каждой платформе, чтобы обеспечить интерфейс от аппаратного обеспечения к библиотеке. Этот модуль определяет общий материал, относящийся к интерфейсам, предоставляемым BSP430.
Большинство идентификаторов и констант периферийных ресурсов зависят от платформы; например BSP430_PLATFORM_TRXEB_LCD_SPI_PERIPH_HANDLE. Интерфейс для u8glib не требует, чтобы они были абстрагированы и общедоступны.
Для доступа к платформенно-зависимому интерфейсу необходимо добавить u8g_bsp430.c
к набору исходных файлов, скомпилированных в программу, вместе с необходимыми частями самой u8glib, включая любые желаемые шрифты.
$(PLATFORM_U8G_PB_C)
, который определен в специфичном для платформы файле Makefile.common
, чтобы выбрать правильную низкоуровневую реализацию на основе ориентации экрана и поддерживаемых цветов.- См. Также
- U8GLIB LCD Текст и графика
- Домашняя страница
- http://github.com/pabigot/bsp430
- . Под лицензией BSD-3-Clause
#define BSP430_U8GLIB_REFRESH_INTERVAL_MS 0 |
Укажите интервал в миллисекундах, через который следует вызывать iBSP430u8gRefresh(), чтобы поддерживать стабильное отображение.
Если значение равно нулю, нет необходимости периодически обновлять дисплей.
- По умолчанию:
- Значение здесь заменено ранее встречавшимися определениями.
- Платформенное значение:
- Здесь не определено; включите
, чтобы получить правильное значение этого макроса.
- Примеры:
- утилита/u8glib/main.c.
#define BSP430_UTILITY_U8GLIB include |
Указывает, что на платформе доступен ЖК-интерфейс U8GLIB. Это задается заголовком, зависящим от платформы, когда configBSP430_UTILITY_U8GLIB имеет значение true и платформа поддерживает устройство U8GLIB.
Если это определение оценивается как false, то либо адаптация u8glib не запрашивалась, либо платформа не предоставила ее.
Пример использования см. в тексте и графике ЖК-дисплея U8GLIB.
- Только препроцессор C:
- Значение этого макроса может ограничивать его использование условными директивами препроцессора C.
- Зависимость:
- configBSP430_UTILITY_U8GLIB
- По умолчанию:
- Значение здесь заменено ранее встречавшимися определениями.
#define configBSP430_UTILITY_U8GLIB 0 |
Определите, чтобы запросить, чтобы платформа включила адаптацию U8GLIB.
Некоторые платформы имеют встроенный ЖК-дисплей, для которого доступен мост к u8glib. Определение этого макроса в вашем
- Только препроцессор C:
- Значение этого макроса может ограничивать его использование условными директивами препроцессора C.
- Воздействует:
- BSP430_UTILITY_U8GLIB
- По умолчанию:
- Значение здесь заменено ранее встречавшимися определениями.
hBSP430halSERIAL hBSP430u8gSPI | ( | недействителен | ) |
Предоставьте доступ к устройству SPI, используемому для связи с устройством u8glib.
- Возвращает
- Устройство SPI для связи с ЖК-дисплеем. Действует только после вызова u8g_Init(). Если возвращается значение null, устройство нельзя использовать.
- Примеры:
- утилита/u8glib/main.c.
инт iBSP430u8gRefresh | ( | u8g_t * | у8г | ) |
Функция, которая должна вызываться через миллисекунды BSP430_U8GLIB_REFRESH_INTERVAL_MS, чтобы дисплей продолжал работать.
Например, это требуется для ЖК-дисплея Sharp Memory для переключения VCOM, чтобы на дисплее не накапливалось смещение постоянного тока.
- Примечание
- Эта функция подходит для вызова из обработчика прерывания. Возвращаемое значение соответствует ожиданиям возвращаемых значений обратного вызова прерывания.
- Параметры
u8g ручка u8glib для дисплея
- Возвращает
- Обычно ноль или значение, как описано в разделе Возвращаемые значения обратного вызова прерывания.
- Примеры:
- утилита/u8glib/main.c.
u8g_dev_t xBSP430u8gDevice |
Платформенное устройство для встроенного ЖК-дисплея.
- Зависимость:
- BSP430_UTILITY_U8GLIB
- Примеры:
- утилита/u8glib/main.c.
Как использовать OLED-дисплей с Raspberry Pi Pico
Перейти к основному содержаниюКогда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Вот как это работает.
(Изображение предоставлено Tom’s Hardware)Обновление от 23 апреля 2021 г.:
Мы расширили это руководство, и теперь оно включает разделы о рисовании фигур и объектов на дисплее, о том, как преобразовывать растровые изображения для OLED-дисплеев и о том, как анимировать изображения.
Оригинальная статья:
У Raspberry Pi Pico нет недостатка в вариантах цифровых дисплеев. Мы можем использовать ЖК-экраны, вывод на VGA/DVI или использовать сделанные на заказ экраны, такие как Pico Display или Pico Explorer Base IPS-дисплей. Но иногда нам нужен небольшой недорогой вариант, чтобы выполнить работу. OLED-экраны, такие как 0,96-дюймовая модель, используемая в этом руководстве, просты в использовании с MicroPython и стоят всего несколько долларов (или фунтов), что делает их идеальными для проектов.
В этом руководстве мы узнаем, как подключить OLED-экран к Raspberry Pi Pico через интерфейс I2C, затем установим библиотеку MicroPython через редактор Thonny и узнаем, как использовать ее для вывода текста на дисплей.
Экран OLED использует протокол I2C для взаимодействия с Raspberry Pi Pico. Это означает, что мы только требуем.
- Raspberry Pi Pico под управлением MicroPython
- 4 перемычки «мама-мама»
- OLED-экран I2C 128 x 64 (открывается в новой вкладке)
Как подключить OLED-экран к Raspberry Pi Pico1
2 следующая проводка. (Изображение предоставлено Tom’s Hardware)1. Подключите GND экрана к любому GND на пико (черный провод).
2. Подключите VDD/VCC к 3V3 на Pico (красный провод).
3. Подключите SCK/SCL к I2C0 SCL (GP1, физический контакт 2, оранжевый провод).
4. Подключите SDA к I2C0 SDA (GP0, физический контакт 1, желтый провод).
5. Подключите Raspberry Pi Pico к компьютеру и откройте приложение Thonny.
С подключенным оборудованием и открытым Thonny теперь нам нужно установить библиотеку, чтобы Python мог взаимодействовать с экраном.
6. Нажмите Инструменты > Управление пакетами , чтобы открыть менеджер пакетов Тонни для библиотек Python.
7. Введите «ssd1306» в строке поиска и нажмите «Поиск в PyPI».
(Изображение предоставлено Tom’s Hardware)8. Нажмите «micropython-ssd1306» в возвращенных результатах, а затем нажмите Установить Это скопирует библиотеку в папку lib на Pico.
(Изображение предоставлено Tom’s Hardware)9. Нажмите «Закрыть», чтобы вернуться к основному интерфейсу.
Программирование OLED-экрана на Raspberry Pi Pico
Чтобы написать одну строку текста на OLED-экран, нам нужно всего шесть строк MicroPython.
1. Из машинной библиотеки импортируйте классы Pin и I2C . Они используются для связи с OLED-экраном, подключенным к GPIO Pico.
из PIN-кода импорта машины, I2C
2. Импорт библиотеки OLED-экранов .
из ssd1306 импорт SSD1306_I2C
3. Создайте объект i2c, , в котором хранится используемый канал I2C, в данном случае нулевой, выводы SDA и SCL, к которым мы подключены, и, наконец, частота, с которой мы подключаемся к OLED-экрану.
i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)
4. Создайте объект oled , который будет использоваться для связи с OLED-экраном. Он имеет три аргумента: ширину и высоту экрана (128 x 64 пикселя) и сведения о соединении I2C.
олэд = SSD1306_I2C(128, 64, i2c)
5. Напишите строку tex t в левом верхнем углу экрана, позиция 0,0.
oled.text("Tom's Hardware", 0, 0)
6. Наконец используйте команду show для вывода вывода на экран.
oled.show()
Окончательный код должен выглядеть так
из PIN-кода импорта машины, I2C из ssd1306 импортировать SSD1306_I2C i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) олэд = SSD1306_I2C(128, 64, i2c) oled.text("Оборудование Тома", 0, 0) олэд.шоу()(Изображение предоставлено Tom’s Hardware)
7. Сохраните и запустите свой код. Как и в случае с любым скриптом Python в Thonny, нажмите «Файл» >> «Сохранить» и сохраните файл на Raspberry Pi Pico как oled-test.py. Когда будете готовы, нажмите зеленую кнопку воспроизведения, чтобы запустить код, и ваш текст появится на OLED-экране.
Рисование простых форм на OLED-экранах с помощью Pico
Простые формы и линии можно рисовать на дисплее с помощью всего одной команды. Для каждой из этих команд потребуется oled.show() , чтобы вас видели. Обратите внимание, что у большинства этих методов есть цветовой параметр, но с монохромным экраном вы всегда будете устанавливать цвет «1» (0 означает, что пиксель выключен).
- oled.pixel(x,y,c): Нарисуйте пиксель в позиции x,y и используйте c для установки цвета пикселя, где 1 горит, 0 не горит. Пример:
oled.pixel(10,10,1)
- oled.hline(x,y,w,c): Нарисуйте горизонтальную линию из точки x,y, которая имеет заданную ширину (w) в пикселях и цвет (c). Пример:
oled.hline(2,3,4,1)
- oled.vline(x,y,h,c): Нарисуйте вертикальную линию из точки x,y, которая имеет заданную высоту (h) в пикселях и цвет (c). Пример:
oled.vline(0, 0, 64, 1)
- oled.line(x1,y1,x2,y2,1): Проведите диагональную линию от точек x1, y1 до x2, y2 цветом ( c ). Пример:
oled.line(0, 0, 128, 64, 1)
- oled.rect(x,y,w,h,c): Нарисуйте прямоугольник, начинающийся в точке x.y, для заданной ширины (w) и высоты (h). Используйте ( c ), чтобы установить цвет пикселей. Например:
oled.rect(0, 0, 64, 32, 1)
- oled.fill_rect(x,y,w,h,c) : Нарисуйте прямоугольник с заливкой, начиная с точки x.y, и для заданной ширины (w) и высоты (h) используйте ( c ), чтобы установить цвет пиксели. Например:
oled.fill_rect(0, 0, 64, 32, 1)
Отображение графики на OLED-экране с помощью Pico
(Изображение предоставлено Tom’s Hardware)Мы можем отображать на экране гораздо больше, чем просто текст. Используя умную технику, мы можем преобразовать изображение JPEG в строку байтов.
Мы будем использовать приведенный выше код в качестве основы для работы. Так что, если вы еще этого не сделали, скопируйте и вставьте окончательный код выше в Thonny.
1. Импортировать библиотеку framebuf. Эта библиотека позволяет коду создавать растровые изображения и отображать их на дисплее.
от импорта машины Pin, I2C из ssd1306 импортировать SSD1306_I2C импорт кадров
2. Создайте новый объект TH, в котором будет храниться массив байтов, составляющих наше изображение. Пока оставьте содержимое массива пустым, мы заполним его позже.
i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) олэд = SSD1306_I2C(128, 64, i2c) TH = массив байтов ()
3. Создайте объект FB, который будет загружать изображение в фреймбуфер. Мы передаем имя объекта bytearray, размеры изображения (64 x 64 пикселя), а затем настраиваем изображение как 1-битное монохромное изображение.
fb = framebuf.FrameBuffer(TH,64,64, framebuf.MONO_HLSB)
4. Очистите экран, а затем перенесите изображение на экран. Затем используйте show для обновления экрана. Блиттинг рисует изображение на экране, в данном случае он помещает изображение 64 x 64 в мертвую точку экрана. Где 32 — горизонтальное (x) положение, а 0 — вертикальное (y) положение.
олед.заливка(0) oled.blit(fb,32,0) олэд.шоу()
Наш объект, TH, в настоящее время не имеет изображения для отображения. Чтобы создать массив байтов изображения, нам сначала нужно подходящее изображение. Размер экрана 128 х 64 пикселя, но изображение размером 64 х 64 пикселя прекрасно помещается в центре экрана. Изображение должно быть в формате JPEG.
Чтобы преобразовать изображение в массив байтов, мы будем использовать скрипт Python img2bytearray Дона Хуи (Novaspirit).
1. Загрузите и распакуйте ZIP-архив на свой компьютер. Это создает папку img2bytearray, в которой хранится файл Python Hui.
2. Скопируйте изображение в папку img2bytearray.
3. Откройте окно командной строки или терминала и перейдите в папку img2bytearray.
4. Чтобы преобразовать изображение, мы вызываем команду img2bytearray. Нам нужно указать три дополнительных параметра. Первое — это имя файла изображения, следующие два — размеры изображения, в данном случае 64 на 64 пикселя.
python3 img2bytearray.py ВАШЕ-ИЗОБРАЖЕНИЕ.jpg 64 64
5. Команда выводит поток байтов. Скопируйте текст из b ‘…’ и вставьте его в скобки нашего объекта TH.
TH = массив байтов (b’...’)
Окончательный код должен выглядеть следующим образом
из PIN-кода импорта машины, I2C из ssd1306 импортировать SSD1306_I2C импорт кадров i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) олэд = SSD1306_I2C(128, 64, i2c) TH = массив байтов (b’…’) fb = framebuf.FrameBuffer(TH,64,64, framebuf.MONO_HLSB) oled.fill(0) oled.blit(fb,32,0) олэд.шоу()
6. Сохраните и запустите свой код. Как и в случае с любым скриптом Python в Thonny, нажмите «Файл» >> «Сохранить» и сохраните файл на Raspberry Pi Pico как oled-test.py. Когда будете готовы, нажмите зеленую кнопку воспроизведения, чтобы запустить код, и ваше изображение появится на OLED-экране.
Анимация графики на OLED-экране с помощью Pico
(Изображение предоставлено Tom’s Hardware)Создание анимации на OLED-дисплее — это перемещение или изменение объектов для создания иллюзии движения. На приведенном выше GIF вы можете увидеть молоток Tom’s Hardware и логотип, прокручивающийся по экрану. Для этого мы использовали двухбайтовые массивы для молотка (TH) и логотипа (LOGO).
Мы снова будем использовать код из предыдущих примеров.
1. Импорт предыдущих библиотек кода.
из импорта машины Pin, I2C из ssd1306 импортировать SSD1306_I2C импорт кадров
2. Настройте контакты I2C для OLED-экрана.
i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) олэд = SSD1306_I2C(128, 64, i2c)
3. Создайте цикл while True для непрерывного выполнения кода.
пока верно:
4. Создать массив байтов TH . Там мы храним байты, из которых состоит аппаратный молоток Тома.
TH = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[P\x00\x00\x00\x00\x00\x03\xad\xec\x0f\x00 \x00\x00\x00\rv\xb6\x1a\x80\x00\x00\x00\x16\xdb[m\x80\x00\x00\x00um\xb5\xb6\x80\x00\x00\x00[\xb5n\ xdb\x00\x00\x00\x01\xadW\xb5m\x80\x00\x00\x01w\xed[\xb6\x80\x00\x00\x03\xa8\x1a\xec+\x00\x00\x00\x05@\ x17P\x1d\x00\x00\x00\x0e\x00\r\xb0\x06\x80\x00\x00\x08\x00\n\xd0\x00\x00\x00\x00\x08\x00\x17`\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x1f\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\ x00\x00\x00\r`\x00\x00\x00\x00\x00\x00\x17\xb0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00 \x00\x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xa0\x00\x00\x00\x00\x00\x00\ x0bp\x00\x00\x00\x00\x00\x00\x1d\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00\x17p\x00\ x00\x00\x00\x00\x00\x1a\xa0\x00\x00\x00\x00\x00\x00\r\xd0\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\ x00\x00\x00\x00\x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xd0\x00\x00\x00\x00 \x00\x00\x1bp\x00\x00\x00\x00\x00\x00\r\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00 \x1b`\x00\x00\x00\x00\x00\x00\x15\xb0\x00\x00\x00\x00\x00\x00\x1e\xd0\x00\x00\x00\x00\x00\x00\x13p\ x00\x00\x00\x00\x00\x00\x1d\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x15\xd0\x00\ x00\x00\x00\x00\x00\x1a\xb8\x00\x00\x00\x00\x00\x00\x17`\x00\x00\x00\x00\x00\x00\x1a\xd8\x00\x00\x00 \x00\x00\x00\x17h\x00\x00\x00\x00\x00\x00\x1a\xb0\x00\x00\x00\x00\x00\x00\x1d\xd8\x00\x00\x00\x00\x00 \x00+h\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b\xd8\x00\x00\x00\x00\x00\x00\x16 `\x00\x00\x00\x00\x00\x00\x0b\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00')
5. Создайте объект FB, который будет загружать изображение во фреймбуфер, а затем очищать экран. Мы передаем имя объекта bytearray, размеры изображения (64 x 64 пикселя), а затем настраиваем изображение как 1-битное монохромное изображение.
fb = framebuf.FrameBuffer(TH,64,64, framebuf.MONO_HLSB) oled.fill(0)
6. Используйте цикл for с диапазоном от -64 до 128, чтобы создать базовую анимацию скольжения для молота. Отрицательное значение скрывает молоток в левой части экрана, медленно прокручивая молоток слева направо, пока он не выйдет за пределы видимого диапазона. Изменив значение «i» внутри oled.blit() создаем иллюзию движения.
для i в диапазоне (-64,128): oled.blit(fb,i,0) олэд.шоу()
7. Создайте новый массив байтов для логотипа Tom’s Hardware.
LOGO = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x800\xc0\xc7\xf8~0\xc3\x0c\x1f\x87\xf8 \x0c\x00\x00\x01\x800\xc1\xcf\xec\x7f0\xc7\x1c\x1f\xc7\xf8\x0c\x00\x00\x01\x800\xc1\xc1\x8ec\x99\xc6\x1c\x18\xe6\x00\x0c\x0c&`\x180\xc3\xe0\x06a\x99\xe6\x1e\x18f\x00\x1f>\x7f\xf8~0\xc3a\x8ea\x99\ xe66\x18f\x00\x0cws\x98d?\xc3a\xbca\x99\xee6\x1f\xc7\xf0\x0ccs\x98`?\xc61\xb8a\x8fs\x18|0\xcc\x1d\ x86|\x06\x18\xc1\xd8g\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00')
8. Создайте объект FB, который будет загружать изображение во фреймбуфер, а затем очищать экран. Мы передаем имя объекта bytearray, размеры изображения (128 x 64 пикселя), а затем настраиваем изображение как 1-битное монохромное изображение.
fb = framebuf.FrameBuffer(LOGO,128,64, framebuf.MONO_HLSB)
9. Остальной код в основном такой же, как и раньше, с той лишь разницей, что диапазон цикла for меняется с -128 на 128, чтобы приспособиться к более крупному логотипу Tom’s Hardware, прокручиваемому по экрану.
oled.fill(0) для я в диапазоне (-128,128): oled.blit(fb,i,0) олэд.шоу()
Ваш код должен выглядеть так:
из PIN-кода импорта машины, I2C из ssd1306 импортировать SSD1306_I2C импорт кадров i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) олэд = SSD1306_I2C(128, 64, i2c) пока верно: TH = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[P\x00\x00\x00\x00\x00\x03\xad\xec\x0f\x00\x00 \x00\x00\rv\xb6\x1a\x80\x00\x00\x00\x16\xdb[m\x80\x00\x00\x00um\xb5\xb6\x80\x00\x00\x00[\xb5n\xdb\ x00\x00\x00\x01\xadW\xb5m\x80\x00\x00\x01w\xed[\xb6\x80\x00\x00\x03\xa8\x1a\xec+\x00\x00\x00\x05@\x17P\ x1d\x00\x00\x00\x0e\x00\r\xb0\x06\x80\x00\x00\x08\x00\n\xd0\x00\x00\x00\x00\x08\x00\x17`\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x1f\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\ x00\x00\r`\x00\x00\x00\x00\x00\x00\x17\xb0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00 \x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xa0\x00\x00\x00\x00\x00\x00\x0bp\ x00\x00\x00\x00\x00\x00\x1d\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00\x17p\x00\x00\ х00\х00\х00\ x00\x1a\xa0\x00\x00\x00\x00\x00\x00\r\xd0\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\ x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xd0\x00\x00\x00\x00\x00\x00\x1bp\x00 \x00\x00\x00\x00\x00\r\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b`\x00\x00\ x00\x00\x00\x00\x15\xb0\x00\x00\x00\x00\x00\x00\x1e\xd0\x00\x00\x00\x00\x00\x00\x13p\x00\x00\x00\x00\ x00\x00\x1d\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x15\xd0\x00\x00\x00\x00\x00\ x00\x1a\xb8\x00\x00\x00\x00\x00\x00\x17`\x00\x00\x00\x00\x00\x00\x1a\xd8\x00\x00\x00\x00\x00\x00\x17h \x00\x00\x00\x00\x00\x00\x1a\xb0\x00\x00\x00\x00\x00\x00\x1d\xd8\x00\x00\x00\x00\x00\x00+h\x00\x00 \x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b\xd8\x00\x00\x00\x00\x00\x00\x16`\x00\x00\x00\ х00\х00\х00\х0б\ха0\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00') fb = framebuf. FrameBuffer(TH,64,64, framebuf.MONO_HLSB) oled.fill(0) для i в диапазоне (-64 128): oled.blit(fb,i,0) олэд.шоу() ЛОГОТИП = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ x00\x00\x00\x00\x00\x00\x00\x00\x01\x800\xc0\xc7\xf8~0\xc3\x0c\x1f\x87\xf8\x0c\x00\x00\x01\x800\xc1\ xcf\xec\x7f0\xc7\x1c\x1f\xc7\xf8\x0c\x00\x00\x01\x800\xc1\xc1\x8ec\x99\xc6\x1c\x18\xe6\x00\x0c\x0c&`\x180\xc3\xe0\x06a\x99\xe6\x1e\x18f\x00\x1f>\x7f\xf8~0\xc3a\x8ea\x99\ xe66\x18f\x00\x0cws\x98d?\xc3a\xbca\x99\xee6\x1f\xc7\xf0\x0ccs\x98`?\xc61\xb8a\x8fs\x18|0\xcc\x1d\ x86|\x06\x18\xc1\xd8g\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\ х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00\х00') fb = framebuf. FrameBuffer(LOGO,128,64, framebuf.MONO_HLSB) oled.fill(0) для я в диапазоне (-128,128): oled.blit(fb,i,0) олэд.шоу()
Сохраните и запустите свой код. Как и в случае с любым скриптом Python в Thonny, нажмите «Файл» >> «Сохранить» и сохраните файл на Raspberry Pi Pico как oled-test.py. Когда будете готовы, нажмите зеленую кнопку воспроизведения, чтобы запустить код, и ваша анимация будет прокручиваться на OLED-экране.
Получите мгновенный доступ к последним новостям, подробным обзорам и полезным советам.
Свяжитесь со мной, чтобы сообщить о новостях и предложениях от других брендов Future. Получайте электронные письма от нас от имени наших надежных партнеров или спонсоров.Лес Паундер — помощник редактора Tom’s Hardware. Он творческий технолог и в течение семи лет создавал проекты, чтобы обучать и вдохновлять умы как молодых, так и старых. Он работал с Raspberry Pi Foundation над написанием и реализацией их программы подготовки учителей «Picademy».