Sisukord:

5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexi abil: 7 sammu
5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexi abil: 7 sammu

Video: 5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexi abil: 7 sammu

Video: 5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexi abil: 7 sammu
Video: ATtiny13a Charlieplexing LED board matrix 5x4 2024, Juuli
Anonim
5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexingu abil
5x4 LED -ekraanimaatriks põhitempli 2 (bs2) ja Charlieplexingu abil

Kas istub Basic Stamp 2 ja mõned täiendavad LED -id? Miks mitte mängida charlieplexingu kontseptsiooniga ja luua väljund, kasutades vaid 5 tihvti.

Selle juhendi jaoks kasutan ma BS2e -d, kuid iga BS2 perekonna liige peaks töötama.

1. samm: Charlieplexing: mida, miks ja kuidas

Võtame esmalt põhjuse teelt välja. Miks kasutada põhitempliga 2 charlieplexingut? --- Tõestus kontseptsioonist: õppige, kuidas charlieplexing töötab, ja õppige midagi BS2 kohta. Sellest võib mulle hiljem kasu olla, kui kasutan kiiremaid 8-pin kiipe (ainult 5 neist on väljundid).--- Kasulik põhjus: põhimõtteliselt pole ühtegi. BS2 on ilma märgatava virvenduseta kuvamiseks liiga aeglane. Mis on charlieplexing? --- Charlieplexing on meetod suure hulga LED-ide juhtimiseks väikese arvu mikroprotsessori sisend-/väljundtihvtidega. Ma õppisin charlieplexingu kohta veebisaidilt www.instructables.com ja ka teie saate seda teha: Charlieplexing LED-id- teooria Samuti wikipedias: CharlieplexingKuidas saan juhtida 20 LED-i 5 i/o-nööpnõelaga? --- Palun lugege läbi kolm linki jaotises "Mis on charlieplexing?". See seletab seda paremini kui kunagi varem. Charlieplexing erineb traditsioonilisest multipleksimisest, mis vajab igale reale ja igale veerule ühte sisend-/väljundtihvti (see oleks 5/4 ekraani puhul kokku 9 sisend-/väljundnõela).

Samm: riistvara ja skeem

Riistvara ja skeem
Riistvara ja skeem

Materjalide loend: 1x - põhitempel 220x - sama tüüpi valgusdioodid (LED -id) (värv ja pingelangus) -9v Toiteallikas sõltuvalt teie BS2 versioonist (lugege kasutusjuhendit) Skeem: see skeem on koostatud mehaanilist paigutust silmas pidades. Näete vasakul seadistatud LED -ide võrku, see on suund, mille jaoks BS2 kood on kirjutatud. Pange tähele, et igal LED -paaril on anood ühendatud teise katoodiga. Seejärel ühendatakse need ühega viiest sisend-/väljundpistikust. Takisti väärtused: peaksite arvutama oma takisti väärtused. Kontrollige oma LED -ide andmelehte või kasutage oma LED -ide pingelanguse leidmiseks oma digitaalse multimeetri LED -seadeid. Teeme mõned arvutused: toitepinge - pingelangus / soovitud vool = takisti väärtus praegusest. Minu valgusdioodidel on langus 1,6 V ja need töötavad 20 mA juures. 5 V - 1,6 V /.02 amprit = 155 oomi Ma kasutasin 220 oomi, kuna minu arendusplaadil on igale sisend-/väljundpistikule sisse ehitatud selline takisti väärtus. MÄRKUS. Usun, et kuna igal tihvtil on takisti, kahekordistab see tõhusalt iga LED -i takistust, kuna üks tihvt on V+ ja teine Gnd. Sellisel juhul peaksite takistite väärtusi poole võrra vähendama. Liiga suure takisti väärtuse negatiivne mõju on hämaram LED. Kas keegi saab seda kontrollida ja jätta mulle PM või kommentaar, et saaksin seda teavet värskendada? Programmeerimine: olen kasutanud arendusplaati, millel on DB9 pistik, et programmeerida kiip otse tahvlile. Ma kasutan seda kiipi ka oma joodiseta leivaplaadil ja olen lisanud In Circuit Serial Programming (ICSP) päise. Päis on 5 tihvti, tihvtid 2 kuni 5 ühendatakse DB9 jadakaabli tihvtidega 2-5 (tihvt 1 on kasutamata). Pange tähele, et selle ICSP päise kasutamiseks peavad DB9 kaabli tihvtid 6 ja 7 olema omavahel ühendatud. Lähtestamine: hetkeline vajutusnupp on valikuline. See tõmbab tihvti 22 maapinnale, kui seda surutakse.

3. samm: leivalaud

Leivalaud
Leivalaud
Leivalaud
Leivalaud

Nüüd on aeg maatriks leivaplaadile üles ehitada. Ma kasutasin klemmliistu, et ühendada üks jalg igast LED -paarist ja väike hüppajajuhe teiste jalgade ühendamiseks. Seda on üksikasjalikult kirjeldatud lähivõtte fotol ja seda on siin üksikasjalikult selgitatud: 1. Suunake oma leivalaud suuremale pildile2. Asetage LED 1 anoodiga (+) enda poole ja katood (-) endast eemale. Asetage LED 2 samasse suunda anoodiga (+) LED 1 katoodi ühendusklemmiriba külge. Kasutage LED -i anoodi ühendamiseks LED -i 2.5 katoodiga väikest hüppajatraati. Korrake seda, kuni iga LED -paar on plaadile lisatud. Ma kasutan leivaplaadi toitebussi ribasid BS2 I/O kontaktide bussilintidena. Kuna siiniliine on ainult 4, kasutan P4 jaoks klemmliistu (viies I/O -ühendus). Seda on näha alloleval suuremal pildil.6. Ühendage LED 1 katoodi klemmliist P0 siinilindiga. Korrake iga paaritu numbriga LED -i, asendades iga paari jaoks õige P* (vt skeemi). Ühendage LED 2 katoodi klemmliist P1 siinilindiga. Korrake iga paaritu numbriga LED -i, asendades iga paari jaoks õige P* (vt skeemi). Ühendage iga siiniriba BS2 (P0-P4) sobiva sisend-/väljundpistikuga. Kontrollige kõiki ühendusi, et need vastaksid skemaatilisele skeemile.10. Tähistage. MÄRKUS. Lähivõttes näete, et tundub, et ma ei järginud sammu 7, kuna ühendus teise sisend-/väljundpistikuga on paaritu numbritega LED-ide anoodil. Pidage meeles, et paarisarvuliste valgusdioodide katood on ühendatud paaritu numbritega LED -de anoodiga, nii et ühendus on mõlemal juhul sama. Kui see märkus teid segab, ignoreerige seda.

4. samm: programmeerimise põhitõed

Selleks, et charlieplexing töötaks, lülitate sisse ainult ühe LED -i. Selleks, et see meie BS2 -ga toimiks, vajame kahte põhietappi: 1. Määrake tihvtide väljundrežiimid käsuga OUTS.2. Öelge BS2 -le, milliseid tihvte väljundina kasutada, kasutades käsku DIRS See toimib, sest BS2 -le saab öelda, milliseid tihvte kõrgele ja madalale sõita, ja see ootab, kuni määrate, millised tihvtid on väljundid. Vaatame, kas asjad on õigesti ühendatud proovin lihtsalt vilkuda LED 1. Kui vaadata skeemi, näete, et P0 on ühendatud LED 1 katoodiga (-) ja P1 on ühendatud sama LED-i anoodiga. See tähendab, et tahame sõita P0 madalal ja P1 kõrgel. Seda saab teha nii: "OUTS = % 11110", mis viib P4-P1 kõrgeks ja P0 madalaks. (% Näitab, et järgima peab kahendarvu. Madalaim binaarne number on alati paremal. 0 = LOW, 1 = HIGH) BS2 salvestab selle teabe, kuid ei tegutse selle järgi enne, kui oleme teatanud, millised tihvtid on väljundid. See samm on võtmetähtsusega, kuna väljundeid peaks korraga olema ainult kaks tihvti. Ülejäänud peaksid olema sisendid, mis seab need tihvtid suure takistusega režiimi, nii et need ei uputaks voolu. Peame juhtima P0 ja P1, nii et seame need väljunditeks ja ülejäänud sisenditeks järgmiselt: "DIRS = % 00011". (% Näitab, et järgima peab kahendarvu. Madalaim binaarne number on alati paremal. 0 = INPUT, 1 = VÄLJUND) Paneme selle kokku mõneks kasulikuks koodiks: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OTS = %11110 'Drive P0 low and P1-P4 high DIRS = %00011' Set P0- P1 väljunditena ja P2-P4 sisenditena PAUS 250 'Paus, et LED jääks põlema DIRS = 0' Seadke kõik tihvtid sisendisse. See lülitab LED PAUSE 250 'pausi välja, et LED ei põleks LOOP

5. samm: arendustsükkel

Nüüd, kui oleme näinud ühe tihvti tööaega, veendumaks, et need kõik töötavad. 20led_Zig-Zag.bse Märkate, et pärast seda, kui iga tihvt on prügikasti süttinud, kasutan "DIRS = 0", et muuta kõik tihvtid sisenditeks. Kui muudate OUTS -i ilma väljundnuppe välja lülitamata, võib tekkida mõningane "kummitus", kus LED, mida ei tohiks põleda, võib tsüklite vahel vilkuda. Kui muudate selle koodi alguses muutuja W1 väärtuseks "W1 = 1" iga LED -i vilkumise vahel on ainult 1 millisekundiline paus. See põhjustab nägemise püsivuse (POV) efekti, mille tõttu tundub, et kõik LED -id põlevad. See muudab LED -id tuhmimaks, kuid see on selle maatriksi tähemärkide kuvamise põhiolemus. LEDid kasutatavaks mustriks. See fail on minu esimene katse. Näete, et faili allservas on märgid salvestatud neljale viiekohalisele binaarreale. Iga rida loetakse sisse, sõelutakse ja alamprogramm kutsutakse sisse iga kord, kui LED-tuli peab põlema. See kood töötab, liikudes numbritega 1-0. Kui proovite seda käivitada, märkige, et seda vaevab väga aeglane värskendussagedus, mis põhjustab märkide äratundmiseks peaaegu liiga aeglase vilkumise. See kood on halb mitmel põhjusel. Esiteks võtavad viis binaarkoopiat EEPROMis sama palju ruumi kui kaheksa numbrit, kui kogu teave on salvestatud neljabitiste rühmadena. Teiseks, SELECT CASE, mille abil otsustati, millist tihvti tuleb valgustada, nõuab 20 juhtumit. BS2 on SELECT -toimingu kohta piiratud 16 juhtumiga. See tähendab, et pidin selle piirangu ümber lööma IF-THEN-ELSE avaldusega. Peab olema parem viis. Pärast mõnetunnist pea kratsimist avastasin selle.

6. samm: parem tõlk

Meie maatriksi iga rida koosneb 4 valgusdioodist, millest igaüks võib sisse või välja lülitada. BS2 salvestab teabe oma EEPROM -is nelja bitise rühmana. See korrelatsioon peaks meie asju palju lihtsamaks muutma. Lisaks sellele faktile vastavad neli bitti kümnendarvudele 0-15, kokku 16 võimalust. See muudab või SELECT CASE palju lihtsamaks. Siin on EEPROM-is salvestatud number 7: „7 %1111, %1001, %0010, %0100, %0100, igal real on kümnendkoha ekvivalent-0-15, seega loeme rida mälust ja sisestage see otse funktsioonile SELECT CASE. See tähendab, et iga tähemärgi tegemiseks kasutatav inimloetav binaarmaatriks (1 = juhitud, 0 = juhitud) on tõlgi võti. Et kasutada sama SELECT CASE iga viie rea puhul, kasutasin teist valitud juhtumit muutujateks DIRS ja OUTS. Lugesin kõigepealt tähemärgi viiest reast muutujatele ROW1-ROW5. Seejärel kutsub põhiprogramm alamprogrammi märgi kuvamiseks. See alamprogramm võtab esimese rea ja määrab neli võimalikku OUTS-i kombinatsiooni muutujale outp1-outp4 ning kaks võimalikku DIRS-i kombinatsiooni aadressile directc1 ja Direc2. LED -id vilguvad, ridade loendurit suurendatakse ja sama protsess käivitatakse kõigi ülejäänud nelja rea puhul. See on palju kiirem kui esimene tõlkiprogramm. Nagu öeldud, on endiselt märgatav virvendus. Vaadake videot, kaamera muudab väreluse palju hullemaks, kuid saate sellest aru. Selle kontseptsiooni teisaldamine palju kiiremale kiibile, nagu picMicro või AVR -kiip, võimaldaks neid märke kuvada ilma märgatava väreluseta.

7. samm: kuhu siit minna

Mul ei ole trükkplaatide valmistamiseks cnc -veskit ega söövitustarbeid, nii et ma ei hakka seda projekti juhtmestama. Kui teil on veski ja olete huvitatud koostööst, et siit edasi liikuda, saatke mulle sõnum. Ma maksan hea meelega materjalide ja kohaletoimetamise eest veel rohkem, kui näitan selle projekti jaoks midagi valmistoodangut.

Muud võimalused: 1. Portige see teisele kiibile. Seda maatrikskonstruktsiooni saab kasutada mis tahes kiibiga, millel on saadaval kolm olekut võimaldavat i/o kontakti (tihvtid, mis võivad olla kõrged, madalad või sisendiga (kõrge takistusega)). 2. Kiirema kiibi (võib -olla AVR või picMicro) abil saate skaalat suurendada. 20 -kiibilise kiibiga saate 8 x 22 ekraani charliepleximiseks kasutada 14 tihvti ja ülejäänud tihvtide abil jada käske arvutist või muult kontrollerilt. Kasutage veel kolme 20-kontaktilist kiipi ja teil on keritav ekraan, mille suurus on 8x88, kokku 11 tähemärki korraga (olenevalt muidugi iga tähemärgi laiusest). Palju õnne, nautige!

Soovitan: