Obsah:
Video: Vlastní generátor znaků (matice Adafruit HT16k33): 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Tisk speciálních znaků na LCD a LED matice je skvělá zábava. Postup tisku speciálních znaků nebo vlastních znaků je vygenerování pole s binárními hodnotami pro každý řádek a sloupec. Nalezení správného kódu pro jakýkoli vlastní znak může být hektické, a proto tento projekt automatizuje a generuje kód pro matici LED 8x8 a také vytiskne vlastní znak na Bicolor Matrix Adafruit HT16k33 8x8.
Adafruit HT16k33, 1,2 '' 8x8 Bicolor Led Matrix, komunikuje s Arduino prostřednictvím komunikačního protokolu I2C
Podle společnosti Adafruit „Tato verze batohu LED je navržena pro matice 1,2“8x8. Měří pouze 1,2 "x1,2", takže je škoda použít k ovládání obrovské množství čipů. Tento batoh řeší nepříjemnost používání 16 pinů nebo hromady čipů tím, že na zadní straně desky plošných spojů je úhledně umístěn maticový řadič I2C s konstantním proudem. O vše se stará čip řadiče, který na pozadí vykreslí všech 64 LED diod. Stačí do něj zapsat data pomocí 2kolíkového rozhraní I2C. K dispozici jsou dva piny pro výběr adresy, takže můžete vybrat jednu z 8 adres pro ovládání až 8 z nich na jedné 2pinové sběrnici I2C (stejně jako jakékoli jiné I2C čipy nebo senzory, které se vám líbí). Čip ovladače může „ztlumit“celý displej od 1/16 jasu až po plný jas v 1/16 krocích. Nemůže ztlumit jednotlivé LED diody, pouze celý displej najednou. “
V tomto pokynu vám vysvětlím, jak získat kód pro jakýkoli vlastní znak v reálném čase a vytisknout tento znak na Led Matrix.
Krok 1: Součásti
Tento instruktáž je základní projekt na Adafruit HT16k33 Matrix. Potřebuješ:
- Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 dvoubarevná LED matice.
- Arduino (upřednostňuje se jakákoli varianta kromě Uno).
- Prkénko
- Zdroj napájení
Krok 2: Schéma
Zapojení matice LED Adafruit HT16k33 LED je velmi snadné, protože potřebujeme připojit hodinový a datový pin, jako obvykle u zařízení I2C. Připojení bude vypadat takto:
- SCL (Clock pin of Matrix) připojený k A5 (Clock pin of Arduino Uno. Další varianty Arduina najdete v datasheetu)
- SDA (datový kolík matice) připojen k formátu A4. (Další varianty Arduina najdete v datasheetu)
- VCC připojeno k 5V.
- GND připojeno k 0V.
Můžete si také prohlédnout schéma znázorněné na obrázku.
Krok 3: Kód
Arduino kód
Nejprve zahrneme všechny požadované knihovny.
- Wire.h:- Pro komunikaci I2C
- Batoh Adafruit_LedBackpack
- Adafruit_GFX
Všechny tyto knihovny jsou k dispozici v samotném Arduino IDE. Stačí je nainstalovat ze Správce knihoven. Skica >> Zahrnout knihovnu >> Spravovat knihovny
Funkce nastavení ()
Nastavení 8bitového pole bez znaménka na strore8 binárních hodnot pro 8 řádků po 8 bitů (8 sloupců). Nastavte adresu pro komunikaci I2C.
Funkce smyčky ()
Protože potřebujeme vytisknout znak, potřebujeme kód pro znak v reálném čase. Nejpohodlnější metodou je odeslat kód sériově a Arduino přečte sériová data a podle toho vytiskne znak. Sériové odesílání pole může být hektická práce, proto můžeme poslat řetězec se všemi 8 kódy (každý po 8 bitech) oddělenými čárkami.
Čtení sériového řetězce:
if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (data); }
Po přečtení textu musíme tento řetězec dekódovat a získat zpět binární hodnoty. Jak víme, formát vstupního řetězce bude vždy stejný. Můžeme jej kódovat, abychom našli podřetězce a převedli řetězce na jejich desítkové ekvivalentní hodnoty. Poté předáme vygenerované desetinné pole (uint8_t), aby se znak vytiskl na matici.
Převod řetězce 8 bitů na desítkové:
int val (String str) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v+power (2, (7-i)); }} návrat v; }
Pro vyhodnocení desetinného ekvivalentu pomocí výkonové funkce (pow ()) se musíte vypořádat s hodnotami dvojitého typu, a proto můžeme napsat naši vlastní mocninnou funkci jako:
int power (int base, int exponent) {int c = 1; for (int i = 0; i {c = c*base;} return c;}
Nyní konečně napíšeme kód pro tisk znaku pomocí vygenerovaného pole 8 desetinných hodnot (pro každý řádek jedna).
neplatné print_emoji (uint8_t emoji , barva řetězce) {matrix.clear (); if (color == "red") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); zpoždění (500); }
Tento kód snadno pochopíte, protože nejprve čistíme matici a poté zobrazujeme znak pomocí pole emoji pomocí funkce matrix.drawBitmap (). Po veškerém formátování nezapomeňte napsat „matrix.writeDisplay ()“, protože tato funkce zobrazí pouze všechna dosud provedená formátování na matici.
Nyní můžete řetězec odeslat se všemi hodnotami kódu a Arduino vytiskne znak na matici. Kód Arduino si můžete stáhnout níže. Pro experimentální účely můžete psát
B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100
tento řetězec v Serial Monitor a vidí znak na matici.
Nyní musíme automaticky odeslat sériová data ze softwaru, když stiskneme tlačítko „Tisk“. Abychom to zautomatizovali, vytvoříme demo matici 8x8 a poskytneme uživateli možnost vybrat si, které buňky by měly být vybarveny, a poté software automaticky vygeneruje kód a odešle data sériově do Arduina ve formátu řetězců. Pro zbytek své práce jsem si vybral zpracování. Při zpracování můžeme vytvořit matici pomocí 64 tlačítek (obdélníky se stisknutou funkcí) a přiřadit konkrétní hodnotu a barvu na začátku (nechť je to bílá barva s hodnotou 0). Nyní, kdykoli je tlačítko stisknuto, převedeme barvu tlačítka na černou a nastavíme hodnotu na 1. Pokud uživatel znovu stiskne stejné tlačítko, jeho hodnota se opět změní na 0 a barva se vrátí na bílou. To pomůže uživateli snadno znovu a znovu měnit kód a může snadno provádět změny, aniž by znovu vymazal celou matici. Po kliknutí na tlačítko „Tisk“vytvoříme řetězec podobný tomu, který je ukázán výše pro ukázku. Poté bude řetězec odeslán na konkrétní sériový port.
Zpracovávací kód si můžete stáhnout níže. Toto je můj první zpracovávaný kód. Návrhy na vylepšený způsob kódování jsou vysoce ceněny.
Můžete vidět, jak GUI vypadá a jak je postava vytvořena pomocí systému. Vytvoření stejného znaku na matici bude sotva trvat několik sekund.
Kód a obrázky tohoto projektu si můžete stáhnout z mého úložiště GitHub.
Doporučuje:
Matice NeoPixels, hadí hra: 4 kroky
Matice NeoPixels Game Hadí hra: Pamatujete si ještě na hadí hru, kterou jsme v dětství hráli na našem herním boxu nebo mobilu? Dnes se naučíme, jak vytvořit hadí hru s maticí 8*8 NeoPixels. Jako řídicí centrum jsme zvolili Arduino uno a modul Joystick Breakout pro spolupráci
Dvoumístný displej s použitím jedné matice 8x8 LED: 3 kroky
Dvoumístný displej využívající jednu matici 8x8 LED: Zde bych chtěl do svého pokoje zabudovat indikátor teploty a vlhkosti. Pro zobrazení dvouciferných čísel jsem použil jeden 8x8 LED Matrix a myslím si, že část projektu se stala užitečnější. Finál postavený jsem zabalil pomocí lepenkové krabice, bolest
Držák znaků K`nex Infinity: 4 kroky
Držák znaků K`nex Infinity: Toto je držák znaků K`nex Infinity. Je kompaktní a je velmi praktický. Doporučuji to lidem, kteří mají všechny své nekonečné postavy nacpané v šuplíku a ničí se
Jak vytvořit 2D znak pomocí ovladače znaků v Unreal Engine 4 pomocí Visual Script pro PC: 11 kroků
Jak vytvořit 2d znak pomocí ovladače znaků v Unreal Engine 4 pomocí Visual Script pro PC: Jak vytvořit 2d znak pomocí ovladače znaků v Unreal Engine 4 pomocí vizuálního skriptu pro PC Ahoj, jsem Jordan Steltz. Video hry vyvíjím od svých 15 let. Tento tutoriál vás naučí, jak vytvořit základní postavu pomocí
Vytvořte si vlastní vlastní znaky ve Windows: 4 kroky
Vytvořte si vlastní vlastní znaky ve Windows: V tomto návodu vám ukážu, jak vytvářet vlastní znaky pomocí aplikace integrované do Windows. Jo a tak. Dejte si pozor na obrázky, které jsou vyrobeny v barvě. Mohou být děsivé