Sadržaj:

Generator prilagođenih znakova (Adafruit HT16k33 matrica): 3 koraka
Generator prilagođenih znakova (Adafruit HT16k33 matrica): 3 koraka

Video: Generator prilagođenih znakova (Adafruit HT16k33 matrica): 3 koraka

Video: Generator prilagođenih znakova (Adafruit HT16k33 matrica): 3 koraka
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Studeni
Anonim
Generator prilagođenih znakova (Adafruit HT16k33 Matrix)
Generator prilagođenih znakova (Adafruit HT16k33 Matrix)

Ispis posebnih znakova na LCD -ovima i LED matricama velika je zabava. Postupak ispisa posebnih znakova ili prilagođenih znakova je generiranje niza s binarnim vrijednostima za svaki redak i stupac. Možda je užurbano pronaći ispravan kôd za bilo koji prilagođeni znak, stoga će ovaj projekt automatizirati i generirati kôd za LED matricu 8x8, a također će ispisati prilagođeni znak na dvobojnoj matrici Adafruit HT16k33 8x8.

Adafruit HT16k33, dvobojna matrica od 1,2 '' 8x8 s dvobojnom bojom komunicira s Arduinom putem komunikacijskog protokola I2C

Prema Adafruit -u, "Ova verzija LED ruksaka dizajnirana je za 1,2" 8x8 matrice. Oni mjere samo 1,2 "x1,2" pa je šteta upotrijebiti ogroman niz čipova za kontrolu. Ovaj ruksak rješava neugodnost korištenja 16 pinova ili hrpe čipova tako da matrica I2C matričnog kontrolera konstantne struje uredno sjedi na stražnjoj strani PCB-a. Čip kontrolera brine se za sve, crtajući svih 64 LED diode u pozadini. Sve što trebate učiniti je upisati podatke u njega pomoću 2-pinskog I2C sučelja. Postoje dva pina za odabir adrese pa možete odabrati jednu od 8 adresa za upravljanje do 8 njih na jednoj 2-pinskoj I2C sabirnici (kao i bilo kojim drugim I2C čipovima ili senzorima koji vam se sviđaju). Čip upravljačkog programa može 'zatamniti' cijeli zaslon od 1/16 svjetline do pune svjetline u 1/16 koraka. Ne može zatamniti pojedinačne LED diode, samo cijeli zaslon odjednom."

U ovom uputstvu ću vam objasniti kako doći do koda za bilo koji prilagođeni znak u stvarnom vremenu i ispisati ga na Led Matrixu.

Korak 1: Komponente

Ovo uputstvo je osnovni projekt na Adafruit HT16k33 Matrix -u. Trebaš:

  1. Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 dvobojna LED matrica.
  2. Arduino (preferira se bilo koja varijanta, ali Uno).
  3. Oglasna ploča
  4. Napajanje

Korak 2: Shematski prikaz

Shematski
Shematski
Shematski
Shematski

Ožičenje Adafruit HT16k33 Led matrica vrlo je jednostavna jer moramo spojiti sat i podatkovni pin kao što to obično činimo za I2C uređaje. Veze će biti takve:

  1. SCL (pin sata Matrix -a) spojen na A5 (pin sata Arduino Uno. Pogledajte podatkovnu tablicu za druge varijante Arduina)
  2. SDA (podatkovni pin matrice) spojen na A4. (Za ostale varijante Arduina pogledajte tehnički list)
  3. VCC spojen na 5V.
  4. GND spojen na 0V.

Također možete pogledati shemu prikazanu na slici.

Korak 3: Kodirajte

Kodirati
Kodirati
Kodirati
Kodirati

Arduino kod

Prvo ćemo uključiti sve potrebne knjižnice.

  1. Wire.h:- Za I2C komunikaciju
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Sve su te knjižnice dostupne u samom Arduino IDE -u. Morate ih samo instalirati iz Upravitelja knjižnice. Skica >> Uključi knjižnicu >> Upravljanje knjižnicama

Funkcija postavljanja ()

