Sisukord:

Kohandatud tähemärkide generaator (Adafruit HT16k33 maatriks): 3 sammu
Kohandatud tähemärkide generaator (Adafruit HT16k33 maatriks): 3 sammu

Video: Kohandatud tähemärkide generaator (Adafruit HT16k33 maatriks): 3 sammu

Video: Kohandatud tähemärkide generaator (Adafruit HT16k33 maatriks): 3 sammu
Video: 5MIINUST x NUBLU - (ei ole) aluspükse 2024, November
Anonim
Kohandatud tähemärkide generaator (Adafruit HT16k33 Matrix)
Kohandatud tähemärkide generaator (Adafruit HT16k33 Matrix)

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:

  1. Adafruit HT16k33 1,2 "x 1,2" 8x8 kahevärviline LED -maatriks.
  2. Arduino (eelistatud on mis tahes variant, kuid Uno).
  3. Leivalaud
  4. Toiteallikas

2. samm: skemaatiline

Skeem
Skeem
Skeem
Skeem

Adafruit HT16k33 Led maatriksi ühendamine on väga lihtne, kuna peame ühendama kella ja andmeklemmi nagu tavaliselt I2C seadmete puhul. Ühendused on järgmised:

  1. SCL (maatriksi kellatapp) on ühendatud A5 -ga (Arduino Uno kellanupp. Teiste Arduino variantide kohta vt andmelehte)
  2. SDA (maatriksi andmetihvt) on ühendatud A4 -ga. (Vaadake teiste Arduino variantide andmelehte)
  3. VCC on ühendatud 5 V pingega.
  4. GND on ühendatud 0V -ga.

Samuti saate vaadata joonisel näidatud skeemi.

3. samm: kood

Kood
Kood
Kood
Kood

Arduino kood

Esiteks kaasame kõik vajalikud raamatukogud.

  1. Wire.h:- I2C-side jaoks
  2. Adafruit_LedBackpack
  3. 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: