Добавить в корзинуПозвонить
Найти в Дзене
Паяльник и код

DIY проект. Маленькая бегущая строка из LED-панели и ESP32-C3 mini

В качестве основы проекта выступает светодиодная панель с Aliexpress на 128 синих пикселей, собранных в матрицу 8x16. Название у неё – «8*16 Матричный светодиодный модуль для Arduino» Купить можно тут: Размер Управляется через чип AIP1640 Такая матрица от неизвестного мне робота. На ней выводятся глаза и эмоции. Но её можно приспособить и для других проектов: информационные табло, бегущая строка, индикаторы состояния, простые игры Сделаем крутую маленькую бегущую строку Сначала подключим к микроконтроллеру ESP32-C3 Хотя на панели написано SDA и SCL, что говорит о I2C, её можно подключить к любым цифровым входам Программировать будем через Arduino IDE Для управления панелью есть удобная библиотека AIP1640_LED_Matrix Прочитать можно тут: Для объявления используется код: const int CLK_PIN = 6;
const int DIO_PIN = 7;
AIP1640_LED_Matrix matrix(CLK_PIN, DIO_PIN); Функции: matrix.begin(); // запуск
matrix.setBrightness(7); // яркость от 0-7
matrix.clear(); // потушить все светодиоды
matrix.se

В качестве основы проекта выступает светодиодная панель с Aliexpress на 128 синих пикселей, собранных в матрицу 8x16. Название у неё – «8*16 Матричный светодиодный модуль для Arduino»

Купить можно тут:

Матричный светодиодный дисплей 8x16 Ah robot для Arduino Microbit на AliExpress

Размер

-2

Управляется через чип AIP1640

-3

Такая матрица от неизвестного мне робота. На ней выводятся глаза и эмоции. Но её можно приспособить и для других проектов: информационные табло, бегущая строка, индикаторы состояния, простые игры

Сделаем крутую маленькую бегущую строку

Сначала подключим к микроконтроллеру ESP32-C3

Хотя на панели написано SDA и SCL, что говорит о I2C, её можно подключить к любым цифровым входам

-4
  • VCC: К питанию +5V
  • GND: К земле (GND)
  • SDA: К цифровому пину 7
  • SCL: К другому цифровому пину 6

Программировать будем через Arduino IDE

Для управления панелью есть удобная библиотека AIP1640_LED_Matrix

-5

Прочитать можно тут:

GitHub - TrueNorthMech/AIP1640_LED_Matrix: A lightweight and easy-to-use Arduino library for controlling 8x16 LED matrices driven by the AIP1640 chip. This library simplifies displaying text, patterns, and pixels on the matrix display using a simple bit-banging protocol.

Для объявления используется код:

const int CLK_PIN = 6;
const int DIO_PIN = 7;
AIP1640_LED_Matrix matrix(CLK_PIN, DIO_PIN);

Функции:

matrix.begin(); // запуск
matrix.setBrightness(7); // яркость от 0-7
matrix.clear(); // потушить все светодиоды
matrix.setPixel(x, y, true); // задать состояние светодиода true-вкл false-выкл
// x: (0-15) y: (0-7)
matrix.update();// обновить состояние матрицы

Принцип работы такой: функцией setBrightness - задаём яркость матрицы, setPixel - устанавливаем пиксели, которые будут гореть, update - обновляем матрицу. Задавать яркость отдельных пикселей нельзя

Кодим бегущую строку:

Задаем строку с символами, которые она будет поддерживать

const char symbolTable[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ .,-!0123456789?%()^<>:";

Задаем массив отображения каждого символа

const uint8_t fontData[][5] = {
{0x7E,0x09,0x09,0x09,0x7E},//0:А
{0x7F,0x49,0x49,0x49,0x31},//1:Б
{0x7F,0x49,0x49,0x49,0x36},//2:В

}

Функция отображения

for (int scrollPos = 16; scrollPos > -(msgLen * 6); scrollPos--) {
matrix.clear();
for (int i = 0; i < msgLen; i++) {
int charIdx = getCharIndex(message[i]);
if (charIdx == -1) continue;
int xOffset = scrollPos + (i * 6);
for (int col = 0; col < 5; col++) {
int x = xOffset + col;
if (x >= 0 && x < 16) {
uint8_t line = fontData[charIdx][col];
for (int y = 0; y < 8; y++) {
if (line & (1 << y)) {
matrix.setPixel(x, y, true); }}}}
}
matrix.update();

Добавим управление через WiFi

Полученный код добавим в шаблон

и допишем функцию отправки любой строки через браузер на бегущую строку. (добавление новых аргументов к шаблону было описано в предыдущих статьях)

При старте на панели выходит IP-адрес для подключения

Полный исходный код:

disk.yandex.ru

INO-файл в кодировке Windows-1251. Чтобы символы отображались правильно в Arduino IDE нажимаем CTRL+SHIFT+P -> Change File Encoding -> Повторно открыть в кодировке -> Windows-1251

Закрываем всё в корпус

Рассеиватель, как обычно от банки шампуня

-6

Остальной корпус напечатал на 3Д принтере

-7

Запускаем, подключив к питанию

-8

Высвечивается ip-адрес устройства

Задаем строку отображения через браузер

-9

Результат

-10

На такую строку теперь легко выводить любую информацию через GET-запрос . Можно c датчиков всевозможных. Или, например, для компьютера написать программу, которая будет передавать температуру процессора, количество задействованной памяти и другую диагностическую информацию. Если кому интересно, пишите в комментариях, напишу программу