Postavljanje bezznačnog cjelobrojnog 8-bitnog niza na strore8 binarne vrijednosti za 8 redaka, od po 8 bitova svaki (8 stupaca). Postavite adresu za I2C komunikaciju.

Funkcija petlje ()

Kako moramo ispisati znak, potreban nam je kod za lik u stvarnom vremenu. Najprikladniji način je slanje koda serijski, a Arduino će pročitati serijske podatke i prema tome ispisati znak. Slanje niza serijski može biti užurban posao, stoga možemo poslati niz sa svih 8 kodova (svaki po 8 bitova) odvojenih zarezima.

Čitanje serijskog niza:

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

Nakon čitanja teksta, moramo dekodirati ovaj niz i vratiti binarne vrijednosti. Kao što znamo, format ulaznog niza uvijek će biti isti. Možemo ga kodirati kako bismo pronašli podniz i pretvorili nizove u njihove decimalne ekvivalentne vrijednosti. Zatim ćemo proslijediti generirani decimalni niz (uint8_t) za ispis znaka na matrici.

Pretvaranje niza od 8 bita u decimalni broj:

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

Za procjenu decimalnog ekvivalenta pomoću funkcije power (pow ()), morate se baviti vrijednostima dvostrukog tipa, pa stoga možemo napisati vlastitu funkciju napajanja kao:

int snaga (int baza, int eksponent) {int c = 1; for (int i = 0; i {c = c*baza;} vrati c;}

Sada ćemo napokon napisati kôd za ispis znaka pomoću generiranog niza od 8 decimalnih vrijednosti (po jedna za svaki redak).

void print_emoji (uint8_t emoji , boja niza) {matrix.clear (); if (boja == "crvena") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); kašnjenje (500); }

Ovaj ćete kôd lako razumjeti jer prvo brišemo matricu, a zatim prikazujemo znak pomoću polja emoji pomoću funkcije matrix.drawBitmap (). Ne zaboravite napisati "matrix.writeDisplay ()" nakon svih formatiranja jer će ova funkcija prikazati samo sva do sada napravljena oblikovanja na matrici.

Sada možete poslati niz sa svim vrijednostima koda i Arduino će ispisati znak na matrici. Arduino kôd možete preuzeti odozdo. U eksperimentalne svrhe možete pisati

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

ovaj niz u serijskom monitoru i može vidjeti znak na matrici.

Sada moramo automatski poslati serijske podatke iz softvera kada pritisnemo gumb "Ispis". Za automatizaciju ćemo napraviti demo 8x8 matricu i pružit ćemo mogućnost korisniku da odabere koje ćelije treba obojiti, a zatim će softver automatski generirati kôd i serijski poslati podatke u Arduino u formatu niza. Odabrao sam Obrada za ostatak svog rada. U obradi možemo napraviti matricu pomoću 64 gumba (pravokutnici s pritisnutom funkcijom) i možemo dodijeliti određenu vrijednost i boju na početku (Neka to bude bijela boja s vrijednošću 0). Sada kad god je gumb pritisnut, pretvorit ćemo boju gumba u crnu i postaviti vrijednost na 1. Ako korisnik ponovno pritisne isti gumb, njegova će se vrijednost ponovno promijeniti na 0, a boja natrag u bijelu. To će pomoći korisniku da promijeni kôd uvijek iznova i lako može unositi izmjene bez ponovnog brisanja cijele matrice. Klikom na gumb "Ispis" napravit ćemo niz sličan onom prikazanom gore za demonstraciju. Tada će se niz poslati na određeni serijski port.

Kod za obradu možete preuzeti ispod. Ovo je moj prvi kod u obradi. Prijedlozi za poboljšani način kodiranja visoko su cijenjeni.

Možete vidjeti kako GUI izgleda i kako se lik stvara pomoću sustava. Teško da će trebati nekoliko sekundi za stvaranje istog znaka na matrici.

Kôd i slike ovog projekta možete preuzeti iz mog GitHub spremišta.

Preporučeni: