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, Novembar
Anonim
Generator prilagođenih znakova (Adafruit HT16k33 Matrix)
Generator prilagođenih znakova (Adafruit HT16k33 Matrix)

Ispisivanje posebnih znakova na LCD -ovima i LED matricama velika je zabava. Postupak ispisivanja posebnih znakova ili prilagođenih znakova je generiranje niza s binarnim vrijednostima za svaki red 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 sa dvobojnom bojom komunicira s Arduinom putem komunikacijskog protokola I2C

Prema Adafruit -u, "Ova verzija LED ruksaka je dizajnirana za 1,2" 8x8 matrice. Oni mjere samo 1,2 "x1,2" pa je šteta koristiti ogroman niz čipova za kontrolu. Ovaj ruksak rješava neugodnost korištenja 16 pinova ili gomile čipova postavljanjem I2C matričnog kontrolera konstantne struje uredno smještenog na stražnjoj strani PCB-a. Čip kontrolera brine se o svemu, crtajući svih 64 LED diode u pozadini. Sve što trebate učiniti je upisati podatke na njega pomoću 2-pinskog I2C sučelja. Postoje dva pina za odabir adresa pa možete odabrati jednu od 8 adresa za upravljanje do 8 ovih na jednoj 2-pinskoj I2C sabirnici (kao i bilo koje druge I2C čipove ili senzore koje želite). Č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 odštampati ga na Led Matrix -u.

Korak 1: Komponente

Ovo uputstvo je osnovni projekat na Adafruit HT16k33 Matrix -u. Ti trebas:

  1. Adafruit HT16k33 dvobojna matrica 1,2 '' x 1,2 '' 8x8, dvobojna.
  2. Arduino (preferira se bilo koja varijanta osim Uno).
  3. Breadboard
  4. Napajanje

Korak 2: Shema

Shematski
Shematski
Shematski
Shematski

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

  1. SCL (pin sata Matrix -a) povezan sa A5 (pin sata Arduino Uno. Pogledajte listu sa podacima za druge varijante Arduina)
  2. SDA (Data pin Matrix) 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

Kod
Kod
Kod
Kod

Arduino kod

Prvo ćemo uključiti sve potrebne biblioteke.

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

Sve ove biblioteke dostupne su u samom Arduino IDE -u. Samo ih morate instalirati iz Upravitelja biblioteke. Skica >> Uključi biblioteku >> Upravljanje bibliotekama

Funkcija postavljanja ()

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

Funkcija petlje ()

Kako moramo odštampati znak, potreban nam je kod za lik u realnom 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 bita) 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 će uvijek biti isti. Možemo ga kodirati da pronađe podniz i pretvori 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*base;} vrati c;}

Sada ćemo konačno napisati kôd za ispis znaka koristeći generirani niz od 8 decimalnih vrijednosti (po jednu za svaki red).

void print_emoji (uint8_t emoji , boja niza) {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 (); kašnjenje (500); }

Lako ćete razumjeti ovaj kôd 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 "Ispiši". Za automatizaciju ovoga napravit ćemo demo matricu 8x8 i pružit ćemo mogućnost korisniku da odabere koje ćelije treba obojiti, a zatim će softver automatski generirati kôd i poslati podatke serijski na Arduino u string formatu. Odabrao sam Processing za ostatak svog rada. U obradi možemo napraviti matricu pomoću 64 dugmeta (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 dugme pritisnuto, boju dugmeta ćemo pretvoriti u crnu i postaviti vrijednost na 1. Ako korisnik ponovo pritisne isto dugme, njegova vrijednost će se opet promijeniti u 0, a boja 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 dugme "Ispiši" 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 su visoko cijenjeni.

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

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

Preporučuje se: