Съдържание:

Генератор на персонализирани символи (Adafruit HT16k33 Matrix): 3 стъпки
Генератор на персонализирани символи (Adafruit HT16k33 Matrix): 3 стъпки

Видео: Генератор на персонализирани символи (Adafruit HT16k33 Matrix): 3 стъпки

Видео: Генератор на персонализирани символи (Adafruit HT16k33 Matrix): 3 стъпки
Видео: Как самому создать QR-код в Google-таблицах? +Как создавать красивые QR-коды! 2024, Юли
Anonim
Генератор на персонализирани символи (Adafruit HT16k33 Matrix)
Генератор на персонализирани символи (Adafruit HT16k33 Matrix)

Отпечатването на специални знаци на LCD дисплеи и светодиодни матрици е голямо забавление. Процедурата за отпечатване на специални символи или персонализирани знаци е да се генерира масив с двоични стойности за всеки ред и колона. Може да е забързано да се намери правилния код за всеки персонализиран знак, следователно този проект ще автоматизира и генерира код за 8x8 светодиодна матрица и също така ще отпечата персонализирания символ на Adafruit HT16k33 8x8 двуцветна матрица.

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

Според Adafruit, "Тази версия на LED раницата е предназначена за 1,2" 8x8 матрици. Те измерват само 1.2 "x1.2", така че е жалко да се използва огромен набор от чипове, за да се контролира. Тази раница решава досадата от използването на 16 пина или куп чипове, като I2C матричен контролер с постоянен ток седи добре на гърба на печатната платка. Чипът на контролера се грижи за всичко, рисувайки всички 64 светодиода във фонов режим. Всичко, което трябва да направите, е да запишете данни към него, използвайки 2-пинов I2C интерфейс. Има два пина за избор на адрес, така че можете да изберете един от 8 адреса, за да контролирате до 8 от тях на една 2-пинова I2C шина (както и каквито и да е други I2C чипове или сензори, които харесвате). Чипът на драйвера може да „затъмни“целия дисплей от 1/16 яркост до пълна яркост на 1/16 стъпки. Той не може да затъмни отделни светодиоди, само целия дисплей наведнъж."

В тази инструкция ще ви обясня как да получите кода за всеки персонализиран знак в реално време и да го отпечатате на Led Matrix.

Стъпка 1: Компоненти

Тази инструкция е основен проект за Adafruit HT16k33 Matrix. Имате нужда от:

  1. Adafruit HT16k33 1,2 "x 1,2" 8x8 двуцветна матрица.
  2. Arduino (всеки вариант, но Uno е за предпочитане).
  3. Платка
  4. Захранване

Стъпка 2: Схематично

Схематично
Схематично
Схематично
Схематично

Окабеляване Adafruit HT16k33 Led матрицата е много лесна, тъй като трябва да свържем часовника и пина за данни, както обикновено правим за I2C устройства. Връзките ще бъдат като:

  1. SCL (Часовник на Matrix), свързан към A5 (Часовник на Arduino Uno. Вижте листа с данни за други варианти на Arduino)
  2. SDA (Data pin на Matrix), свързан към A4. (Вижте листа с данни за други варианти на Arduino)
  3. VCC свързан към 5V.
  4. GND свързан към 0V.

Можете също да се консултирате със схемата, показана на фигурата.

Стъпка 3: Код

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

Кодът на Arduino

Първо, ще включим всички необходими библиотеки.

  1. Wire.h:- За I2C комуникация
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Всички тези библиотеки са достъпни в самата IDE на Arduino. Просто трябва да ги инсталирате от Library Manager. Скица >> Включване на библиотека >> Управление на библиотеки

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

Задаване на 8-битов масив без знак без двоични стойности strore8 за 8 реда, по 8 бита всеки (8 колони). Задайте адреса за I2C комуникация.

Циклична функция ()

Тъй като трябва да отпечатаме знака, имаме нужда от кода за знака в реално време. Най -удобният метод е да изпратите кода серийно и Arduino ще прочете серийните данни и съответно ще отпечата знака. Серийното изпращане на масив може да бъде забързана работа, следователно можем да изпратим низ с всичките 8 кода (по 8 бита всеки), разделени със запетаи.

Четене на сериен низ:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (данни); }

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

Конвертиране на низ от 8 бита в десетична:

int val (String str) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v+мощност (2, (7-i)); }} връщане v; }

За да оцените десетичния еквивалент, използвайки функция за мощност (pow ()), трябва да се справите със стойности с двоен тип и следователно можем да напишем нашата собствена функция на мощност като:

int мощност (int база, int експонент) {int c = 1; for (int i = 0; i {c = c*base;} връщане c;}

Сега най -накрая ще напишем кода за отпечатване на знака, използвайки генерирания масив от 8 десетични стойности (по една за всеки ред).

void print_emoji (uint8_t emoji , цвят на низа) {matrix.clear (); if (color == "red") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); забавяне (500); }

Лесно ще разберете този код, тъй като първо изчистваме матрицата и след това показваме символа, използвайки масив от емотикони, използвайки функцията matrix.drawBitmap (). Не забравяйте да напишете „matrix.writeDisplay ()“след цялото форматиране, тъй като тази функция ще показва само всички форматирания, направени досега върху матрицата.

Сега можете да изпратите низ с всички кодови стойности и Arduino ще отпечата знака в матрицата. Можете да изтеглите кода на Arduino отдолу. За експериментални цели можете да пишете

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

този низ в сериен монитор и може да види символа в матрицата.

Сега трябва да изпратим серийните данни автоматично от софтуер, когато натиснем бутона "Печат". За да автоматизираме това, ще направим демонстрационна матрица 8x8 и ще предоставим възможност на потребителя да избере кои клетки да бъдат оцветени и след това софтуерът автоматично ще генерира кода и ще изпрати данните последователно до Arduino в низов формат. Избрах Processing за останалата част от работата си. При обработката можем да направим матрица, използвайки 64 бутона (правоъгълници с натисната функция) и можем да присвоим определена стойност и цвят в началото (Нека бъде бял цвят със стойност 0). Сега, когато бутонът е натиснат, ще преобразуваме цвета на бутона в черен и ще зададем стойността на 1. Ако потребителят натисне отново същия бутон, стойността му отново ще се промени на 0 и цветът ще се превърне в бял. Това ще помогне на потребителя да променя кода отново и отново лесно и може лесно да прави промени, без да изтрива отново цялата матрица. При щракване върху бутона „Печат“ще направим низ, подобен на този, показан по -горе за демонстрацията. След това низът ще бъде изпратен до конкретния сериен порт.

Можете да изтеглите кода за обработка отдолу. Това е първият ми код в обработка. Предложенията за подобрения начин на кодиране са високо оценени.

Можете да видите как изглежда графичният интерфейс и как героят се създава с помощта на системата. Едва ли ще отнеме секунди, за да създадете същия знак в матрицата.

Можете да изтеглите кода и изображенията на този проект от моето хранилище на GitHub.

Препоръчано: