Sisukord:
Video: Kohandatud tähemärkide generaator (Adafruit HT16k33 maatriks): 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Erimärkide printimine LCD -ekraanidele ja LED -maatriksitele on väga lõbus. Erimärkide või kohandatud märkide printimise protseduur on genereerida iga rea ja veeru jaoks binaarsete väärtustega massiiv. Iga kohandatud märgi jaoks õige koodi leidmine võib olla pingeline, seega automatiseerib ja genereerib see projekt 8x8 LED -maatriksi koodi ning prindib kohandatud märgi ka Adafruit HT16k33 8x8 Bicolor Matrixile.
Adafruit HT16k33, 1,2 -tolline 8x8 kahevärviline LED -maatriks, suhtleb Arduinoga I2C sideprotokolli kaudu
Adafruit'i sõnul: "See LED -seljakoti versioon on mõeldud 1,2" 8x8 maatriksitele. Nende mõõtmed on vaid 1,2 "x1,2", nii et on häbi kasutada selle juhtimiseks tohutul hulgal kiipe. See seljakott lahendab 16 tihvti või hunniku kiipide kasutamise tüütuse sellega, et I2C püsivoolu maatriksikontroller istub korralikult PCB tagaküljel. Kontrolleri kiip hoolitseb kõige eest, joonistades taustale kõik 64 LED -i. Piisab, kui kirjutate sinna andmed, kasutades 2-pin I2C liidest. Seal on kaks aadressi valimise tihvti, nii et saate valida ühe kaheksast aadressist, et juhtida kuni kaheksa neist ühe kahe kontaktiga I2C siinil (nagu ka mis tahes muid I2C kiipe või andureid, mis teile meeldivad). Juhi kiip võib 1/16 sammuga kogu ekraani tuhmida 1/16 heledusest kuni täieliku heleduseni. See ei saa hämardada üksikuid LED -e, vaid kogu ekraani korraga."
Selles juhendis selgitan teile, kuidas saada reaalajas mis tahes kohandatud märgi kood ja printida see märk Led Matrixile.
Samm: komponendid
See juhend on Adafruit HT16k33 Matrixi põhiprojekt. Sa vajad:
- Adafruit HT16k33 1,2 "x 1,2" 8x8 kahevärviline LED -maatriks.
- Arduino (eelistatud on mis tahes variant, kuid Uno).
- Leivalaud
- Toiteallikas
2. samm: skemaatiline
Adafruit HT16k33 Led maatriksi ühendamine on väga lihtne, kuna peame ühendama kella ja andmeklemmi nagu tavaliselt I2C seadmete puhul. Ühendused on järgmised:
- SCL (maatriksi kellatapp) on ühendatud A5 -ga (Arduino Uno kellanupp. Teiste Arduino variantide kohta vt andmelehte)
- SDA (maatriksi andmetihvt) on ühendatud A4 -ga. (Vaadake teiste Arduino variantide andmelehte)
- VCC on ühendatud 5 V pingega.
- GND on ühendatud 0V -ga.
Samuti saate vaadata joonisel näidatud skeemi.
3. samm: kood
Arduino kood
Esiteks kaasame kõik vajalikud raamatukogud.
- Wire.h:- I2C-side jaoks
- Adafruit_LedBackpack
- Adafruit_GFX
Kõik need teegid on saadaval Arduino IDE -s. Peate need lihtsalt raamatukoguhaldurist installima. Visand >> Kaasa raamatukogu >> Raamatukogude haldamine
Seadistusfunktsioon ()
Allkirjata täisarvulise 8-bitise massiivi seadistamine 8 rea binaarseteks väärtusteks, 8 bitti (8 veergu). Määrake I2C -side aadress.
Loop funktsioon ()
Kuna me peame tegelase printima, vajame tegelase koodi reaalajas. Kõige mugavam meetod on koodi jada saata ja Arduino loeb seeriaandmeid ning prindib märgi vastavalt. Massiivi järjestikune saatmine võib olla pingeline töö, seega võime saata stringi, kus on kõik 8 koodi (kumbki 8 bitti) komadega eraldatud.
Seeria stringi lugemine:
if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (andmed); }
Pärast teksti lugemist peame selle stringi dekodeerima ja binaarväärtused tagasi saama. Nagu me teame, on sisendstringi vorming alati sama. Saame selle kodeerida alamstringide leidmiseks ja stringide teisendamiseks kümnendkoha ekvivalendiks. Seejärel edastame genereeritud kümnendmassiivi (uint8_t), et printida märk maatriksile.
8 -bitise stringi teisendamine kümnendkohaks:
int val (String str) {int v = 0; jaoks (int i = 0; i <8; i ++) {kui (str == '1') {v = v+võimsus (2, (7-i)); }} return v; }
Kümnendekvivalendi hindamiseks võimsusfunktsiooni (pow ()) abil peate tegelema topelt tüüpi väärtustega ja seega saame kirjutada oma võimsusfunktsiooni järgmiselt:
int võimsus (int alus, int astendaja) {int c = 1; jaoks (int i = 0; i {c = c*alus;} tagasta c;}
Nüüd lõpuks kirjutame koodi, et printida tähemärk, kasutades 8 kümnendväärtuse (üks iga rea kohta) genereeritud massiivi.
tühine print_emoji (uint8_t emoji , stringi värv) {matrix.clear (); if (color == "red") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emotikon, 8, 8, LED_GREEN); } matrix.writeDisplay (); viivitus (500); }
Saate sellest koodist hõlpsasti aru, kuna tühjendame kõigepealt maatriksi ja kuvame märgi emotikonide massiivi abil, kasutades funktsiooni matrix.drawBitmap (). Ärge unustage pärast vormindamist kirjutada "matrix.writeDisplay ()", kuna see funktsioon kuvab ainult kõik maatriksil seni tehtud vormindused.
Nüüd saate saata stringi kõigi koodiväärtustega ja Arduino prindib märgi maatriksile. Arduino koodi saate alla laadida altpoolt. Katse eesmärgil võite kirjutada
B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100
see string Serial Monitoris ja näeb maatriksil olevat märki.
Nüüd peame seeriaandmed tarkvaralt automaatselt saatma, kui vajutame nuppu "Prindi". Selle automatiseerimiseks teeme demo maatriksi 8x8 ja pakume kasutajale võimalust valida, milliseid lahtreid värvida, ning seejärel genereerib tarkvara koodi automaatselt ja saadab andmed järjestikku Arduinole stringivormingus. Ülejäänud töö jaoks valisin töötlemise. Töötlemisel saame teha maatriksi, kasutades 64 nuppu (vajutatud funktsiooniga ristkülikud), ja saame alguses määrata konkreetse väärtuse ja värvi (olgu see valge värv väärtusega 0). Nüüd, kui nuppu vajutatakse, muudame nupu värvi mustaks ja seame väärtuseks 1. Kui kasutaja vajutab sama nuppu uuesti, muutub selle väärtus uuesti 0 -ks ja värv valgeks. See aitab kasutajal koodi uuesti ja uuesti hõlpsalt muuta ja saab hõlpsalt muudatusi teha, ilma et kogu maatriksit uuesti kustutataks. Klõpsates nuppu "Prindi", teeme stringi, mis sarnaneb ülaltoodud demoga. Seejärel saadetakse string konkreetsele jadapordile.
Töötluskoodi saate alla laadida altpoolt. See on minu esimene kood töötlemisel. Soovitusi täiustatud kodeerimisviisi kohta hinnatakse kõrgelt.
Näete, kuidas GUI välja näeb ja kuidas tegelane süsteemi abil luuakse. Vaevalt kulub sama tegelase maatriksile loomiseks sekundeid.
Selle projekti koodi ja pilte saate alla laadida minu GitHubi hoidlast.
Soovitan:
DIY helireaktiivne LED -maatriks: 6 sammu
DIY helireaktiivne LED -maatriks: kas olete kunagi tundnud vajadust laheda helireaktsioonifunktsiooniga RGB -maatriksi järele, kuid selle ostmine oli väga keeruline või väga kallis? Noh, nüüd on teie ootamine lõppenud. Teie toas võib olla lahe Audio Reactive RGB LED -maatriks. See juhend
Google'i assistendi juhitav LED -maatriks!: 7 sammu (koos piltidega)
Google'i assistendi juhitav LED -maatriks!: Selles õpetuses näitan teile, kuidas saate teha Google'i assistendi juhitavat LED -maatriksit, mida saate nutitelefoni abil igal pool vormi juhtida. Nii et alustame
LCD sissetungijad: Space Invaders Like Game 16x2 LCD tähemärkide ekraanil: 7 sammu
LCD sissetungijad: Space Invaders Like Game 16x2 LCD tähemärkide ekraanil: pole vaja tutvustada legendaarset “Space Invaders” mängu. Selle projekti kõige huvitavam omadus on see, et graafiliseks väljundiks kasutatakse tekstiekraani. See saavutatakse 8 kohandatud tähemärgi rakendamisega. Võite alla laadida täieliku Arduino
Adafruit Feather NRF52 kohandatud juhtnupud, kodeerimist pole vaja: 8 sammu (piltidega)
Adafruit Feather NRF52 kohandatud juhtnupud, kodeerimist pole vaja: värskendus 23. aprillil 2019 - kuupäeva/kellaaja graafikute puhul, mis kasutavad ainult Arduino millis (), vaadake Arduino kuupäeva/kellaaja joonistamist/logimist, kasutades Millis () ja PfodAppi Viimane tasuta pfodDesigner V3.0.3610+ täitke Arduino visandid, et joonistada andmed kuupäeva/kellaaja järgi
Generaator - alalisvoolu generaator Reed lüliti abil: 3 sammu
Generaator - alalisvoolu generaator Reed lülitit kasutades: lihtne alalisvoolu generaator Alalisvoolu (DC) generaator on elektrimasin, mis muudab mehaanilise energia alalisvoolu elektrienergiaks. Oluline: alalisvoolu (DC) generaatorit saab kasutada alalisvoolumootorina ilma konstruktsioonita muudatused