Tartalomjegyzék:

Egyéni karaktergenerátor (Adafruit HT16k33 Matrix): 3 lépés
Egyéni karaktergenerátor (Adafruit HT16k33 Matrix): 3 lépés

Videó: Egyéni karaktergenerátor (Adafruit HT16k33 Matrix): 3 lépés

Videó: Egyéni karaktergenerátor (Adafruit HT16k33 Matrix): 3 lépés
Videó: Управление 16 серводвигателями с использованием модуля PCA9685 и Arduino V2 2024, November
Anonim
Egyéni karaktergenerátor (Adafruit HT16k33 Matrix)
Egyéni karaktergenerátor (Adafruit HT16k33 Matrix)

Különleges karakterek nyomtatása LCD -ken és LED -es mátrixokon nagyszerű móka. A speciális karakterek vagy egyéni karakterek nyomtatásának eljárása minden sorhoz és oszlophoz egy bináris értékeket tartalmazó tömb létrehozása. Lehet, hogy mozgalmas lehet megtalálni a megfelelő kódot bármely egyedi karakterhez, ezért ez a projekt automatizálja és generálja a kódot egy 8x8 -as led mátrixhoz, és kinyomtatja az egyéni karaktert az Adafruit HT16k33 8x8 Bicolor Matrix -on is.

Az Adafruit HT16k33, egy 1,2 hüvelykes 8x8 -as kétszínű LED -mátrix I2C kommunikációs protokollon keresztül kommunikál az Arduino -val

Az Adafruit szerint: "A LED hátizsák ezen változata az 1,2" -os 8x8 -as mátrixokhoz készült. Méretük mindössze 1,2 "x1,2", így kár hatalmas chipek tömbjét használni az ellenőrzéshez. Ez a hátizsák megoldja a 16 tű vagy egy csomó chip használatának bosszúságát azzal, hogy egy I2C állandóáramú mátrixvezérlő szépen helyezkedik el a NYÁK hátoldalán. A vezérlő chip mindenről gondoskodik, mind a 64 LED -et a háttérben rajzolja meg. Mindössze annyit kell tennie, hogy adatokat írjon rá a 2-tűs I2C interfész segítségével. Két címválasztó csap van, így a 8 cím közül választhat egyet, hogy akár 8-at is vezérelhessen egyetlen 2-tűs I2C buszon (valamint bármely más tetszőleges I2C chipet vagy érzékelőt). Az illesztőprogram chipje 1/16 lépésben „tompíthatja” a teljes kijelzőt az 1/16 fényerőről a teljes fényerőre. Nem tudja tompítani az egyes LED -eket, csak a teljes kijelzőt egyszerre."

Ebben az utasításban elmagyarázom, hogyan lehet valós időben lekérni bármely egyedi karakter kódját, és kinyomtatni azt a Led Matrix -on.

1. lépés: Alkatrészek

Ez az utasítás az Adafruit HT16k33 Matrix alapprojektje. Szükséged van:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (bármelyik változat, kivéve az Uno -t).
  3. Kenyeretábla
  4. Tápegység

2. lépés: Vázlatos

Vázlatos
Vázlatos
Vázlatos
Vázlatos

Az Adafruit HT16k33 Led mátrix bekötése nagyon egyszerű, mivel össze kell kapcsolnunk az órát és az adatcsapot, mint általában az I2C eszközöknél. A kapcsolatok a következők lesznek:

  1. SCL (Clock pin of Matrix) csatlakozik az A5 -höz (Arduino Uno órajelcsapja. Az Arduino egyéb változataihoz lásd az adatlapot)
  2. SDA (Data pin of Matrix) csatlakozik az A4 -hez. (Az Arduino egyéb változataihoz lásd az adatlapot)
  3. VCC 5V -ra csatlakoztatva.
  4. A GND 0V -ra van csatlakoztatva.

Az ábrán látható sémával is megismerkedhet.

3. lépés: Kód

Kód
Kód
Kód
Kód

Arduino kód

Először is minden szükséges könyvtárat belefoglalunk.

  1. Wire.h:- I2C kommunikációhoz
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Mindezek a könyvtárak magukban az Arduino IDE -ben érhetők el. Csak telepítenie kell őket a Könyvtárkezelőből. Vázlat >> Könyvtár bevonása >> Könyvtárak kezelése

Beállítási funkció ()

Aláíratlan egész 8 bites tömb beállítása strore8 bináris értékekre 8 sorban, egyenként 8 bitből (8 oszlop). Állítsa be az I2C kommunikáció címét.

Loop funkció ()

Mivel ki kell nyomtatnunk a karaktert, szükségünk van a karakter kódjára valós időben. A legkényelmesebb módszer a kód soros elküldése, és Arduino beolvassa a soros adatokat, és ennek megfelelően nyomtatja ki a karaktert. Egy tömb sorozatban történő küldése mozgalmas feladat lehet, ezért küldhetünk egy karakterláncot mind a 8 kóddal (egyenként 8 bit) vesszővel elválasztva.

Soros karakterlánc olvasása:

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

A szöveg elolvasása után dekódolni kell ezt a karakterláncot, és vissza kell kapnunk a bináris értékeket. Mint tudjuk, a bemeneti karakterlánc formátuma mindig ugyanaz lesz. Kódolhatjuk, hogy megkeressük az alláncokat, és a karakterláncokat tizedes egyenértékűvé alakítsuk át. Ezután átadjuk a generált tizedes tömböt (uint8_t) a karakter mátrixra történő nyomtatásához.

8 bites karakterlánc tizedesre konvertálása:

int val (String str) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v+power (2, (7-i)); }} return v; }

A tizedes egyenérték kiértékeléséhez a teljesítményfüggvény (pow ()) használatával kettős típusú értékekkel kell foglalkoznia, és így a saját teljesítményfüggvényünket a következőképpen írhatjuk fel:

int hatalom (int bázis, int kitevő) {int c = 1; for (int i = 0; i {c = c*base;} return c;}

Most végre megírjuk a kódot, amellyel kinyomtathatjuk a karaktert a 8 tizedes értékből álló (minden sorban egy) tömb használatával.

void print_emoji (uint8_t emoji , karakterlánc színe) {matrix.clear (); if (szín == "piros") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); késleltetés (500); }

Könnyen megértheti ezt a kódot, mivel először töröljük a mátrixot, majd megjelenítjük a karaktert az emoji tömb használatával a matrix.drawBitmap () függvény segítségével. Ne felejtse el a "matrix.writeDisplay ()" írást minden formázás után, mivel ez a funkció csak a mátrixon végzett összes formázást jeleníti meg.

Most elküldheti a karakterláncot az összes kódértékkel, és Arduino kinyomtatja a karaktert a mátrixon. Letöltheti az Arduino kódot alulról. Kísérleti célból írhat

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

ezt a karakterláncot a Soros monitorban, és láthatja a karaktert a mátrixon.

Most automatikusan el kell küldenünk a soros adatokat egy szoftverből, amikor megnyomjuk a "Nyomtatás" gombot. Ennek automatizálására 8x8 -as demó mátrixot készítünk, és lehetőséget biztosítunk a felhasználó számára, hogy melyik cellákat színezze, majd a szoftver automatikusan generálja a kódot, és sorban elküldi az adatokat az Arduino -nak karakterlánc -formátumban. A további munkámhoz a Feldolgozás lehetőséget választottam. A feldolgozás során mátrixot készíthetünk 64 gomb segítségével (téglalapok lenyomott funkcióval), és hozzárendelhetünk egy adott értéket és színt az elején (Legyen ez a fehér szín 0 értékkel). Most, amikor megnyomja a gombot, a gomb színét feketére váltjuk, és az értéket 1 -re állítjuk. Ha a felhasználó ismét megnyomja ugyanazt a gombot, értéke ismét 0 -ra változik, és a színe ismét fehér lesz. Ez segíteni fogja a felhasználót abban, hogy könnyen újra és újra megváltoztassa a kódot, és könnyen módosíthasson anélkül, hogy a teljes mátrixot újra törölné. A "Nyomtatás" gombra kattintva a fenti bemutatáshoz hasonló karakterláncot készítünk. Ezután a karakterlánc elküldésre kerül az adott soros portra.

A feldolgozási kódot letöltheti alulról. Ez az első kódom a feldolgozás során. A továbbfejlesztett kódolási módra vonatkozó javaslatokat nagyra értékelik.

Láthatja, hogyan néz ki a GUI, és hogyan jön létre a karakter a rendszer segítségével. Alig néhány másodpercbe telik, hogy ugyanazt a karaktert létrehozza a mátrixon.

A projekt kódját és képeit letöltheti a GitHub tárházból.

Ajánlott: