Оглавление:

Генератор пользовательских символов (матрица Adafruit HT16k33): 3 шага
Генератор пользовательских символов (матрица Adafruit HT16k33): 3 шага

Видео: Генератор пользовательских символов (матрица Adafruit HT16k33): 3 шага

Видео: Генератор пользовательских символов (матрица Adafruit HT16k33): 3 шага
Видео: Использование ЖК-дисплеев с Arduino 2024, Июль
Anonim
Генератор пользовательских символов (матрица Adafruit HT16k33)
Генератор пользовательских символов (матрица Adafruit HT16k33)

Печать специальных символов на ЖК-экранах и светодиодных матрицах - это большое развлечение. Процедура печати специальных символов или настраиваемых символов заключается в создании массива с двоичными значениями для каждой строки и столбца. Может быть сложно найти правильный код для любого настраиваемого символа, поэтому этот проект автоматизирует и сгенерирует код для светодиодной матрицы 8x8, а также напечатает настраиваемый символ на Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, 1,2-дюймовая двухцветная светодиодная матрица 8x8, взаимодействует с Arduino через протокол связи I2C

По словам Adafruit, «эта версия светодиодного рюкзака рассчитана на 1,2-дюймовую матрицу 8x8. Их размеры всего 1,2 "x1,2", так что жалко использовать массив микросхем для управления им. Этот рюкзак решает проблему использования 16 контактов или связки микросхем, поскольку матричный контроллер постоянного тока I2C аккуратно расположен на задней части печатной платы. Микросхема контроллера обо всем позаботится, отрисовывая все 64 светодиода на заднем плане. Все, что вам нужно сделать, это записать в него данные с помощью 2-контактного интерфейса I2C. Есть два контакта выбора адреса, поэтому вы можете выбрать один из 8 адресов для управления до 8 из них на одной 2-контактной шине I2C (а также любых других микросхемах или датчиках I2C, которые вам нравятся). Микросхема драйвера может «затемнять» весь дисплей от 1/16 яркости до полной яркости с шагом 1/16. Он не может затемнять отдельные светодиоды, а только весь дисплей сразу ».

В этом руководстве я объясню вам, как получить код для любого настраиваемого символа в реальном времени и распечатать этот символ на светодиодной матрице.

Шаг 1: Компоненты

Это руководство является базовым проектом на Adafruit HT16k33 Matrix. Тебе нужно:

  1. Двухцветная светодиодная матрица Adafruit HT16k33 1,2 '' x 1,2 '' 8x8.
  2. Arduino (предпочтительнее любой вариант, кроме Uno).
  3. Макетная плата
  4. Источник питания

Шаг 2: Схема

Схема
Схема
Схема
Схема

Подключить светодиодную матрицу Adafruit HT16k33 очень просто, так как нам нужно подключить часы и вывод данных, как мы обычно делаем для устройств I2C. Подключения будут такие:

  1. SCL (тактовый вывод матрицы) подключен к A5 (тактовый вывод Arduino Uno. Другие варианты Arduino см. В таблице данных)
  2. SDA (вывод данных матрицы) подключен к A4. (Обратитесь к таблице данных для других вариантов Arduino)
  3. VCC подключен к 5В.
  4. GND подключен к 0 В.

Вы также можете ознакомиться со схемой, показанной на рисунке.

Шаг 3: Код

Код
Код
Код
Код

Код Arduino

Во-первых, мы включим все необходимые библиотеки.

  1. Wire.h: - Для связи I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Все эти библиотеки доступны в самой Arduino IDE. Вам просто нужно установить их из Менеджера библиотек. Эскиз >> Включить библиотеку >> Управление библиотеками

Функция настройки ()

Установка беззнакового целочисленного 8-битного массива в двоичные значения Strore8 для 8 строк по 8 бит в каждой (8 столбцов). Установите адрес для связи I2C.

Функция цикла ()

Поскольку нам нужно напечатать символ, нам нужен код символа в реальном времени. Самый удобный метод - это послать код последовательно, и Arduino прочитает последовательные данные и соответственно распечатает символ. Последовательная отправка массива может быть сложной задачей, поэтому мы можем отправить строку со всеми 8 кодами (по 8 бит каждый), разделенными запятыми.

Чтение последовательной строки:

если (Serial.available ()> 0) {данные = Serial.readStringUntil ('\ n'); Serial.println (данные); }

После прочтения текста нам нужно декодировать эту строку и вернуть двоичные значения. Как известно, формат входной строки всегда будет одинаковым. Мы можем закодировать его, чтобы найти подстроки и преобразовать строки в их десятичные эквивалентные значения. Затем мы передадим сгенерированный десятичный массив (uint8_t) для печати символа в матрице.

Преобразование строки из 8 бит в десятичную:

int val (строка str) {int v = 0; for (int i = 0; i <8; i ++) {если (str == '1') {v = v + power (2, (7-i)); }} return v; }

Для оценки десятичного эквивалента с помощью функции мощности (pow ()) вам нужно иметь дело со значениями типа double, и, следовательно, мы можем написать нашу собственную функцию мощности как:

int power (int base, int показатель степени) {int c = 1; for (int i = 0; i {c = c * base;} return c;}

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

void print_emoji (uint8_t emoji , цвет строки) {matrix.clear (); если (цвет == "красный") {matrix.drawBitmap (0, 0, эмодзи, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, эмодзи, 8, 8, LED_GREEN); } matrix.writeDisplay (); задержка (500); }

Вы легко поймете этот код, поскольку мы сначала очищаем матрицу, а затем отображаем символ с помощью массива эмодзи с помощью функции matrix.drawBitmap (). Не забудьте написать «matrix.writeDisplay ()» после всего форматирования, так как эта функция будет отображать только все форматирование, выполненное на данный момент для матрицы.

Теперь вы можете отправить строку со всеми значениями кода, и Arduino напечатает символ на матрице. Вы можете скачать код Arduino снизу. В экспериментальных целях вы можете написать

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

эта строка в Serial Monitor и может видеть символ в матрице.

Теперь нам нужно автоматически отправлять последовательные данные из программного обеспечения, когда мы нажимаем кнопку «Печать». Для автоматизации этого мы создадим демонстрационную матрицу 8x8 и предоставим пользователю возможность выбирать, какие ячейки должны быть окрашены, а затем программное обеспечение автоматически сгенерирует код и отправит данные в Arduino поочередно в строковом формате. Я выбрал Обработку для остальной части моей работы. В процессе обработки мы можем сделать матрицу, используя 64 кнопки (прямоугольники с нажатой функцией) и можем назначить определенное значение и цвет в начале (пусть это будет белый цвет со значением 0). Теперь всякий раз, когда кнопка нажата, мы преобразуем цвет кнопки в черный и установим значение 1. Если пользователь снова нажмет ту же кнопку, ее значение снова изменится на 0, а цвет снова станет белым. Это поможет пользователю легко изменять код снова и снова и легко вносить поправки, не стирая заново всю матрицу. Нажав кнопку «Печать», мы создадим строку, аналогичную показанной выше для демонстрации. Затем строка будет отправлена на конкретный последовательный порт.

Вы можете скачать код обработки снизу. Это мой первый код в обработке. Мы высоко ценим предложения по усовершенствованному способу кодирования.

Вы можете увидеть, как выглядит графический интерфейс и как персонаж создается с помощью системы. Создание такого же персонажа на матрице не займет секунды.

Вы можете скачать код и изображения этого проекта из моего репозитория GitHub.

Рекомендуемые: