Obsah:
- Krok 1: Modulace šířky pulsu pro míchání barev
- Krok 2: Mluvení s posuvnými registry a kontrolkami LED
- Krok 3: Schéma
- Krok 4: C ++ zdrojový kód
- Krok 5: Hotový gadget
- Krok 6: Aplikace: Monitor zatížení procesoru pro Linux pomocí Perlu
- Krok 7: Aplikace: Mluvení s jinými moduly pomocí I²C
- Krok 8: Aplikace: „Game Cube“:-)
- Krok 9: Zobrazení obrázků / animací na Matrixu - Quick Hack
- Krok 10: Interaktivní ovládání uložených animací
- Krok 11: Zobrazení živého videa
- Krok 12: Více světla téměř zdarma
Video: 64 Pixel RGB LED displej - další klon Arduino: 12 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:25
Tento displej je založen na matici LED 8x8 RGB LED. Pro účely testování byl připojen ke standardní desce Arduino (Diecimila) pomocí 4 posuvných registrů. Poté, co jsem to dostal do práce, jsem to permatizoval na fabbed PCB. Posuvné registry jsou široké 8 bitů a lze je snadno propojit s protokolem SPI. K míchání barev se používá modulace šířky pulsu, o tom později. Část paměti MCU RAM je použita jako framebuffer pro uložení obrazu. Video RAM je na pozadí analyzováno rutinou přerušení, takže uživatel může dělat další užitečné věci, jako je rozhovor s počítačem, tlačítka pro čtení a potenciometry. Více informací o „Arduino“: www.arduino.cc
Krok 1: Modulace šířky pulsu pro míchání barev
Modulace šířky pulzu - CO? Modulace šířky impulzu v podstatě zapíná a vypíná napájení přiváděné do elektrického zařízení poměrně rychle. Použitelný výkon vyplývá z matematického průměru funkce čtvercových vln převzaté v intervalu jedné periody. Čím déle funkce zůstane v poloze ON, tím více energie získáte. PWM má stejný účinek na jas LED jako stmívač na střídavých světlech. Úkolem dopředu je individuálně ovládat jas 64 RGB LED (= 192 jednotlivých LED!) Levným a snadným způsobem, aby bylo možné získat celý spektrum barev. Přednostně by nemělo docházet k blikání nebo jiným rušivým efektům. Nelineární vnímání jasu vykazované lidským okem zde nebude bráno v úvahu (např. Rozdíl mezi 10% a 20% jasu se zdá „větší“než mezi 90% a 100%). Obrázek (1) ilustruje pracovní princip algoritmus PWM. Řekněme, že kódu je dána hodnota 7 pro jas LED (0, 0). Navíc ví, že jas je maximálně N kroků. Kód spouští N smyček pro všechny možné úrovně jasu a všechny potřebné smyčky pro obsluhu každé LED ve všech řadách. V případě, že je počitadlo smyčky x ve smyčce jasu menší než 7, rozsvítí se LED. Pokud je větší než 7, kontrolka LED zhasne. U všech LED diod, úrovní jasu a základních barev (RGB) to lze provést velmi rychle, každou LED lze individuálně upravit tak, aby zobrazovala požadovanou barvu. Měření pomocí osciloskopu ukazují, že obnovovací kód displeje trvá přibližně 50% času CPU. Zbytek lze použít k sériové komunikaci s PC, čtení tlačítek, rozhovoru se čtečkou RFID, odeslání I2Data C do jiných modulů…
Krok 2: Mluvení s posuvnými registry a kontrolkami LED
Posuvný registr je zařízení, které umožňuje načítání dat sériově a paralelně. S příslušným čipem je možná i opačná operace. Na webu arduino je dobrý návod na posuvné registry. LED diody jsou poháněny 8bitovými posuvnými registry typu 74HC595. Každý port může dodávat nebo odebírat asi 25mA proudu. Celkový proud na jeden čip potopený nebo získaný by neměl překročit 70 mA. Tyto čipy jsou extrémně levné, takže za kus neplatíte více než asi 40 centů. Protože LED diody mají charakteristiku exponenciálního proudu / napětí, musí existovat odpory omezující proud. Pomocí Ohmova zákona: R = (V - Vf) / IR = omezující odpor, V = 5V, Vf = dopředné napětí LED, I = požadovaný proud Červené LED diody mají dopředné napětí asi 1,8 V, modrý a zelený rozsah od 2,5 V do 3,5 V. K určení toho použijte jednoduchý multimetr. Pro správnou reprodukci barev je třeba vzít v úvahu několik věcí: spektrální citlivost lidského oka (červená/modrá: špatná, zelená: dobrá), účinnost LED při určité vlnové délce a proudu. V praxi si jednoduše vezmete 3 potenciometry a nastavujete je, dokud LED dioda neukáže správné bílé světlo. Samozřejmě nesmí být překročen maximální proud LED. Zde je také důležité, že posuvný registr pohánějící řádky musí dodávat proud 3x8 LED, takže raději netlačte proud příliš vysoko. Byl jsem úspěšný s omezujícími odpory 270 Ohmů pro všechny LED diody, ale to samozřejmě závisí na značce LED matice. Posuvné registry jsou propojeny se sériovým SPI. SPI = Serial Peripheral Interface (Image (1)). Na rozdíl od sériových portů na PC (asynchronní, bez hodinového signálu) SPI potřebuje hodinovou linku (SRCLK). Pak je tu signální linka, která zařízení říká, kdy jsou data platná (výběr čipu / západka / RCLK). Nakonec existují dvě datové linky, jedna se nazývá MOSI (master out slave in), druhá se nazývá MISO (master in slave out). SPI se používá k propojení integrovaných obvodů, stejně jako já2C. Tento projekt potřebuje MOSI, SRCLK a RCLK. Kromě toho se používá také linka pro povolení (G). Cyklus SPI se spustí zatažením čáry RCLK do polohy LOW (obrázek (2)). MCU odesílá svá data na linku MOSI. Jeho logický stav je vzorkován posuvným registrem na stoupající hraně čáry SRCLK. Cyklus je ukončen zatažením linie RCLK zpět na HIGH. Nyní jsou data k dispozici na výstupech.
Krok 3: Schéma
Obrázek (1) ukazuje, jak jsou posuvné registry zapojeny. Jsou řetězově propojeny, takže data lze přesouvat do tohoto řetězce a také přes něj. Přidání dalších posuvných registrů je proto snadné.
Obrázek (2) ukazuje zbytek schématu s MCU, konektory, křemenem … Přiložený soubor PDF obsahuje celá díla, nejlepší pro tisk.
Krok 4: C ++ zdrojový kód
V C/C ++ obvykle člověk musí před kódováním funkce prototypovat.#Include int main (void); void do_something (void); int main (void) {do_something ();} void do_something (void) {/ * comment */ } Arduino IDE tento krok nevyžaduje, protože prototypy funkcí jsou generovány automaticky. Prototypy funkcí se proto nezobrazí v zde uvedeném kódu. Image (1): setup () functionImage (2): spi_transfer () function using hardware SPI of the ATmega168 chip (runs faster) Image (3): framebuffer code using přerušení přetečení timer1. Kusy kódu, které mají pro začátečníky mírně kryptický vzhled, např while (! (SPSR & (1 << SPIF))) {} přímo použít registry MCU. Tento příklad slovy: „zatímco SPIF bit v registru SPSR není nastaven, nedělejte nic“. Chci jen zdůraznit, že u standardních projektů opravdu není nutné zabývat se těmito věcmi tak úzce souvisejícími s hardwarem. Začátečníci by se toho neměli děsit.
Krok 5: Hotový gadget
Poté, co jsem vyřešil všechny problémy a spustil kód, stačilo vytvořit rozvržení desky plošných spojů a odeslat jej do fabrického domu. Vypadá to mnohem čistěji:-) Obrázek (1): plně osazená řídicí deska Obrázek (2): přední strana holého PCB Obrázek (2): zadní strana Existují konektory vylamující PORTC a PORTD čipu ATmega168/328 a 5V/GND. Tyto porty obsahují sériové linky RX, TX, I2C linky, digitální I/O linky a 7 ADC linek. Toto je určeno ke stohování štítů na zadní stranu desky. Rozteč je vhodná pro použití perfboardu (0,1 palce). Zavaděč lze flashovat pomocí hlavičky ICSP (funguje s USBtinyISP od adafruit). Jakmile to bude hotové, použijte standardní sériový adaptér FTDI USB/TTL nebo podobný. Také jsem přidal propojku pro automatické resetování a deaktivaci. Také jsem připravil malý skript Perl (viz můj blog), který umožňuje automatické resetování pomocí kabelů FTDI, které obvykle nefungují po vybalení (řada RTS vs. DTR). Funguje to na Linuxu, možná na MAC. Na mém blogu jsou k dispozici tištěné obvody a několik DIY KITů. Je vyžadováno pájení SMD! Pokyny k sestavení a zdroje pro matice LED najdete v souborech PDF.
Krok 6: Aplikace: Monitor zatížení procesoru pro Linux pomocí Perlu
Toto je velmi základní monitor zátěže s historií. Je založen na skriptu Perl, který shromažďuje „průměr zatížení“systému každých 1 s pomocí iostat. Data jsou uložena v poli, které je při každé aktualizaci posunuto. Na začátek seznamu se přidají nová data, nejstarší záznam se vytlačí. Podrobnější informace a soubory ke stažení (kód …) jsou k dispozici na mém blogu.
Krok 7: Aplikace: Mluvení s jinými moduly pomocí I²C
Toto je jen důkaz principu a zdaleka ne nejjednodušší řešení pro tuto práci2C umožňuje přímé adresování až 127 desek "slave". Zde je deska na pravé straně ve videu „master“(která iniciuje všechny přenosy), levá deska je slave (čeká na data). Já2C potřebuje 2 signální vedení a obvyklé napájecí vedení (+, -, SDA, SCL). Jelikož se jedná o sběrnici, jsou k ní připojena všechna zařízení paralelně.
Krok 8: Aplikace: „Game Cube“:-)
Jen podivná myšlenka. Tato se také hodí do dřevěného krytu zobrazeného na úvodní stránce. Na zadní straně má 5 tlačítek, která by mohla být použita pro hraní jednoduché hry.
Krok 9: Zobrazení obrázků / animací na Matrixu - Quick Hack
K dispozici je tedy pouze 8x8 pixelů a několik barev. Nejprve použijte něco jako Gimp, abyste zmenšili svůj oblíbený obrázek přesně na 8x8 pixelů a uložili jej jako surový formát „.ppm“(nikoli ASCII). PPM se snadno čte a zpracovává ve skriptu Perl. Použití ImageMagick a nástroje „převést“na příkazovém řádku nebude fungovat správně. Načtěte nový arduino kód a poté pomocí skriptu Perl nahrajte do ovladače. Blikání je pouze nesoulad mezi obnovou LED a obnovovací frekvencí mého fotoaparátu. Po trochu aktualizaci kódu běží docela zippy. Všechny obrázky jsou přenášeny živě po sérii, jak je vidíte. Delší animace lze ukládat do externí paměti EEPROM, jako se to děje v různých tabulích mluvených pov.
Krok 10: Interaktivní ovládání uložených animací
Proč nechat mikrokontrolér mít veškerou zábavu? Kult Arduino je o fyzickém počítání a interakci, takže stačí přidat potenciometr a převzít kontrolu! Použití jednoho z 8 vstupů analogového na digitální převodník to velmi zjednodušuje.
Krok 11: Zobrazení živého videa
Pomocí skriptu Perl a několika modulů je docela snadné zobrazovat kvazi živé video na systémech X11. Byl kódován na linuxu a může fungovat i na MAC. Funguje to takto:- získejte pozici kurzoru myši- zachyťte pole pixelu NxN se středem na kurzoru- zmenšete obrázek na 8x8 pixelů- odešlete jej na LED desku- opakovat
Krok 12: Více světla téměř zdarma
Pouhými dvěma kroky lze jas docela zvýšit. Vyměňte odpory 270Ω za 169Ω a zapojte další posuvný registr 74HC595 na IC5.
Doporučuje:
Používejte jeden displej Velký a 4 Cifre 8886 displej Con Wemos ESP8266 Arduino NodeMCU: 6 kroků
Používejte jeden velký displej se 4 Cifre 8886 displejem s ESP8266 Arduino NodeMCU: Vybírejte ze všech semiplic, abyste získali více než 8886 displejů, zobrazte více než jednu skladbu, D1 - potřebujete více Arduino nebo NodeMCU o kvalitní mikrokontrolér, který můžete použít pro každý další
TTGO (barevný) displej s mikropythonem (TTGO T-displej): 6 kroků
TTGO (barevný) displej s mikropythonem (TTGO T-displej): TTGO T-Display je deska založená na ESP32, která obsahuje 1,14 palcový barevný displej. Desku je možné zakoupit za cenu nižší než 7 $ (včetně poštovného, cena viditelná v Banggoodu). To je neuvěřitelná cena za ESP32 včetně displeje
LCD displej I2C / IIC - Použijte SPI LCD na I2C LCD displej pomocí modulu SPI až IIC s Arduino: 5 kroků
LCD displej I2C / IIC | Použijte SPI LCD na I2C LCD displej pomocí modulu SPI až IIC s Arduino: Ahoj lidi, protože normální SPI LCD 1602 má příliš mnoho vodičů na připojení, takže je velmi obtížné propojit jej s arduino, ale na trhu je k dispozici jeden modul, který může převést SPI displej na IIC displej, takže pak potřebujete připojit pouze 4 vodiče
Vytvořte masivní 4096 LED displej pro Retro Pixel Art: 5 kroků (s obrázky)
Vytvořte masivní 4096 LED displej pro Retro Pixel Art: ***** Aktualizováno v březnu 2019 ****** Existuje několik způsobů, jak můžete v tomto projektu pokračovat, stavět vše od nuly nebo využít verzi stavebnice. V tomto Instructable se budu zabývat oběma metodami. Tento návod k instalaci pokrývá 64x64 nebo 4096 RGB LED instalační
PIXO Pixel - LED displej IoT 16x16: 17 kroků (s obrázky)
PIXO Pixel - LED displej IoT 16x16: Existuje již řada RGB displejů, ale většina z nich je buď obtížně interagovatelná, příliš velká, vyžaduje spoustu kabelů, nebo je proces náročný na mikrořadič, který používáte. použitím. Když jsem si vzpomněl, že existuje další Make/100