INHOUDSOPGAWE:

Custom Character Generator (Adafruit HT16k33 Matrix): 3 stappe
Custom Character Generator (Adafruit HT16k33 Matrix): 3 stappe

Video: Custom Character Generator (Adafruit HT16k33 Matrix): 3 stappe

Video: Custom Character Generator (Adafruit HT16k33 Matrix): 3 stappe
Video: Adding a push button matrix to HT16K33 led display modules (featuring the TinyPICO) 2024, Julie
Anonim
Pasgemaakte karakteropwekker (Adafruit HT16k33 -matriks)
Pasgemaakte karakteropwekker (Adafruit HT16k33 -matriks)

Dit is baie lekker om spesiale karakters op LCD's en Led Matrices te druk. Die prosedure om spesiale karakters of persoonlike karakters te druk, is om 'n skikking met binêre waardes vir elke ry en kolom te genereer. Dit kan gejaagd wees om die korrekte kode vir enige aangepaste karakter te vind, daarom sal hierdie projek kode vir 'n 8x8 led -matriks outomatiseer en genereer en die pasgemaakte karakter ook op Adafruit HT16k33 8x8 Bicolor Matrix druk.

Adafruit HT16k33, 'n 1.2 '' 8x8 Bicolor Led Matrix kommunikeer met Arduino via 'n I2C -kommunikasieprotokol

Volgens Adafruit, "Hierdie weergawe van die LED -rugsak is ontwerp vir die 1.2" 8x8 matrikse. Hulle meet slegs 1,2 "x 1,2", so dit is jammer om 'n groot aantal skyfies te gebruik om dit te beheer. Hierdie rugsak los die ergernis van die gebruik van 16 penne of 'n klomp skyfies op deur 'n I2C konstante stroom matriks kontroleerder netjies agter op die PCB te sit. Die controller -chip sorg vir alles en teken al die 64 LED's op die agtergrond. Al wat u hoef te doen is om data daaroor te skryf met behulp van die 2-pins I2C-koppelvlak. Daar is twee adreskeuse, sodat u een van 8 adresse kan kies om tot 8 hiervan op 'n enkele 2-pins I2C-bus te beheer (sowel as enige ander I2C-skyfies of sensors wat u wil). Die bestuurder -chip kan die hele skerm in 1/16 stappe van 1/16 helderheid tot volle helderheid 'dim'. Dit kan nie individuele LED's dowwe nie, slegs die hele skerm tegelyk."

In hierdie instruksies sal ek u verduidelik hoe u die kode vir enige persoonlike karakter intyds kan kry en die karakter op Led Matrix kan druk.

Stap 1: Komponente

Hierdie instruksies is 'n basiese projek oor Adafruit HT16k33 Matrix. Jy benodig:

  1. Adafruit HT16k33 1.2 '' x 1.2 '' 8x8 Bicolor Led Matrix.
  2. Arduino (enige variant, maar Uno word verkies).
  3. Broodbord
  4. Kragtoevoer

Stap 2: Skematiese

Skematiese
Skematiese
Skematiese
Skematiese

Dit is baie maklik om die Adafruit HT16k33 Led -matriks te bedrieg, aangesien ons die horlosie en die datapennetjie moet koppel, soos gewoonlik vir I2C -toestelle. Verbindings sal soos volg wees:

  1. SCL (Clock pin of Matrix) gekoppel aan A5 (Clock pin of Arduino Uno. Raadpleeg die datablad vir ander variante van Arduino)
  2. SDA (Data pin of Matrix) gekoppel aan A4. (Raadpleeg die datablad vir ander variante van Arduino)
  3. VCC gekoppel aan 5V.
  4. GND gekoppel aan 0V.

U kan ook die skema wat in die figuur getoon word, raadpleeg.

Stap 3: Kodeer

Kode
Kode
Kode
Kode

Arduino -kode

Eerstens sal ons al die nodige biblioteke insluit.

  1. Wire.h:- Vir I2C-kommunikasie
  2. Adafruit_LedRugsak
  3. Adafruit_GFX

Al hierdie biblioteke is beskikbaar in Arduino IDE self. U hoef dit net van Library Manager af te installeer. Skets >> Sluit biblioteek in >> Bestuur biblioteke

Opstelfunksie ()

Stel 'n ongetekende heelgetal-8-bis-skikking op vir strore8-binêre waardes vir 8 rye, van 8 bisse elk (8 kolomme). Stel die adres vir I2C -kommunikasie.

Lusfunksie ()

Aangesien ons die karakter moet druk, benodig ons die kode vir die karakter intyds. Die maklikste metode is om die kode in reekse te stuur, en Arduino sal die reeksdata lees en die karakter dienooreenkomstig druk. Om 'n skikking serieel te stuur, kan 'n gejaagde taak wees, daarom kan ons 'n string stuur met al 8 kodes (8 bisse elk) geskei deur kommas.

Leesreeksreeks:

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

Nadat ons die teks gelees het, moet ons hierdie string ontsyfer en die binêre waardes terugkry. Soos ons weet, sal die invoerstring se formaat altyd dieselfde wees. Ons kan dit kodeer om onderdele te vind en die snare om te skakel na hul desimale ekwivalente waardes. Dan slaag ons die gegenereerde desimale skikking (uint8_t) om die karakter op matriks te druk.

Omskakeling van 8 bisse na desimale:

int val (String str) {int v = 0; vir (int i = 0; i <8; i ++) {if (str == '1') {v = v+krag (2, (7-i)); }} terugkeer v; }

Vir die evaluering van desimale ekwivalent met behulp van kragfunksie (pow ()), moet u dubbele tipe waardes hanteer en daarom kan ons ons eie kragfunksie skryf as:

int krag (int basis, int eksponent) {int c = 1; vir (int i = 0; i {c = c*basis;} gee c terug;}

Uiteindelik skryf ons die kode om die karakter te druk met behulp van die gegenereerde reeks van 8 desimale waardes (een vir elke ry).

ongeldig print_emoji (uint8_t emoji , string kleur) {matrix.clear (); as (kleur == "rooi") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } anders {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); vertraging (500); }

U sal hierdie kode maklik verstaan as ons die matriks eers uitvee en dan die karakter vertoon met behulp van 'n emoji -skikking met behulp van die matrix.drawBitmap () -funksie. Moenie vergeet om "matrix.writeDisplay ()" na al die formatering te skryf nie, want hierdie funksie sal slegs al die formasies wat tot dusver op die matriks gedoen is, vertoon.

Nou kan u die string met alle kodewaardes stuur, en Arduino sal die karakter op die matriks druk. U kan die Arduino -kode van onder aflaai. Vir eksperimentele doeleindes kan u skryf

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

hierdie string in Serial Monitor en kan die karakter op die matriks sien.

Nou moet ons die reeksdata outomaties vanaf 'n sagteware stuur wanneer ons op die "Print" -knoppie druk. Om dit te outomatiseer, sal ons 'n demo 8x8 -matriks maak, en ons sal die gebruiker die geleentheid bied om te kies watter selle gekleur moet word. Ek het Verwerking gekies vir die res van my werk. In die verwerking kan ons 'n matriks maak met 64 knoppies (reghoeke met ingedrukte funksie) en kan 'n spesifieke waarde en kleur aan die begin toeken (laat dit die wit kleur met waarde 0 wees). As die knoppie gedruk word, verander ons die kleur van die knoppie na swart en stel die waarde op 1. As die gebruiker weer dieselfde knoppie druk, sal die waarde daarvan weer verander na 0 en die kleur weer na wit. Dit sal die gebruiker help om die kode weer en weer maklik te verander en kan maklik wysigings aanbring sonder om die hele matriks weer uit te vee. As u op die "Print" -knoppie klik, maak ons 'n string wat dieselfde is as die hierbo getoon vir die demo. Dan word die string na die spesifieke seriële poort gestuur.

U kan die verwerkingskode hieronder aflaai. Dit is my eerste kode in verwerking. Voorstelle vir die verbeterde manier van kodering word hoog op prys gestel.

U kan sien hoe die GUI daar uitsien en hoe die karakter met die stelsel geskep word. Dit sal skaars sekondes neem om dieselfde karakter op die matriks te skep.

U kan die kode en beelde van hierdie projek aflaai van my GitHub Repository.

Aanbeveel: