Начнем с алгоритма работы нашей программы!
1. Подключим oled дисплей к ESP32.
2. Настроим I2C, на ножках D21, D22.
3. Зададим разрешение дисплея.
4. В бесконечном цикле поочередно вызываем функции.
Перейдем к написанию программы и рисованию электрической схемы!

И так схема у нас есть, на ней обозначены микроконтроллер, ножки gnd и питания 3,3В, пин D21, D22 - к которым подключен oled (ssd1306) дисплей.
Практически к каждому материалу есть видеоролик на YouTube и RUTUBE каналах, теорию можно прочитать в статье, а как работает устройство в железе, посмотреть в видеоролике!
Вернемся к программе.
Дисплей у нас подключен к портам D21(sda), D22(scl) и ножкам питания 3.3В, gnd, настроим в программе ножки портов D21(sda), D22(scl) как шину i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000) и укажем частоту freq=400000, далее инициализируем OLED-дисплей с разрешением 128x64, oled = ssd1306.SSD1306_I2C(128, 64, i2c). С настройкой портов закончили, далее чтобы наша программа работала добавим в нее модуль import machine, который содержит необходимые функции, для работы платы, строкой from machine import Pin, I2C импортируем необходимые модули для работы с пинами и I2C, модуль который служит нам для формирования задержек import time, модуль для математических операций import math, а также подключим библиотеку для работы с oled дисплеями import ssd1306, библиотеку можно скачать по ссылке которая закреплена под видео на канале.

Создаем функцию для рисования круга def krug (x0, y0, radius, color):, проходим по всем x-координатам в диапазоне радиуса for x in range(-radius, radius + 1):, вычисляем y-координату по формуле окружности.y = int(math.sqrt(radius**2 - x**2)), рисуем верхнюю часть круга oled.pixel(x0 + x, y0 + y, color), рисуем нижнюю часть круга oled.pixel(x0 + x, y0 - y, color).
Создаем функцию для рисования лица def face():, очищаем экран oled.fill(0), рисуем круг (лицо)x, y, радиус, цвет krug(64, 32, 20, 1), рисуем левый и правый глаза krug(56, 28, 4, 1), krug(72, 28, 4, 1).
Создаем функцию для моргания глаз def blink_optic():, моргаем 5 раз for _ in range(5):, очищаем дисплей oled.fill(0), рисуем лицо face(), закрываем левый и правый глаза krug(56, 28, 4, 0), krug(72, 28, 4, 0), обновляем дисплей oled.show(), задержка time.sleep(0.2), очищаем дисплей oled.fill(0), рисуем лицо face(), открываем левый и правый глаза krug(56, 28, 4, 1), krug(72, 28, 4, 1), обновляем дисплей oled.show(), задержка time.sleep(0.2).
Создаем функцию для прокрутки текста по экрану def scrolling_text(text, delay=0.001):, длина текста в пикселях (8 пикселей на символ) text_length = len(text) * 8, сдвигаем текст за пределы экрана for x in range(128 + text_length):, очищаем дисплей oled.fill(0), рисуем текст на экране oled.text(text, 128 - x, 0), обновляем дисплей oled.show(), задержка между кадрами time.sleep(delay).


В бесконечном цикле while True, выводим анимацию лица и бегущую строку на дисплей!
face() # Функция для рисования лица
blink_optic() # Функция для моргания глаз
scrolling_text("autoielec.ru") # Бегущая строка
Понравился проект? Не забудь поделиться им с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube и RUTUBE !
- СПАСИБО ЗА ПРОСМОТР.
- С уважением.
- Электроника и Робототехника!