Kazalo:

Generator znakov po meri (matrika Adafruit HT16k33): 3 koraki
Generator znakov po meri (matrika Adafruit HT16k33): 3 koraki

Video: Generator znakov po meri (matrika Adafruit HT16k33): 3 koraki

Video: Generator znakov po meri (matrika Adafruit HT16k33): 3 koraki
Video: Купол над Землей с Джули По. Выпуск 20 08 2018. Самые шокирующие гипотезы 2024, Julij
Anonim
Generator znakov po meri (matrika Adafruit HT16k33)
Generator znakov po meri (matrika Adafruit HT16k33)

Tiskanje posebnih znakov na LCD -je in LED matrice je zelo zabavno. Postopek tiskanja posebnih znakov ali znakov po meri je ustvarjanje matrike z binarnimi vrednostmi za vsako vrstico in stolpec. Morda bi bilo težko najti pravo kodo za kateri koli znak po meri, zato bo ta projekt avtomatiziral in ustvaril kodo za matriko LED 8x8 in bo tudi natisnil znak po meri na dvobarvni matriki Adafruit HT16k33 8x8.

Adafruit HT16k33, 1,2 -palčna 8x8 dvobarvna LED matrika komunicira z Arduinom prek komunikacijskega protokola I2C

Adafruit pravi: "Ta različica LED nahrbtnika je zasnovana za 1,2" 8x8 matrike. Merijo le 1,2 "x1,2", zato je škoda uporabiti ogromno število čipov za nadzor. Ta nahrbtnik odpravlja nelagodje pri uporabi 16 zatičev ali kopice čipov tako, da ima matrični krmilnik s konstantnim tokom I2C lepo nameščen na hrbtni strani tiskanega vezja. Za vse skrbi čip krmilnika, ki v ozadju nariše vseh 64 LED. Vse kar morate storiti je, da vanj zapišete podatke z 2-polnim vmesnikom I2C. Obstajata dva zatiča za izbiro naslovov, tako da lahko izberete enega od 8 naslovov za upravljanje do 8 od teh na enem 2-polnem vodilu I2C (pa tudi za vse druge čipe ali senzorje I2C, ki so vam všeč). Gonilniški čip lahko v 1/16 korakih "zatemni" celoten zaslon od 1/16 svetlosti do polne svetlosti. Ne more zatemniti posameznih LED, samo celoten zaslon hkrati."

V tem navodilu vam bom razložil, kako v realnem času pridobiti kodo za kateri koli znak po meri in ta znak natisniti na Led Matrix.

1. korak: Komponente

Ta navodila so osnovni projekt na Matrixu Adafruit HT16k33. Potrebujete:

  1. Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 dvobarvna LED matrika.
  2. Arduino (prednost ima katera koli različica, razen Uno).
  3. Ogledna plošča
  4. Napajanje

2. korak: Shema

Shematično
Shematično
Shematično
Shematično

Ožičenje Adafruit HT16k33 Led matrika je zelo enostavna, saj moramo priključiti uro in podatkovni pin, kot to običajno počnemo pri napravah I2C. Povezave bodo takšne:

  1. SCL (zatič ure Matrix), povezan z A5 (zatič ure Arduino Uno. Za druge različice Arduina glejte podatkovni list)
  2. SDA (podatkovni pin matrice), povezan z A4. (Za druge različice Arduina glejte podatkovni list)
  3. VCC priključen na 5V.
  4. GND priključen na 0V.

Ogledate si lahko tudi shemo, prikazano na sliki.

3. korak: Koda

Koda
Koda
Koda
Koda

Koda Arduino

Najprej bomo vključili vse potrebne knjižnice.

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

Vse te knjižnice so na voljo v samem Arduino IDE. Le namestiti jih morate iz Upravitelja knjižnic. Skica >> Vključi knjižnico >> Upravljanje knjižnic

Nastavitvena funkcija ()

Nastavitev 8-bitnega niza brez podpisa za binarne vrednosti strore8 za 8 vrstic po 8 bitov (8 stolpcev). Nastavite naslov za komunikacijo I2C.

Funkcija zanke ()

Ker moramo natisniti znak, potrebujemo kodo za lik v realnem času. Najprimernejši način je, da kodo pošljete serijsko, Arduino pa bo prebral serijske podatke in ustrezno natisnil znak. Pošiljanje matrike je lahko naporno, zato lahko pošljemo niz z vsemi 8 kodami (po 8 bitov), ločenimi z vejicami.

Branje zaporednega niza:

če (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (podatki); }

Po branju besedila moramo ta niz dekodirati in vrniti binarne vrednosti. Kot vemo, bo format vhodnega niza vedno enak. Lahko ga kodiramo, da poiščemo podniz in pretvorimo nize v njihove decimalne ekvivalentne vrednosti. Nato bomo generirano decimalno matriko (uint8_t) posredovali za tiskanje znaka na matriko.

Pretvarjanje niza 8 bitov v decimalko:

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

Za ocenjevanje decimalnega ekvivalenta z uporabo funkcije power (pow ()) se morate ukvarjati z vrednostmi dvojnega tipa, zato lahko svojo funkcijo napajanja zapišemo kot:

int moč (int baza, int eksponent) {int c = 1; for (int i = 0; i {c = c*base;} vrni c;}

Zdaj bomo nazadnje napisali kodo za tiskanje znaka z ustvarjenim nizom 8 decimalnih vrednosti (po eno za vsako vrstico).

void print_emoji (uint8_t emoji , barva niza) {matrix.clear (); if (barva == "rdeča") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); zamuda (500); }

To kodo boste zlahka razumeli, saj najprej počistimo matriko in nato prikažemo znak z matriko emoji s funkcijo matrix.drawBitmap (). Ne pozabite napisati "matrix.writeDisplay ()" po vsakem oblikovanju, saj bo ta funkcija prikazala le vse dosedanje oblikovanje na matriki.

Zdaj lahko pošljete niz z vsemi kodnimi vrednostmi in Arduino bo natisnil znak na matriko. Kodo Arduino lahko prenesete od spodaj. Za poskusne namene lahko pišete

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

ta niz v serijskem monitorju in lahko vidi znak na matrici.

Zdaj moramo serijske podatke samodejno poslati iz programske opreme, ko pritisnemo gumb "Natisni". Za avtomatizacijo bomo izdelali predstavitveno matriko 8x8 in uporabniku omogočili izbiro, katere celice naj bodo obarvane, nato pa bo programska oprema samodejno ustvarila kodo in podatke serijsko poslala v Arduino v nizovni obliki. Za preostanek dela sem se odločil za Processing. Pri obdelavi lahko naredimo matriko s 64 gumbi (pravokotniki s pritisnjeno funkcijo) in lahko na začetku dodelimo določeno vrednost in barvo (Naj bo bela barva z vrednostjo 0). Zdaj, ko pritisnemo gumb, bomo barvo gumba pretvorili v črno in nastavili vrednost na 1. Če uporabnik znova pritisne isti gumb, se bo njegova vrednost znova spremenila v 0 in barva nazaj v belo. To bo uporabniku pomagalo, da kodo vedno znova spreminja in zlahka spreminja, ne da bi znova izbrisal celotno matriko. S klikom gumba »Natisni« bomo za predstavitev naredili niz, podoben tistemu, ki je prikazan zgoraj. Nato bo niz poslan na določena serijska vrata.

Kodo za obdelavo lahko prenesete od spodaj. To je moja prva koda v obdelavi. Predlogi za izboljšan način kodiranja so zelo cenjeni.

Ogledate si lahko, kako izgleda grafični vmesnik in kako je lik ustvarjen s sistemom. Komaj traja nekaj sekund, da ustvarite isti znak v matriki.

Kodo in slike tega projekta lahko prenesete iz mojega skladišča GitHub.

Priporočena: