Obsah:

Použití LED diody Dot Matrix s Arduinem a posuvným registrem: 5 kroků
Použití LED diody Dot Matrix s Arduinem a posuvným registrem: 5 kroků

Video: Použití LED diody Dot Matrix s Arduinem a posuvným registrem: 5 kroků

Video: Použití LED diody Dot Matrix s Arduinem a posuvným registrem: 5 kroků
Video: Arduino Text Scrolling Display | MAX7219 Dot Matrix 4-in-1 2024, Listopad
Anonim
Použití LED diody Dot Matrix s Arduino a posuvným registrem
Použití LED diody Dot Matrix s Arduino a posuvným registrem
Použití LED diody Dot Matrix s Arduino a posuvným registrem
Použití LED diody Dot Matrix s Arduino a posuvným registrem
Použití LED diody Dot Matrix s Arduino a posuvným registrem
Použití LED diody Dot Matrix s Arduino a posuvným registrem

Jehličková LED dioda Siemens DLO7135 je úžasný kus optoelektroniky. Je účtován jako inteligentní displej 5x7 Dot Matrix (r) s pamětí/dekodérem/ovladačem. Spolu s touto pamětí má 96místný ASCII displej s velkými a malými písmeny, vestavěný generátor znaků a multiplexor, čtyři úrovně intenzity světla a to vše běží na 5V. To je hodně, co se dá žít a za 16 $ za pop by to rozhodně mělo být. Zatímco jsem strávil půl dne ve svém oblíbeném místním obchodě s elektronikou, našel jsem plný koš za 1,50 $ za kus. S několika jsem odešel z obchodu. Tento instruktážní program vám ukáže, jak se připojit k těmto jehličkovým LED diodám a zobrazovat znaky pomocí Arduina na bázi AVR. Pokud jste si přečetli některý z mých předchozích průvodců, možná vám dojde, že jsem často pro nejšetrnější řešení a nemýlíte se, i když čas od času cíl nesplním.. Proto také udělám další krok v tomto návodu a ukážu vám, jak můžete snížit počet I/O portů potřebných k pohonu těchto velkých, honkinových jehličkových LED diod.

Krok 1: Získejte zboží…

Získejte zboží…
Získejte zboží…

Pro tento krátký malý projekt budete potřebovat:

  • mikrokontrolér na bázi AVR, jako je Arduino nebo cokoli podobného. Tyto pokyny by pravděpodobně mohly být přizpůsobeny vašemu vybranému MCU.
  • bodová matice LED DLO7135 nebo jiná ve stejné rodině
  • 8bitový posuvný registr jako 74LS164, 74C299 nebo 74HC594
  • prkénko
  • propojovací drát, nůžky na drát atd.

Páječka není potřeba, i když ji použiji později; můžete se bez toho obejít.

Krok 2: Přímé připojení k LED displeji

Přímé připojení k LED displeji
Přímé připojení k LED displeji
Přímé připojení k LED displeji
Přímé připojení k LED displeji
Přímé připojení k LED displeji
Přímé připojení k LED displeji

Rozložte si malý seznam dílů a chyťte LED diodu. Umístěte jej na prkénko trochu vystředěné, obkročmo nad drážkou ve střední čáře. První část připojení probíhá vše na levé straně LED. Kolík č. 1 je umístěn vlevo nahoře, jak ukazuje trojúhelník/šipka. Když čtete nebo připojujete LED, vložil jsem funkce pinů na obrázek pro vaši referenci.

Levá strana

Pozitivní a negativní Počínaje vlevo nahoře připojte Vcc na 5V. Možná je dobrý nápad nechat desku napájet, dokud nedokončíte celou levou stranu; LED dioda může být jasná, pokud se snažíte vidět malé otvory pro strkání do vodičů. Připojte levý dolní GND k zemi. Lamp Test, Chip Enable and Write 2. a 3. shora vlevo jsou Lamp Test a Chip Enable. Oba jsou negativní logikou, což znamená, že jsou povoleny, když jsou na logické 0 místo 1. Můj obrázek níže by měl mít nad sebou pruhy, ale u žádného z nich jsem to neoznačil. Je -li aktivován kolík LT, rozsvítí každý bod v matici bodů při 1/7 jasu. Je to spíše test pixelů, ale zajímavou věcí na pinu LT je, že nepřepíše žádný znak, který je v paměti, takže pokud máte několik z nich navlečených dohromady (mají pozorovací vzdálenost 20 stop), strobujete LT může vypadat jako kurzor. Chcete -li zajistit, aby byl deaktivován, připojte jej k 5 V. Piny CE a WR jsou také negativní logikou a je nutné je povolit, aby bylo možné do tohoto chytrého zařízení zapisovat. Tyto piny můžete mikromanažovat pomocí náhradních I/O portů na vašem mikrokontroléru, ale nebudeme se zde obtěžovat. Stačí je připojit k uzemnění, aby zůstaly aktivní. Úrovně jasu Na řadě LED diod DLO existují čtyři programovatelné úrovně jasu:

  • Prázdný
  • 1/7 jas
  • 1/2 jasu
  • Plný jas

BL1 HIGH a BL0 LOW je 1/2 jasu. Oba HIGH jsou plný jas. Nastavte si to, co se vám líbí. Opět platí, že pokud máte volných I/O portů a je to pro vás dost důležité, můžete to také ovládat pomocí Arduina, což obepíná levou stranu. Pokud na desku přivedete energii, měla by se rozsvítit kontrolka LED. Pokud jste zvědaví, pohrajte si s ovládáním jasu a testem lampy.

Pravá strana

Pravá strana se skládá výhradně z datových portů. Vpravo dole, přesněji pin 8 nebo D0, představuje nejmenší významný bit v 7bitovém znaku. Vpravo nahoře pin 14 nebo D6 představuje nejvýznamnější bit. Díky tomu budete vědět, v jakém pořadí zamíchat vaše bity při zápisu do LED. Až budete mít připojené porty pro vstup dat, najděte na svém Arduinu nebo AVR sedm prázdných digitálních I/O portů a připojte je. Pravděpodobně si budete chtít pamatovat, jaký datový výstupní port na vašem AVR jde do kterého datového vstupního portu na LED. Nyní jste připraveni přenést nějaká data na tuto inteligentní LED. Už se třesete vzrušením? Vím že jsem…

Krok 3: Určení znaku, který se má zobrazit

Určení znaku, který má být zobrazen
Určení znaku, který má být zobrazen

Znaková sada použitá na této CMOS LED je váš run-of-the-mill ASCII počínaje 0x20 (desetinné číslo 32; mezera) a končící 0x7F (desetinné číslo 127; odstranění, i když je na LED zobrazeno jako kurzorová grafika). Takže mít LED displej znak neznamená nic jiného, než tlačit logickou 1 nebo 0 na vaše datové výstupní kolíky, obvykle následované pulsem WR, ale to pro toto cvičení předcházím. Takže jste si zapsali nebo pamatujete si, jaké piny jdou do jakých portů, že? Vybral jsem PD [2..7] a PB0 (digitální piny 2 až 8 v Arduino-speak). Normálně nedoporučuji používat PD [0..1], protože ho věnuji své sériové komunikaci zpět do boxu FreeBSD a Arduino a spol. namapujte tyto piny na jejich komunikační kanál FTDI USB, a přestože „oni“SAY piny 0 a 1 budou fungovat, pokud neinicializujete sériovou komunikaci, nikdy jsem tyto piny nemohl použít jako normální digitální I/O. Ve skutečnosti jsem strávil dva dny pokusem o ladění problému, když jsem se pokusil použít PD0 a PD1 a zjistil jsem, že jsou vždy VYSOKÉ. * pokrčil rameny* Pravděpodobně by bylo dobré mít nějaký externí vstup, například klávesnici, přepínač s kolečkem nebo s kolečkem, nebo dokonce vstup z terminálu (můj ArduinoTerm ještě není připraven na hlavní vysílací čas…). Volba je na tobě. Prozatím budu jen ilustrovat, jak dostat kód, aby se požadovaný znak dostal na LED. K dispozici je zipfile ke stažení včetně zdrojového kódu a Makefile a je zde také krátký film ukazující LED tisk jeho znakové sady. Omlouváme se za mizernou kvalitu videa. Níže uvedený kód vytiskne řetězec „Welcome to my Instructable!“pak cykluje celou znakovou sadu, kterou LED podporuje.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Vítejte v mém Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } pro (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos*& apos);}O výstup portu je postaráno ve funkci Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1 <

Kód a Makefile jsou zahrnuty v níže uvedeném souboru zip.

Krok 4: Zachovejte I/O porty pomocí posuvného registru

Šetřete I/O porty pomocí posuvného registru
Šetřete I/O porty pomocí posuvného registru
Šetřete I/O porty pomocí posuvného registru
Šetřete I/O porty pomocí posuvného registru
Šetřete I/O porty pomocí posuvného registru
Šetřete I/O porty pomocí posuvného registru

Náš mikrokontrolér nyní může odesílat data na LED diodu s maticí, ale používá osm I/O portů. To vylučuje použití ATtiny v 8pólovém DIP balíčku a dokonce is novějším Arduinem s ATmega328p je to spousta I/O portů pro jednu LED. Můžeme to obejít pomocí IC nazývaného posuvný registr. Chvilku na „řazení“rychlostních stupňů … Posuvný registr lze nejlépe pochopit zamyšlením nad dvěma slovy, která tvoří jeho název: „shift“a „register“. Slovo posun označuje, jak se data v registru pohybují. Zde (stejně jako v našich Arduino a mikrokontrolérech obecně) je registr místem, kde jsou uložena data. Dělá to implementací lineárního řetězce digitálních logických obvodů nazývaných „klopné obvody“, který má dva stabilní stavy, které mohou být reprezentovány buď 1 nebo 0. Takže spojením osmi klopných obvodů dohromady máte zařízení, které je schopné pojmout a představující 8bitový bajt. Stejně jako existuje několik typů klopných obvodů a několik variací na téma posuvných registrů (počítadla nahoru/dolů a čítače Johnson), existuje také několik typů posuvných registrů podle toho, jak data je uzamčen do registru a jak jsou tato data vydávána. Na základě toho zvažte následující typy posuvných registrů:

  • Sériový vstup / paralelní výstup (SIPO)
  • Sériový vstup / Sériový výstup (SISO)
  • Parallel In/ Serial Out (PISO)
  • Parallel In / Parallel Out (PIPO)

Dva z nich jsou SIPO a PISO. Registry SIPO odebírají data sériově, to znamená jeden bit za druhým, přesouvajíc dříve vstupní bit na další klopný obvod a odesílají data na všechny vstupy najednou. Díky tomu je pěkný převodník sériového na paralelní. Posuvné registry PISO mají naopak paralelní vstupy, takže všechny bity jsou zadávány najednou, ale jsou vydávány po jednom. A uhodli jste, že to dělá pěkný paralelní k sériovému převaděči. Posuvný registr, který chceme použít ke snížení počtu I/O pinů, by nám umožnil vzít těch 8 IO pinů, které jsme použili dříve, a zmenšit je na jeden, nebo možná jen na pár, vzhledem k tomu, že možná budeme muset kontrolovat, jak zadáváme bity. Posuvný registr, který použijeme, je tedy Serial In / Parallel Out. Zapojte posuvný registr mezi LED a Arduino Pomocí posuvného registru je to snadné. Nejtěžší je jen vizualizace výstupních datových pinů a toho, jak binární číslice skončí v IC, a jak se nakonec zobrazí na LED. Udělejte si chvilku a naplánujte si to. 1. Připojte 5V ke kolíku 14 (vpravo nahoře) a vezměte kolík 7 (dole vlevo) dolů k zemi. Posuvný registr má dva sériové vstupy, ale budeme používat pouze jeden, takže připojte pin dva k 5V3. Nebudeme používat čistý pin (používá se k vynulování všech výstupů), takže ho nechte plovoucí nebo na něj zaútočte na 5V4. Připojte jeden digitální IO port a připojte jeden z posuvných registrů. Toto je pin sériového vstupu. Připojte jeden digitální IO port ke kolíku 8 (vpravo dole). Toto je hodinový kolík. Připojte své datové linky od Q0 do Q6. Používáme pouze 7 bitů, protože znaková sada ASCII používá pouze sedm bitů. Použil jsem PD2 pro výstup mých sériových dat a PD3 pro hodinový signál. Pro datové piny jsem připojil Q0 až D6 na LED a pokračoval tímto způsobem (Q1 až D5, Q2 až D4 atd.). Protože posíláme data sériově, budeme muset prozkoumat binární reprezentaci každého znaku, který chceme poslat, při pohledu na 1 a 0 a na výstupu každého bitu na sériové lince. Zahrnul jsem druhou verzi zdroje dotmatrixled.c spolu s Makefile níže. Prochází cyklem znakové sady a zobrazuje všechny sudé znaky (pokud je divné myslet si, že písmeno může být liché nebo sudé, na okamžik přemýšlejte o binární reprezentaci). Pokuste se přijít na to, jak to nechat procházet zobrazením všech lichých znaků. Můžete dále experimentovat s propojením mezi posuvným registrem, LED diodou s maticí a vaším Arduinem. Mezi LED a registrem je několik ovládacích funkcí, které vám umožňují jemně doladit ovládání, když jsou data zobrazena. Takže … … přešli jsme od používání osmi I/O portů k použití pouze dvou!

Krok 5: Shrnutí

souhrn
souhrn
souhrn
souhrn

V tomto návodu jsem představil LED matici DLO7135 s bodovou maticí a její fungování. Dále jsem diskutoval, jak pomocí posuvného registru snížit počet požadovaných I/O portů z osmi na pouhé dva. Bodovou matici LED DLO7135 lze spojit dohromady a vytvořit tak poutavé a zajímavé markýzy. Doufám, že jste si čtení tohoto návodu užili! Pokud si myslíte, že bych mohl něco vylepšit, nebo návrhy, které byste k tomuto nebo některému z mých textů chtěli poskytnout, rád je slyším! Happy AVR'ing!

Doporučuje: