Начнем с алгоритма работы нашей программы!

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 !

  • СПАСИБО ЗА ПРОСМОТР.
  • С уважением.
  • Электроника и Робототехника!