Turinys:

Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“): 3 žingsniai
Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“): 3 žingsniai

Video: Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“): 3 žingsniai

Video: Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“): 3 žingsniai
Video: Section 2 2024, Lapkritis
Anonim
Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“)
Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“)

Spausdinti specialius simbolius ant LCD ir LED matricų yra labai smagu. Specialiųjų simbolių arba pasirinktinių simbolių spausdinimo procedūra yra sugeneruoti masyvą su dvejetainėmis reikšmėmis kiekvienai eilutei ir stulpeliui. Gali būti sudėtinga rasti tinkamą bet kurio pasirinkto simbolio kodą, todėl šis projektas automatizuos ir sukurs 8x8 LED matricos kodą, taip pat atspausdins pasirinktinį simbolį „Adafruit HT16k33 8x8 Bicolor Matrix“.

„Adafruit HT16k33“, 1,2 colio 8x8 „Bicolor Led Matrix“, bendrauja su „Arduino“per I2C ryšio protokolą

Pasak „Adafruit“, „Ši LED kuprinės versija skirta 1,2 colio 8x8 matricoms. Jų matmenys yra tik 1,2 "x1,2", todėl gėda naudoti didžiulį lustų rinkinį. Ši kuprinė pašalina 16 kaiščių ar krūvos lustų naudojimo erzinimą, nes I2C pastovios srovės matricos valdiklis tvarkingai sėdi PCB gale. Valdiklio lustas rūpinasi viskuo, fone nupiešdamas visus 64 šviesos diodus. Viskas, ką jums reikia padaryti, tai įrašyti duomenis į jį naudojant 2 kontaktų I2C sąsają. Yra du adresų pasirinkimo kaiščiai, todėl galite pasirinkti vieną iš 8 adresų, kad galėtumėte valdyti iki 8 iš jų viename 2 kontaktų I2C magistralėje (taip pat bet kokius kitus jums patinkančius I2C lustus ar jutiklius). Vairuotojo lustas gali „pritemdyti“visą ekraną nuo 1/16 ryškumo iki viso ryškumo 1/16 žingsniais. Jis negali pritemdyti atskirų šviesos diodų, tik viso ekrano vienu metu “.

Šioje pamokoje aš jums paaiškinsiu, kaip realiu laiku gauti bet kurio pasirinkto simbolio kodą ir atspausdinti tą simbolį „Led Matrix“.

1 žingsnis: komponentai

Šis nurodymas yra pagrindinis „Adafruit HT16k33 Matrix“projektas. Tau reikia:

  1. „Adafruit HT16k33“1,2 x 1,2 colio 8x8 dviejų spalvų LED matrica.
  2. „Arduino“(pageidaujamas bet koks variantas, išskyrus „Uno“).
  3. Bandomoji Lenta
  4. Maitinimo šaltinis

2 žingsnis: schema

Schema
Schema
Schema
Schema

„Adafruit HT16k33 Led“matricos prijungimas yra labai lengvas, nes mums reikia prijungti laikrodį ir duomenų kaištį, kaip paprastai darome „I2C“įrenginiams. Ryšiai bus tokie:

  1. SCL (matricos laikrodžio kaištis) prijungtas prie A5 („Arduino Uno“laikrodžio kaištis. Kitų „Arduino“variantų ieškokite duomenų lape)
  2. SDA („Matrix“duomenų kaištis) prijungtas prie A4. (Žiūrėkite kitų „Arduino“variantų duomenų lapą)
  3. VCC prijungtas prie 5V.
  4. GND prijungtas prie 0V.

Taip pat galite susipažinti su schema, parodyta paveikslėlyje.

3 žingsnis: kodas

Kodas
Kodas
Kodas
Kodas

Arduino kodas

Pirmiausia įtraukiame visas reikalingas bibliotekas.

  1. Wire.h:- I2C ryšiui
  2. „Adafruit_LedBackpack“
  3. Adafruit_GFX

Visos šios bibliotekos yra pačioje „Arduino IDE“. Jums tereikia juos įdiegti iš bibliotekos tvarkyklės. Eskizas >> Įtraukti biblioteką >> Tvarkyti bibliotekas

Sąrankos funkcija ()

Nepasirašyto sveikojo skaičiaus 8 bitų masyvo nustatymas į 8 eilių, 8 bitų (8 stulpeliai), dvejetaines reikšmes „strore8“. Nustatykite I2C ryšio adresą.

Ciklo funkcija ()

Kadangi mums reikia spausdinti simbolį, mums reikia simbolio kodo realiuoju laiku. Patogiausias būdas yra siųsti kodą serijiniu būdu, o „Arduino“perskaitys serijos duomenis ir atitinkamai išspausdins simbolį. Masyvo siuntimas serijiniu būdu gali būti įtemptas darbas, todėl galime išsiųsti eilutę su visais 8 kodais (po 8 bitus), atskirtus kableliais.

Serijos eilutės skaitymas:

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

Perskaitę tekstą, turime iššifruoti šią eilutę ir susigrąžinti dvejetaines reikšmes. Kaip žinome, įvesties eilutės formatas visada bus tas pats. Mes galime jį koduoti, kad surastume antrines eilutes ir konvertuotume eilutes į dešimtainius atitikmenis. Tada perduosime sukurtą dešimtainį masyvą (uint8_t), kad spausdintume simbolį ant matricos.

8 bitų eilutės konvertavimas į dešimtainį:

int val (String str) {int v = 0; už (int i = 0; i <8; i ++) {jei (str == '1') {v = v+galia (2, (7-i)); }} return v; }

Norėdami įvertinti dešimtainį ekvivalentą naudodami galios funkciją (pow ()), turite susidoroti su dvigubo tipo reikšmėmis, todėl galime parašyti savo galios funkciją kaip:

int galia (int bazė, int eksponentas) {int c = 1; for (int i = 0; i {c = c*base;} return c;}

Dabar pagaliau parašysime kodą, kad išspausdintume simbolį, naudodami sugeneruotą 8 dešimtųjų reikšmių masyvą (po vieną kiekvienai eilutei).

void print_emoji (uint8_t emoji , eilutės spalva) {matrix.clear (); if (spalva == "raudona") {matrix.drawBitmap (0, 0, jaustukai, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, jaustukai, 8, 8, LED_GREEN); } matrix.writeDisplay (); vėlavimas (500); }

Jūs lengvai suprasite šį kodą, nes pirmiausia išvalome matricą, o tada parodome simbolį naudodami jaustukų masyvą, naudodami funkciją matrix.drawBitmap (). Nepamirškite po viso formatavimo parašyti „matrix.writeDisplay ()“, nes ši funkcija rodys tik visus iki šiol matricoje atliktus formatavimus.

Dabar galite išsiųsti eilutę su visomis kodo reikšmėmis, o „Arduino“spausdins simbolį ant matricos. „Arduino“kodą galite atsisiųsti iš apačios. Eksperimento tikslais galite rašyti

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

Ši eilutė serijiniame monitoriuje ir mato simbolį matricoje.

Dabar turime automatiškai siųsti serijos duomenis iš programinės įrangos, kai paspaudžiame mygtuką „Spausdinti“. Norėdami tai automatizuoti, sukursime demonstracinę 8x8 matricą ir suteiksime galimybę vartotojui pasirinkti, kurios ląstelės turėtų būti nuspalvintos, tada programinė įranga automatiškai sugeneruos kodą ir serijiniu būdu išsiųs duomenis į „Arduino“. Likusiam darbui pasirinkau apdorojimą. Apdorodami galime sukurti matricą naudodami 64 mygtukus (stačiakampiai su paspausta funkcija) ir pradžioje galime priskirti tam tikrą vertę ir spalvą (tegul tai bus balta spalva su 0 reikšme). Dabar, kai tik paspaudžiamas mygtukas, mes pakeisime mygtuko spalvą į juodą ir nustatysime reikšmę į 1. Jei vartotojas dar kartą paspaus tą patį mygtuką, jo vertė vėl pasikeis į 0 ir spalva vėl taps balta. Tai padės vartotojui lengvai vėl ir vėl pakeisti kodą ir lengvai atlikti pakeitimus, neištrinant visos matricos. Spustelėję mygtuką „Spausdinti“, mes sudarysime eilutę, panašią į aukščiau pateiktą demonstracijai. Tada eilutė bus siunčiama į konkretų nuoseklųjį prievadą.

Apdorojimo kodą galite atsisiųsti iš apačios. Tai mano pirmasis kodas apdorojant. Labai vertinami pasiūlymai dėl patobulinto kodavimo būdo.

Galite pamatyti, kaip atrodo GUI ir kaip sukurtas simbolis naudojant sistemą. Vargu ar prireiks sekundžių, kad sukurtumėte tą patį personažą matricoje.

Šio projekto kodą ir vaizdus galite atsisiųsti iš mano „GitHub“saugyklos.

Rekomenduojamas: