Turinys:
Video: Individualizuotas simbolių generatorius („Adafruit HT16k33 Matrix“): 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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:
- „Adafruit HT16k33“1,2 x 1,2 colio 8x8 dviejų spalvų LED matrica.
- „Arduino“(pageidaujamas bet koks variantas, išskyrus „Uno“).
- Bandomoji Lenta
- Maitinimo šaltinis
2 žingsnis: 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:
- SCL (matricos laikrodžio kaištis) prijungtas prie A5 („Arduino Uno“laikrodžio kaištis. Kitų „Arduino“variantų ieškokite duomenų lape)
- SDA („Matrix“duomenų kaištis) prijungtas prie A4. (Žiūrėkite kitų „Arduino“variantų duomenų lapą)
- VCC prijungtas prie 5V.
- GND prijungtas prie 0V.
Taip pat galite susipažinti su schema, parodyta paveikslėlyje.
3 žingsnis: kodas
Arduino kodas
Pirmiausia įtraukiame visas reikalingas bibliotekas.
- Wire.h:- I2C ryšiui
- „Adafruit_LedBackpack“
- 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:
Kaip naudoti 20x4 I2C simbolių LCD ekraną su „Arduino“: 6 žingsniai
Kaip naudoti 20x4 I2C simbolių LCD ekraną su „Arduino“: šioje paprastoje pamokoje mes sužinosime, kaip naudoti 20x4 I2C simbolių LCD ekraną su „Arduino Uno“, kad būtų rodomas paprastas tekstas „Labas pasaulis. Žiūrėkite vaizdo įrašą
„Layad Circuits“raidinė ir skaitmeninė klaviatūra su ESP32 ir simbolių LCD: 4 žingsniai
„Layad Circuits“raidinė ir skaitmeninė klaviatūra su ESP32 ir simbolių skystųjų kristalų ekranu: Šiame straipsnyje parodyta, kaip į raidžių ir skaičių klaviatūros modulį ir 16x2 I2C simbolių skystųjų kristalų modulį galima įvesti duomenis į ESP32. Šis metodas gali būti naudojamas įvesti ir gauti „Wi-Fi“prisijungimo duomenis ir kitą informaciją į ESP32 ir iš jos
LCD užpuolikai: „Space Invaders Like“žaidimas 16x2 LCD simbolių ekrane: 7 žingsniai
„LCD Invaders“: „Space Invaders Like Game“16x2 LCD simbolių ekrane: nereikia pristatyti legendinio „Space Invaders“žaidimo. Įdomiausia šio projekto ypatybė yra ta, kad grafiniam išėjimui naudojamas tekstinis ekranas. Tai pasiekiama įgyvendinant 8 pasirinktinius simbolius. Galite atsisiųsti visą „Arduino“
Orų muzikos generatorius (ESP8266 pagrįstas Midi generatorius): 4 žingsniai (su nuotraukomis)
Orų muzikos generatorius (ESP8266 pagrįstas Midi generatorius): Sveiki, šiandien paaiškinsiu, kaip susikurti savo mažą orų muzikos generatorių. Jis pagrįstas ESP8266, kuris yra tarsi „Arduino“ir reaguoja į temperatūrą, lietų ir šviesos intensyvumas. Nesitikėkite, kad tai sukels visas dainas ar akordų programą
Generatorius - nuolatinės srovės generatorius naudojant „Reed“jungiklį: 3 žingsniai
Generatorius - nuolatinės srovės generatorius naudojant Reed jungiklį: paprastas nuolatinės srovės generatorius Nuolatinės srovės (DC) generatorius yra elektros mašina, kuri mechaninę energiją paverčia nuolatinės srovės elektros energija. Svarbu: nuolatinės srovės (DC) generatorius gali būti naudojamas kaip nuolatinės srovės variklis be jokių konstrukcinių konstrukcijų pokyčiai