Sisällysluettelo:

5x4 LED -näyttömatriisi käyttämällä perusleimaa 2 (bs2) ja Charlieplexing: 7 vaihetta
5x4 LED -näyttömatriisi käyttämällä perusleimaa 2 (bs2) ja Charlieplexing: 7 vaihetta

Video: 5x4 LED -näyttömatriisi käyttämällä perusleimaa 2 (bs2) ja Charlieplexing: 7 vaihetta

Video: 5x4 LED -näyttömatriisi käyttämällä perusleimaa 2 (bs2) ja Charlieplexing: 7 vaihetta
Video: 5x4 Charlieplexed LED grid, powered by ATTiny85 2024, Heinäkuu
Anonim
5x4 LED -näyttömatriisi käyttäen perusleimaa 2 (bs2) ja Charlieplexing
5x4 LED -näyttömatriisi käyttäen perusleimaa 2 (bs2) ja Charlieplexing

Onko Basic Stamp 2 ja joitakin ylimääräisiä LEDejä paikallaan? Miksi et leiki charlieplexing -konseptilla ja luo tuloste vain 5 nastalla.

Tässä ohjeessa käytän BS2e: tä, mutta kaikkien BS2 -perheen jäsenten pitäisi työskennellä.

Vaihe 1: Charlieplexing: mitä, miksi ja miten

Mennään miksi syrjään tieltä ensin. --- Todiste konseptista: Opi kuinka charlieplexing toimii ja opi jotain BS2: sta. Tästä voi olla minulle hyötyä myöhemmin nopeampien 8-nastaisten sirujen käyttämisessä (vain 5 niistä on i/o).--Hyödyllinen syy: Pohjimmiltaan niitä ei ole. BS2 on aivan liian hidas näytettäväksi ilman havaittavaa välkkymistä. Olen oppinut charlieplexingistä osoitteesta www.instructables.com ja sinäkin voit: Charlieplexing LEDs-TheoryHow ajaa paljon LED-valoja muutamasta mikro-ohjaimen nastasta. Myös wikipediassa: CharlieplexingMiten voin ajaa 20 lediä 5 i/o-nastalla? --- Lue kolme linkkiä kohdasta "Mikä on charlieplexing?". Se selittää sen paremmin kuin koskaan. Charlieplexing eroaa perinteisestä multipleksoinnista, joka vaatii yhden i/o -nastan kullekin riville ja jokaiselle sarakkeelle (mikä olisi yhteensä 9 i/o -nastaa 5/4 -näytölle).

Vaihe 2: Laitteisto ja kaavio

Laitteisto ja kaavio
Laitteisto ja kaavio

Materiaaliluettelo: 1x - Basic Stamp 220x - samantyyppiset valodiodit (LEDit) (väri ja jännitehäviö) 5x - vastukset (katso alla olevat vastuksen arvot) -9vVirtalähde riippuen BS2 -versiosta (lue käyttöohje) Näet LED -ruudukon vasemmalla puolella, tämä on suunta, johon BS2 -koodi on kirjoitettu. Huomaa, että jokaisella LED -parilla on anodi kytketty toisen katodiin. Ne kytketään sitten yhteen viidestä i/o -nastasta. Tarkista LEDien tekniset tiedot tai käytä digitaalisen yleismittarin LED -asetusta löytääksesi LED -valojen jännitehäviön. nykyisestä. LED -valoni ovat 1,6 V: n pudotuksella ja toimivat 20 mA: n jännitteellä. 5 V - 1,6 V /.02 amps = 155 ohmia BS2: n suojaamiseksi sinun on käytettävä seuraavaa korkeampaa vastusarvoa siitä, mitä saat laskennalla, tässä tapauksessa uskon, että se olisi 180 ohmia. Käytin 220ohmia, koska kehityskortillani on vastusarvo, joka on rakennettu siihen jokaiselle i/o -nastalle. HUOMAUTUS: Uskon, että koska jokaisessa tapissa on vastus, tämä kaksinkertaistaa tehokkaasti jokaisen ledin vastuksen, koska yksi nasta on V+ ja toinen on Gnd. Jos näin on, sinun on vähennettävä vastuksen arvot puoleen. Liian suuren vastusarvon haittavaikutus on himmeämpi LED. Voiko joku vahvistaa tämän ja jättää minulle PM: n tai kommentin, jotta voin päivittää nämä tiedot? Ohjelmointi: Olen käyttänyt kehityskorttia, jossa on DB9 -liitin, sirun ohjelmoimiseksi suoraan levylle. Käytän myös tätä sirua juottomattomalla leipälevylläni ja olen sisällyttänyt In Circuit Serial Programming (ICSP) -otsikon. Otsikko on 5 nastaa, nastat 2-5 yhdistetään DB9-sarjakaapelin nastoihin 2-5 (nasta 1 on käyttämätön). Huomaa, että tämän ICSP -otsikon käyttämiseksi DB9 -kaapelin nastat 6 ja 7 on kytkettävä toisiinsa. Nollaa: hetkellinen nollauspainike on valinnainen. Tämä vain vetää tapin 22 maahan, kun sitä työnnetään.

Vaihe 3: Breadboarding

Leipälautailu
Leipälautailu
Leipälautailu
Leipälautailu

Nyt on aika rakentaa matriisi leipälevylle. Yhdistin riviliittimellä yhden jalan kustakin led -parista yhteen ja pienen hyppyjohtimen muiden jalkojen liittämiseen. Tämä on kuvattu lähikuvassa ja selitetty yksityiskohtaisesti täällä: 1. Suuntaa leipälauta suuremman kuvan mukaan2. Aseta LED 1 anodi (+) itseäsi kohti ja katodi (-) poispäin sinusta. Aseta LED 2 samaan suuntaan kuin anodi (+) LED 1 -katodin liitäntäliuskassa. Käytä pientä hyppyjohtoa liittämään LED 1: n anodi LED 2.5: n katodiin. Toista, kunnes jokainen LED -valopari on lisätty piirilevyyn. Koska väyläliittimiä on vain 4, käytän riviliitintä P4: lle (viides I/O -liitäntä). Tämä näkyy alla olevassa suuremmassa kuvassa.6. Kytke LED 1 -katodin liittimet P0 -väyläliuskaan. Toista tämä jokaiselle parittomalle LED -valolle korvaamalla oikea P* jokaiselle parille (katso kaavio). Kytke LED 2 -katodin liittimet P1 -väyläliuskaan. Toista tämä jokaiselle parittomalle LED -valolle korvaamalla oikea P* jokaiselle parille (katso kaavio). Kytke jokainen väyläliuska BS2: n (P0-P4) vastaavaan I/O-nastaan. Tarkista, että kaikki liitännät vastaavat kaaviota. HUOMAUTUS: Lähikuvassa näet, että ei näytä seuranneen vaihetta 7, koska yhteys toiseen I/O-nastaan on parittomien LED-valojen anodissa. Muista, että parillisten LED -valojen katodi on liitetty parittomien LED -valojen anodiin, joten yhteys on sama kumpaankin suuntaan. Jos tämä huomautus hämmentää sinua, jätä se huomiotta.

Vaihe 4: Ohjelmoinnin perusteet

Jotta charlieplexing toimisi, kytket päälle vain yhden ledin kerrallaan. Jotta tämä toimisi BS2: n kanssa, tarvitsemme kaksi perusvaihetta: 1. Aseta nastatulostulot OUTS -komennolla. Kerro BS2: lle, mitä nastoja käytetään lähtöinä DIRS -komennolla Tämä toimii, koska BS2 voi kertoa, mitkä nastat ajaa korkealle ja matalalle, ja odottaa, kunnes määrität, mitkä nastat ovat ulostuloja. vain yrittää vilkkua LED 1. Jos katsot kaaviota, näet, että P0 on kytketty LEDin 1 katodiin (-) ja P1 on kytketty saman LEDin anodiin. Tämä tarkoittaa, että haluamme ajaa P0 matalalla ja P1 korkealla. Tämä voidaan tehdä seuraavasti: "OUTS = % 11110", joka ajaa P4-P1 korkealle ja P0 matalalle. (% Ilmaisee binääriluvun. Alin binääriluku on aina oikealla. 0 = LOW, 1 = HIGH) BS2 tallentaa nämä tiedot, mutta ei toimi niiden mukaan ennen kuin ilmoitamme, mitkä nastat ovat ulostuloja. Tämä vaihe on avainasemassa, koska vain kahden nastan tulee olla ulostuloja samanaikaisesti. Loput tulee olla tuloja, jotka asettavat neulat korkean impedanssin tilaan, jotta ne eivät upota virtaa. Meidän on ajettava P0 ja P1, joten asetamme ne lähtöiksi ja loput tuloiksi, kuten "DIRS = % 00011". (% Osoittaa, että binaariluku on seuraava. Alin binääriluku on aina oikealla. 0 = INPUT, 1 = OUTPUT) Yhdistetään tämä hyödylliseksi koodiksi: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OTS = %11110 'Drive P0 low ja P1-P4 high DIRS = %00011' Set P0- P1 lähtöinä ja P2-P4 tuloina PAUSE 250 'Tauko, jotta LED jää palamaan DIRS = 0' Aseta kaikki nastat tuloon. Tämä sammuttaa LED -taukon PAUSE 250 'Tauko, jotta LED -valo pysyy sammuneena

Vaihe 5: Kehityssykli

Nyt kun olemme nähneet yhden nastan työajan varmistaaksemme, että ne kaikki toimivat. Huomaat, että jokaisen nastan syttymisen jälkeen käytän "DIRS = 0" kääntääkseni kaikki nastat takaisin tuloiksi. Jos muutat OUTS -toimintoa kytkemättä ulostulonappeja pois päältä, saatat saada "haamukuvia", joissa led, jota ei pitäisi sytyttää, voi vilkkua jaksojen välillä. Jos muutat W1 -muuttujan tämän koodin alussa arvoksi "W1 = 1" siellä jokaisen LED -välähdyksen välissä on vain 1 millisekunnin tauko. Tämä aiheuttaa vision pysyvyyden (POV) vaikutuksen, joka saa sen näyttämään siltä, että kaikki LEDit palavat. Tämä tekee LED -valojen himmentämisestä, mutta se on ydin siinä, miten näytämme merkkejä tässä matriisissa. LEDit käyttökelpoiseen kuvioon. Tämä tiedosto on ensimmäinen yritykseni. Näet, että tiedoston alareunassa merkit tallennetaan neljälle 5 -numeroiselle binaaririville. Jokainen rivi luetaan, jäsennellään ja aliohjelma kutsutaan joka kerta, kun led on sytytettävä. Tämä koodi toimii, selaamalla numeroita 1-0. Jos yrität käyttää sitä, huomaa, että sitä vaivaa erittäin hidas virkistystaajuus, joka saa merkit vilkkumaan lähes liian hitaasti tunnistettavaksi. Tämä koodi on huono monista syistä. Ensinnäkin viisi numeroa binaaria vievät yhtä paljon tilaa EEPROMissa kuin 8 numeroa binaaria, koska kaikki tiedot tallennetaan neljän bitin ryhmiin. Toiseksi SELECT CASE, jota käytetään päätettäessä, mikä tappi on sytytettävä, vaatii 20 tapausta. BS2 on rajoitettu 16 tapaukseen SELECT -toimintoa kohden. Tämä tarkoittaa, että minun täytyi hakata tämän rajoituksen ympärille IF-THEN-ELSE -lausekkeella. On oltava parempi tapa. Muutaman tunnin pään raapimisen jälkeen huomasin sen.

Vaihe 6: Parempi tulkki

Matriisin jokainen rivi koostuu 4 LEDistä, joista jokainen voi olla päällä tai pois päältä. BS2 tallentaa tiedot EEPROMiinsa neljän bitin ryhmissä. Tämän korrelaation pitäisi helpottaa meitä paljon, ja tämän tosiasian lisäksi neljä bittiä vastaa desimaalilukuja 0-15 yhteensä 16 mahdollisuudella. Tämä tekee tai VALITSE TAPAUKSEN paljon helpommaksi. Tässä on EEPROMiin tallennettu numero 7: '7 %1111, %1001, %0010, %0100, %0100, Jokaisella rivillä on desimaaliluku 0-15, joten luemme rivi muistista ja syötä se suoraan SELECT CASE -toimintoon. Tämä tarkoittaa sitä, että ihmisen luettavissa oleva binäärimatriisi, jota käytetään jokaisen merkin tekemiseen (1 = johti päälle, 0 = johti pois), on tulkin avain. asettaa DIRS ja OUTS muuttujiksi. Luin ensin jokaisesta viidestä merkin rivistä muuttujille ROW1-ROW5. Pääohjelma kutsuu sitten aliohjelman näyttämään merkin. Tämä aliohjelma ottaa ensimmäisen rivin ja määrittää neljä mahdollista OUTS-yhdistelmää muuttujalle outp1-outp4 ja kaksi mahdollista DIRS-yhdistelmää direktiiveille1 ja suunnat2. Merkkivalot vilkkuvat, rivilaskuria lisätään ja sama prosessi suoritetaan kullekin neljälle muulle riville. Tämä on paljon nopeampaa kuin ensimmäinen tulkkiohjelma. Siitä huolimatta on edelleen havaittavaa välkyntä. Katso video, kamera saa välkkymisen näyttämään paljon pahemmalta, mutta saat idean. Tämän käsitteen siirtäminen paljon nopeampaan siruun, kuten picMicro tai AVR -siru, mahdollistaisi näiden merkkien näyttämisen ilman havaittavaa välkkymistä.

Vaihe 7: Minne mennä täältä

Minulla ei ole cnc -myllyä tai etsaustarvikkeita piirilevyjen tekemiseen, joten en aio johdottaa tätä projektia. Jos sinulla on mylly ja olet kiinnostunut yhteistyöstä eteenpäin tästä eteenpäin, lähetä minulle viesti. Maksan mielelläni materiaaleista ja toimituksista vieläkin onnellisemmin, kun voin näyttää jotain valmiista tuotteesta tähän projektiin.

Muut mahdollisuudet: 1. Siirrä tämä toiseen siruun. Tätä matriisimallia voidaan käyttää minkä tahansa sirun kanssa, jossa on käytettävissä 5 i/o-nastaa, jotka voivat käyttää kolme tilaa (nastat, jotka voivat olla korkeita, pieniä tai tuloja (suuri impedanssi)). 2. Käyttämällä nopeampaa sirua (ehkä AVR tai picMicro) voit suurentaa mittakaavaa. 20 -nastaisella sirulla voit käyttää 14 nastaa 8x22 -näytön charliepleximiseen ja loput nastat vastaanottamaan sarjakomentoja tietokoneelta tai toiselta ohjaimelta. Käytä vielä kolmea 20-nastaista pelimerkkiä ja sinulla voi olla vieritysnäyttö, joka on 8x88 eli yhteensä 11 merkkiä kerralla (tietenkin kunkin merkin leveydestä riippuen). Onnea pidä hauskaa!

Suositeltava: