Cuprins:

Generator de caractere personalizat (Matricea Adafruit HT16k33): 3 pași
Generator de caractere personalizat (Matricea Adafruit HT16k33): 3 pași

Video: Generator de caractere personalizat (Matricea Adafruit HT16k33): 3 pași

Video: Generator de caractere personalizat (Matricea Adafruit HT16k33): 3 pași
Video: 7 projects Build LED LCD Alarm Clock using DS1307 with Arduino | Lesson 105 2024, Iulie
Anonim
Generator de caractere personalizat (Matricea Adafruit HT16k33)
Generator de caractere personalizat (Matricea Adafruit HT16k33)

Imprimarea caracterelor speciale pe LCD-uri și matrici cu leduri este o distracție extraordinară. Procedura pentru a imprima caractere speciale sau caractere personalizate este de a genera o matrice cu valori binare pentru fiecare rând și coloană. Poate fi agitat să găsești codul corect pentru orice caracter personalizat, prin urmare, acest proiect va automatiza și genera cod pentru o matrice de leduri 8x8 și va imprima, de asemenea, caracterul personalizat pe Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, un Matrix Led Bicolor de 1,2 "8x8 comunică cu Arduino printr-un protocol de comunicație I2C

Potrivit Adafruit, „Această versiune a rucsacului cu LED-uri este concepută pentru matricile de 1,2” 8x8. Măsoară doar 1,2 "x1,2", așa că este păcat să folosești o gamă masivă de jetoane pentru al controla. Acest rucsac rezolvă supărarea utilizării a 16 pini sau o grămadă de cipuri, având un controler cu matrice de curent constant I2C așezat bine pe spatele PCB-ului. Cipul controlerului se ocupă de toate, desenând toate cele 64 de LED-uri în fundal. Tot ce trebuie să faceți este să scrieți date utilizând interfața I2C cu 2 pini. Există două pini de selectare a adresei, astfel încât să puteți selecta una dintre cele 8 adrese pentru a controla până la 8 dintre acestea pe o singură magistrală I2C cu 2 pini (precum și orice alte cipuri sau senzori I2C doriți). Cipul șoferului poate „diminua” întregul afișaj de la luminozitate 1/16 până la luminozitate maximă în trepte de 1/16. Nu poate estompa LED-urile individuale, ci doar întregul afișaj simultan."

În acest instructable, vă voi explica cum să obțineți codul pentru orice caracter personalizat în timp real și să tipăriți acel caracter pe Led Matrix.

Pasul 1: Componente

Acest instructable este un proiect de bază pe Adafruit HT16k33 Matrix. Ai nevoie:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (este preferată orice variantă în afară de Uno).
  3. Pană de pâine
  4. Alimentare electrică

Pasul 2: Schematic

Schematic
Schematic
Schematic
Schematic

Cablarea matricei LED Adafruit HT16k33 este foarte ușoară, deoarece trebuie să conectăm ceasul și pinul de date, așa cum facem de obicei pentru dispozitivele I2C. Conexiunile vor fi ca:

  1. SCL (Clock pin of Matrix) conectat la A5 (Clock pin of Arduino Uno. Consultați fișa tehnică pentru alte variante de Arduino)
  2. SDA (pinul de date al Matrix) conectat la A4. (Consultați fișa tehnică pentru alte variante de Arduino)
  3. VCC conectat la 5V.
  4. GND conectat la 0V.

De asemenea, puteți consulta schema prezentată în figură.

Pasul 3: Cod

Cod
Cod
Cod
Cod

Cod Arduino

În primul rând, vom include toate bibliotecile necesare.

  1. Wire.h: - Pentru comunicarea I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Toate aceste biblioteci sunt disponibile chiar în Arduino IDE. Trebuie doar să le instalați din Library Manager. Schiță >> Includeți biblioteca >> Gestionați bibliotecile

Funcția de configurare ()

Setarea unui set întreg de 8 biți nesemnat pentru a strore8 valori binare pentru 8 rânduri, de câte 8 biți fiecare (8 coloane). Setați adresa pentru comunicarea I2C.

Funcția buclă ()

Deoarece trebuie să imprimăm caracterul, avem nevoie de codul pentru caracter în timp real. Cea mai convenabilă metodă este de a trimite codul în serie și Arduino va citi datele seriale și va imprima caracterul în consecință. Trimiterea unui tablou în serie poate fi o sarcină agitată, prin urmare putem trimite un șir cu toate cele 8 coduri (câte 8 biți fiecare) separate prin virgule.

Citirea șirului serial:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (date); }

După citirea textului, trebuie să decodăm acest șir și să recuperăm valorile binare. După cum știm, formatul șirului de intrare va fi întotdeauna același. Îl putem codifica pentru a găsi șiruri și pentru a converti șirurile la valorile lor echivalente zecimale. Apoi vom trece matricea zecimală generată (uint8_t) pentru a imprima caracterul pe matrice.

Conversia șirului de 8 biți în zecimal:

int val (String str) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v + putere (2, (7-i)); }} return v; }

Pentru evaluarea echivalentului zecimal utilizând funcția de putere (pow ()), trebuie să vă ocupați de valori de tip dublu și, prin urmare, putem scrie propria noastră funcție de putere ca:

int power (int base, int exponent) {int c = 1; for (int i = 0; i {c = c * base;} return c;}

Acum, în sfârșit, vom scrie codul pentru a imprima caracterul folosind matricea generată de 8 valori zecimale (una pentru fiecare rând).

void print_emoji (uint8_t emoji , culoare șir) {matrix.clear (); if (color == "roșu") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); întârziere (500); }

Veți înțelege cu ușurință acest cod, deoarece ștergem mai întâi matricea și apoi afișăm caracterul folosind matricea emoji folosind funcția matrix.drawBitmap (). Nu uitați să scrieți "matrix.writeDisplay ()" după toate formatările, deoarece această funcție va afișa toate formatările făcute până acum pe matrice.

Acum puteți trimite șirul cu toate valorile codului și Arduino va imprima caracterul pe matrice. Puteți descărca codul Arduino de mai jos. În scop experimental, puteți scrie

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

acest șir în Serial Monitor și poate vedea caracterul pe matrice.

Acum, trebuie să trimitem datele seriale automat dintr-un software când apăsăm butonul „Print”. Pentru automatizarea acestui lucru, vom face o matrice demo 8x8 și vom oferi utilizatorului o facilitate pentru a alege ce celule ar trebui să fie colorate și apoi software-ul va genera automat codul și va trimite datele în serie către Arduino în format șir. Am ales Procesarea pentru restul muncii mele. În procesare, putem crea o matrice folosind 64 de butoane (dreptunghiuri cu funcție apăsată) și putem atribui o anumită valoare și culoare la început (Să fie culoarea albă cu valoarea 0). Acum, ori de câte ori butonul este apăsat, vom converti culoarea butonului în negru și vom seta valoarea la 1. Dacă utilizatorul apasă din nou același buton, valoarea acestuia se va schimba din nou la 0 și culoarea va reveni la alb. Acest lucru îl va ajuta pe utilizator să schimbe codul din nou și din nou cu ușurință și poate face modificări cu ușurință fără a șterge din nou întreaga matrice. Dând clic pe butonul „Print”, vom crea un șir similar cu cel prezentat mai sus pentru demo. Apoi șirul va fi trimis la portul serial respectiv.

Puteți descărca codul de procesare de mai jos. Acesta este primul meu cod în procesare. Sugestiile pentru modul îmbunătățit de codificare sunt foarte apreciate.

Puteți vedea cum arată GUI și cum este creat caracterul folosind sistemul. Cu greu va dura câteva secunde pentru a crea același personaj pe matrice.

Puteți descărca codul și imaginile acestui proiect din depozitul meu GitHub.

Recomandat: