Sisällysluettelo:

Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix): 3 vaihetta
Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix): 3 vaihetta

Video: Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix): 3 vaihetta

Video: Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix): 3 vaihetta
Video: 7 проектов. Сборка светодиодного ЖК-будильника с использованием DS1307 и Arduino | Урок 105 2024, Marraskuu
Anonim
Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix)
Mukautettu merkkigeneraattori (Adafruit HT16k33 Matrix)

Erikoismerkkien tulostaminen nestekidenäytöille ja led -matriiseille on hauskaa. Erikoismerkkien tai mukautettujen merkkien tulostaminen edellyttää, että luodaan taulukko, jossa on binaariset arvot kullekin riville ja sarakkeelle. Voi olla kiireistä löytää oikea koodi mille tahansa mukautetulle merkille, joten tämä projekti automatisoi ja luo koodin 8x8 led -matriisille ja tulostaa mukautetun merkin myös Adafruit HT16k33 8x8 Bicolor Matrixiin.

Adafruit HT16k33, 1,2 '' 8x8 Bicolor Led Matrix kommunikoi Arduinon kanssa I2C -yhteyskäytännön kautta

Adafruitin mukaan "Tämä LED -repun versio on suunniteltu 1,2" 8x8 -matriiseille. Niiden koko on vain 1,2 "x1,2", joten on sääli käyttää massiivista pelimerkkiä sen hallitsemiseksi. Tämä reppu ratkaisee 16 nastan tai nippusirun käytön turhautumisen ottamalla I2C-vakiovirtamatriisiohjaimen siististi piirilevyn taakse. Ohjainsiru hoitaa kaiken ja piirtää kaikki 64 LEDiä taustalle. Sinun tarvitsee vain kirjoittaa dataa siihen 2-nastaisella I2C-liitännällä. Osoitteenvalintatappeja on kaksi, joten voit valita yhden kahdeksasta osoitteesta hallitaksesi enintään kahdeksaa näistä yhdellä 2-nastaisella I2C-väylällä (samoin kuin mitä tahansa muita I2C-siruja tai antureita, joista pidät). Ohjainsiru voi himmentää koko näytön 1/16 kirkkaudesta täyteen kirkkauteen 1/16. Se ei voi himmentää yksittäisiä LED -valoja, vain koko näytön kerralla."

Tässä ohjeessa selitän sinulle kuinka saada koodin mille tahansa mukautetulle merkille reaaliajassa ja tulostaa merkki Led Matrixiin.

Vaihe 1: Komponentit

Tämä ohje on perusprojekti Adafruit HT16k33 Matrixissa. Tarvitset:

  1. Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 kaksivärinen LED -matriisi.
  2. Arduino (mikä tahansa vaihtoehto, mutta Uno on edullinen).
  3. Leipälauta
  4. Virtalähde

Vaihe 2: Kaavio

Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen

Adafruit HT16k33 Led -matriisin kytkeminen on erittäin helppoa, koska meidän on yhdistettävä kello ja datanappi kuten tavallisesti I2C -laitteissa. Liitännät ovat seuraavanlaisia:

  1. SCL (Matrixin kellotaulu) kytketty A5: een (Arduino Unon kellotappi. Katso muiden Arduinon varianttien tiedot)
  2. SDA (Data pin of Matrix) liitettynä A4: ään. (Katso muiden Arduinon varianttien tietolomake)
  3. VCC kytketty 5V.
  4. GND kytketty 0V jännitteeseen.

Voit myös tutustua kuvassa esitettyyn kaavioon.

Vaihe 3: Koodi

Koodi
Koodi
Koodi
Koodi

Arduino -koodi

Ensinnäkin sisällytämme kaikki tarvittavat kirjastot.

  1. Wire.h:- I2C-tiedonsiirtoon
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Kaikki nämä kirjastot ovat saatavilla Arduino IDE: ssä. Sinun tarvitsee vain asentaa ne kirjastonhallinnasta. Luonnos >> Sisällytä kirjasto >> Hallitse kirjastoja

Asetustoiminto ()

Allekirjoittamattoman kokonaisluvun 8-bittisen taulukon asettaminen strore8-binääriarvoksi 8 riville, 8 bittiä (8 saraketta). Aseta osoite I2C -viestinnälle.

Silmukkatoiminto ()

Kun meidän on tulostettava merkki, tarvitsemme hahmon koodin reaaliajassa. Kätevin tapa on lähettää koodi sarjassa ja Arduino lukee sarjatiedot ja tulostaa merkin sen mukaisesti. Matriisin lähettäminen sarjassa voi olla kiireistä työtä, joten voimme lähettää merkkijonon, jossa on kaikki 8 koodia (8 bittiä kukin) pilkuilla erotettuna.

Sarjan merkkijonon lukeminen:

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

Tekstin lukemisen jälkeen meidän on purettava tämä merkkijono ja palautettava binääriarvot. Kuten tiedämme, syöttöjonon muoto on aina sama. Voimme koodata sen löytääksesi alimerkkijonot ja muuntamaan merkkijonot desimaaliluvuiksi. Sitten välitämme luodun desimaalimatriisin (uint8_t) tulostaaksesi merkin matriisiin.

8 -bittisen merkkijonon muuntaminen desimaaliksi:

int val (merkkijono str) {int v = 0; for (int i = 0; i <8; i ++) {jos (str == '1') {v = v+teho (2, (7-i)); }} return v; }

Desimaaliekvivalentin arvioimiseksi tehotoiminnon (pow ()) avulla sinun on käsiteltävä kaksoistyyppisiä arvoja, joten voimme kirjoittaa oman tehofunktion seuraavasti:

int -teho (int -pohja, int -eksponentti) {int c = 1; for (int i = 0; i {c = c*base;} return c;}

Nyt vihdoin kirjoitamme koodin, joka tulostaa merkin käyttämällä muodostettua 8 desimaalin arvoa (yksi kullekin riville).

void print_emoji (uint8_t emoji , merkkijonon väri) {matrix.clear (); if (väri == "punainen") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); viive (500); }

Ymmärrät tämän koodin helposti, kun tyhjennämme ensin matriisin ja näytämme sitten merkin emoji -matriisin avulla käyttämällä matrix.drawBitmap () -funktiota. Muista kirjoittaa "matrix.writeDisplay ()" kaiken alustamisen jälkeen, koska tämä toiminto näyttää vain kaikki matriisissa tähän mennessä tehdyt muotoilut.

Nyt voit lähettää merkkijonon kaikilla koodiarvoilla ja Arduino tulostaa merkin matriisiin. Voit ladata Arduino -koodin alta. Kokeellisia tarkoituksia varten voit kirjoittaa

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

tämä merkkijono Serial Monitorissa ja voi nähdä merkin matriisissa.

Nyt meidän on lähetettävä sarjatiedot automaattisesti ohjelmistosta, kun painamme "Tulosta" -painiketta. Tämän automatisoimiseksi teemme demo 8x8 -matriisin ja tarjoamme käyttäjälle mahdollisuuden valita, mitkä solut värjätään, ja sitten ohjelmisto luo automaattisesti koodin ja lähettää tiedot sarjana Arduinolle merkkijonomuodossa. Valitsin käsittelyn muihin töihini. Käsittelyssä voimme tehdä matriisin käyttämällä 64 painiketta (suorakulmioita, joissa on painettu toiminto) ja voimme antaa tietyn arvon ja värin alussa (Olkoon se valkoinen väri, jonka arvo on 0). Aina kun painiketta painetaan, muutamme painikkeen värin mustaksi ja asetamme arvoksi 1. Jos käyttäjä painaa samaa painiketta uudelleen, sen arvo muuttuu jälleen 0: ksi ja väri valkoiseksi. Tämä auttaa käyttäjää muuttamaan koodia helposti uudestaan ja uudestaan ja voi tehdä muutoksia helposti poistamatta koko matriisia uudelleen. "Tulosta" -painikkeen napsautuksella teemme samanlaisen merkkijonon kuin yllä olevassa demossa. Sitten merkkijono lähetetään tiettyyn sarjaporttiin.

Voit ladata käsittelykoodin alta. Tämä on ensimmäinen koodini käsittelyssä. Ehdotuksia parannetusta koodausmenetelmästä arvostetaan suuresti.

Voit nähdä miltä GUI näyttää ja kuinka merkki luodaan järjestelmän avulla. Tuskin kestää sekunteja saman hahmon luomiseksi matriisiin.

Voit ladata tämän projektin koodin ja kuvat GitHub -arkistostani.

Suositeltava: