Përmbajtje:

Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix): 3 hapa
Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix): 3 hapa

Video: Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix): 3 hapa

Video: Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix): 3 hapa
Video: Si të gjesh “pasionin” tënd? 2024, Korrik
Anonim
Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix)
Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix)

Shtypja e Karaktereve Speciale në LCD dhe Matricat Led është një argëtim i madh. Procedura për të printuar karaktere speciale ose karaktere të personalizuara është krijimi i një grupi me vlera binare për secilën rresht dhe kolonë. Mund të jetë e lodhshme të gjesh kodin e duhur për çdo karakter të personalizuar, prandaj, ky projekt do të automatizojë dhe gjenerojë kod për një matricë të udhëhequr 8x8 dhe gjithashtu do të shtypë karakterin e personalizuar në Adafruit HT16k33 8x8 Matrix Bicolor.

Adafruit HT16k33, një matricë 1.2 inç 8x8 me dy ngjyra komunikon me Arduino përmes një protokolli komunikimi I2C

Sipas Adafruit, "Ky version i shpinës LED është projektuar për matricat 1.2" 8x8. Ato kanë përmasa vetëm 1.2 "x1.2" kështu që është turp të përdorësh një grup masiv patate të skuqura për ta kontrolluar atë. Ky çantë shpine zgjidh shqetësimin e përdorimit të 16 kunjave ose një bandë patate të skuqura duke pasur një kontrollues të matricës me rrymë konstante I2C të ulet mirë në pjesën e pasme të PCB. Çipi i kontrolluesit kujdeset për gjithçka, duke tërhequr të gjitha 64 LED në sfond. E tëra çfarë ju duhet të bëni është t'i shkruani të dhënat duke përdorur ndërfaqen I2C me 2 kunja. Ekzistojnë dy kunja të përzgjedhura të adresave, kështu që ju mund të zgjidhni një nga 8 adresat për të kontrolluar deri në 8 prej tyre në një autobus të vetëm 2-pin I2C (si dhe çfarëdo patate të skuqura ose sensorë të tjerë I2C që ju pëlqen). Çipi i drejtuesit mund të "zbehë" të gjithë ekranin nga shkëlqimi 1/16 deri në shkëlqimin e plotë në hapat e 1/16. Nuk mund të zbehë LED -të individuale, vetëm të gjithë ekranin në të njëjtën kohë."

Në këtë udhëzues, unë do t'ju shpjegoj se si të merrni kodin për çdo karakter të personalizuar në kohë reale dhe ta printoni atë karakter në Led Matrix.

Hapi 1: Përbërësit

Ky udhëzues është një projekt themelor në Adafruit HT16k33 Matrix. Ju duhet:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Matricë Led me ngjyra.
  2. Arduino (çdo variant por Uno preferohet).
  3. Breadboard
  4. Furnizimi me energji elektrike

Hapi 2: Skematike

Skematike
Skematike
Skematike
Skematike

Lidhja e matricës Adafruit HT16k33 Led është shumë e lehtë pasi kemi nevojë të lidhim orën dhe pinin e të dhënave siç bëjmë zakonisht për pajisjet I2C. Lidhjet do të jenë si më poshtë:

  1. SCL (Pika e orës e Matricës) e lidhur me A5 (Kodi i orës i Arduino Uno. Referojeni fletën e të dhënave për variantet e tjera të Arduino)
  2. SDA (Kodi i të dhënave të Matricës) i lidhur me A4. (Referojuni fletës së të dhënave për variantet e tjera të Arduino)
  3. VCC e lidhur me 5V.
  4. GND i lidhur me 0V.

Ju gjithashtu mund të konsultoheni me skemën e treguar në figurë.

Hapi 3: Kodi

Kodi
Kodi
Kodi
Kodi

Kodi Arduino

Së pari, ne do të përfshijmë të gjitha bibliotekat e kërkuara.

  1. Wire.h:- Për komunikimin I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Të gjitha këto biblioteka janë të disponueshme në vetë Arduino IDE. Thjesht duhet t'i instaloni ato nga Menaxheri i Bibliotekës. Skica >> Përfshi Bibliotekën >> Menaxhoni Bibliotekat

Funksioni i konfigurimit ()

Vendosja e një grupi të plotë të panënshkruar 8-bit në vlerat binare strore8 për 8 rreshta, me nga 8 bit secila (8 kolona). Vendosni adresën për komunikimin I2C.

Funksioni i lakut ()

Ndërsa kemi nevojë të shtypim karakterin, ne kemi nevojë për kodin për personazhin në kohë reale. Metoda më e përshtatshme është dërgimi i kodit në mënyrë serike dhe Arduino do të lexojë të dhënat serike dhe do të printojë karakterin në përputhje me rrethanat. Dërgimi i një grupi në mënyrë serike mund të jetë një punë e vrullshme, kështu që ne mund të dërgojmë një varg me të gjitha 8 kodet (8 bit secila) të ndara me presje.

Vargu Serial i Leximit:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (të dhëna); }

Pas leximit të tekstit, ne duhet të deshifrojmë këtë varg dhe të marrim përsëri vlerat binare. Siç e dimë, formati i vargut hyrës do të jetë gjithmonë i njëjtë. Ne mund ta kodojmë për të gjetur nënvargje dhe për t'i kthyer vargjet në vlerat e tyre ekuivalente dhjetore. Pastaj do të kalojmë grupin dhjetor të gjeneruar (uint8_t) për të printuar karakterin në matricë.

Konvertimi i vargut prej 8 bitësh në dhjetëshe:

int val (String str) {int v = 0; për (int i = 0; i <8; i ++) {if (str == '1') {v = v+fuqi (2, (7-i)); }} kthimi v; }

Për të vlerësuar ekuivalentin dhjetor duke përdorur funksionin e fuqisë (pow ()), ju duhet të merreni me vlera të tipit të dyfishtë dhe kështu ne mund të shkruajmë funksionin tonë të fuqisë si:

fuqia int (baza int, eksponenti int) {int c = 1; për (int i = 0; i {c = c*bazë;} kthimi c;}

Tani, më në fund, ne do të shkruajmë kodin për të printuar karakterin duke përdorur grupin e gjeneruar prej 8 vlerash dhjetore (një për secilën rresht).

void print_emoji (uint8_t emoji , String color) {matrix.clear (); nëse (ngjyra == "e kuqe") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); vonesë (500); }

Ju lehtë do ta kuptoni këtë kod pasi po pastrojmë matricën së pari dhe më pas shfaqim karakterin duke përdorur grupin emoji duke përdorur funksionin matrix.drawBitmap (). Mos harroni të shkruani "matrix.writeDisplay ()" pas të gjitha formatimeve pasi ky funksion do të shfaq vetëm të gjitha formatimet e bëra deri më tani në matricë.

Tani mund të dërgoni vargun me të gjitha vlerat e kodit dhe Arduino do të printojë karakterin në matricë. Kodin Arduino mund ta shkarkoni nga poshtë. Për qëllime eksperimentale, mund të shkruani

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

ky varg në Serial Monitor dhe mund të shohë karakterin në matricë.

Tani, ne duhet të dërgojmë të dhënat serike automatikisht nga një softuer kur shtypim butonin "Print". Për automatizimin e kësaj, ne do të bëjmë një matricë demo 8x8 dhe do t'i sigurojmë përdoruesit një mundësi për të zgjedhur se cilat qeliza duhet të jenë të ngjyrosura dhe më pas softueri automatikisht do të gjenerojë kodin dhe do t'i dërgojë të dhënat në mënyrë serike në Arduino në formatin e vargut. Zgjodha Përpunimin për pjesën tjetër të punës sime. Në përpunim, ne mund të bëjmë një matricë duke përdorur 64 butona (drejtkëndësha me funksion të shtypur) dhe mund të caktojmë një vlerë dhe ngjyrë të veçantë në fillim (Le të jetë ngjyra e bardhë me vlerën 0). Tani sa herë që shtypet butoni, ne do ta kthejmë ngjyrën e butonit në të zezë dhe do ta vendosim vlerën 1. Nëse përdoruesi shtyp përsëri të njëjtin buton, vlera e tij përsëri do të ndryshojë në 0 dhe ngjyra përsëri në të bardhë. Kjo do të ndihmojë përdoruesin të ndryshojë kodin përsëri dhe përsëri me lehtësi dhe mund të bëjë ndryshime lehtësisht pa e fshirë përsëri të gjithë matricën. Me klikimin e butonit "Print", ne do të bëjmë një varg të ngjashëm me atë të treguar më lart për demonstrimin. Pastaj vargu do të dërgohet në portin serik të veçantë.

Ju mund të shkarkoni kodin e përpunimit nga poshtë. Ky është kodi im i parë në përpunim. Sugjerimet për mënyrën e zgjeruar të kodimit vlerësohen shumë.

Ju mund të shihni se si duket GUI dhe si krijohet karakteri duke përdorur sistemin. Nuk do të duhen sekonda për të krijuar të njëjtin karakter në matricë.

Ju mund të shkarkoni kodin dhe imazhet e këtij projekti nga depoja ime GitHub.

Recommended: