INHOUDSOPGAWE:

5x4 LED -skermmatriks met 'n basiese seël 2 (bs2) en Charlieplexing: 7 stappe
5x4 LED -skermmatriks met 'n basiese seël 2 (bs2) en Charlieplexing: 7 stappe

Video: 5x4 LED -skermmatriks met 'n basiese seël 2 (bs2) en Charlieplexing: 7 stappe

Video: 5x4 LED -skermmatriks met 'n basiese seël 2 (bs2) en Charlieplexing: 7 stappe
Video: Learning How To Drive A 6-71 Detroit & Shift A 5x4 In A 1966 #peterbilt After Sitting For 27 years! 2024, November
Anonim
5x4 LED -skermmatriks met 'n basiese stempel 2 (bs2) en Charlieplexing
5x4 LED -skermmatriks met 'n basiese stempel 2 (bs2) en Charlieplexing

Het u 'n Basic Stamp 2 en 'n paar ekstra LED's? Waarom nie met die konsep van charlieplexing speel nie en 'n uitset skep met slegs 5 penne.

Vir hierdie instruksies sal ek die BS2e gebruik, maar enige lid van die BS2 -gesin moet werk.

Stap 1: Charlieplexing: wat, waarom en hoe

Kom ons kry eers die hoekom uit die weg geruim. Waarom gebruik u charlieplexing met 'n Basic Stamp 2? --- Bewys van konsep: leer hoe charlieplexing werk en leer iets oor die BS2. Dit kan later vir my nuttig wees met vinniger 8-pen skyfies (slegs 5 daarvan sal i/o wees).--- Nuttige rede: basies is daar geen. Die BS2 is veels te stadig om te vertoon sonder om te sien flikker. Wat is charlieplexing? --- Charlieplexing is 'n metode om 'n groot aantal LED's te bestuur met 'n klein aantal mikro/verwerker i/o-penne. Ek het geleer oor charlieplexing van www.instructables.com, en u kan ook: Charlieplexing LEDs- Die teorie Hoe om baie LED's van 'n paar mikrokontrole-penne af te dryf. Ook op wikipedia: CharlieplexingHoe kan ek 20 LED's bestuur met 5 i/o-penne? --- Lees asseblief die drie skakels onder "Wat is charlieplexing?". Dit verklaar dit beter as wat ek ooit kon. Charlieplexing verskil van tradisionele multiplexing, wat een i/o -pen vir elke ry en elke kolom benodig (dit is 'n totaal van 9 i/o -penne vir 'n 5/4 -vertoning).

Stap 2: Hardeware en skematiese

Hardeware en skematiese
Hardeware en skematiese

Materialelys: 1x - Basiese stempel 220x - liguitstralende diodes (LED's) van dieselfde tipe (kleur en spanningsval) 5x - weerstande (sien hieronder met betrekking tot weerstandswaarde) Hulp/opsioneel: Metode om u BS2Momentêre drukknop te programmeer as 'n reset -skakelaar6v -9v Kragtoevoer, afhangende van u weergawe van die BS2 (lees u handleiding) Die skematiese: hierdie skematiese is saamgestel met die meganiese uitleg in gedagte. U sal die rooster van LED's aan die linkerkant sien, dit is die oriëntasie waarvoor die BS2 -kode geskryf is. Let op dat elke paar LED's die anode verbind met die katode van die ander. Hulle word dan gekoppel aan een van die vyf i/o -penne. Weerstandswaardes: U moet u eie weerstandswaardes bereken. Gaan die datablad na vir u LED's of gebruik die LED -instelling op u digitale multimeter om die spanningsval van u LED's te vind. Kom ons doen 'n paar berekeninge: Voedingsspanning - Spanningsval / Gewenste stroom = Weerstandswaarde Die BS2 verskaf 5v gereguleerde krag en kan 20ma bron van huidige. My LED's het 'n daling van 1.6v en werk by 20ma.5v - 1.6v /.02amps = 155ohms Om u BS2 te beskerm, moet u die volgende hoër weerstandswaarde gebruik van wat u met die berekening kry, in hierdie geval glo ek dat dit 180ohms sou wees. Ek het 220 ohm gebruik omdat my ontwikkelingsbord die waarde van die weerstand ingebou het vir elke i/o -pen. LET WEL: ek glo dat aangesien daar 'n weerstand op elke pen is, dit die weerstand op elke led effektief verdubbel, aangesien die een pen V+ is en die ander Gnd. As dit die geval is, moet u die weerstandswaardes met die helfte verminder. Die nadelige effek van 'n te hoë weerstandswaarde is 'n dowwer LED. Kan iemand dit bevestig en vir my 'n PM of kommentaar lewer sodat ek hierdie inligting kan bywerk? Ek gebruik ook hierdie chip op my broodbord sonder soldeer en het 'n In Circuit Serial Programming (ICSP) kop bevat. Die kop is 5 penne, penne 2 tot en met 5 verbind met penne 2-5 op 'n DB9-seriële kabel (pen 1 word nie gebruik nie). Let asseblief daarop dat die gebruik van hierdie ICSP -koppenne 6 en 7 op die DB9 -kabel met mekaar verbind moet wees. Herstel: 'n kort druk op die terugstelknoppie is opsioneel. Dit trek pen 22 net grond toe as dit gestoot word.

Stap 3: Breadboarding

Broodplankry
Broodplankry
Broodplankry
Broodplankry

Nou is dit tyd om die matriks op 'n broodbord te bou. Ek het 'n terminale strook gebruik om een been van elke geleide paar aan mekaar te verbind en 'n klein springdraad om die ander bene te verbind. Dit word uitgebrei in die close -upfoto en word hier in diepte verduidelik: 1. Rig u broodbord om by die groter prentjie te pas 2. Plaas LED 1 met die anode (+) na u toe en die katode (-) van u af. Plaas LED 2 in dieselfde rigting as die Anode (+) in die aansluitklemstrook van die LED 1 katode. Gebruik 'n klein draad om die anode van LED 1 met die katode van LED 2.5 te verbind. Herhaal totdat elke paar LED's op die bord gevoeg is. Ek gebruik gewoonlik die kragbusstroke van die broodbord as busstroke vir die BS2 I/O -penne. Omdat daar slegs 4 busstroke is, gebruik ek 'n terminale strook vir P4 (die vyfde I/O -verbinding). Dit kan op die groter prentjie hieronder gesien word. Koppel die aansluitstrook vir die LED 1 -katode aan die P0 -busstrook. Herhaal vir elke onewe genommerde LED deur die regte P* vir elke paar te vervang (sien die skema).7. Koppel die aansluitstrook vir die LED 2 -katode aan die P1 -busstrook. Herhaal vir elke onewe genommerde LED deur die regte P* vir elke paar te vervang (sien die skema).8. Koppel elke busstrook aan die toepaslike I/O-pen op die BS2 (P0-P4).9. Kontroleer alle verbindings om te verseker dat hulle by die skematiese weergawe pas. OPMERKING: In die close-up sal u sien dat dit nie lyk asof ek stap 7 gevolg het nie, aangesien die verbinding met die tweede I/O-pen op die anode van die onewe genommerde LED's is. Onthou dat die katode van die ewe genommerde LED's aan die anode van die onewe genommerde LED's gekoppel is, sodat die verbinding dieselfde is. As hierdie nota u verwar, ignoreer dit net.

Stap 4: Basiese programmering

As u met die kompleksiteit wil werk, skakel u slegs een LED op 'n slag aan. Om dit met ons BS2 te laat werk, benodig ons twee basiese stappe: 1. Stel die uitvoermodusse vir die penne in deur die OUTS -opdrag te gebruik. Vertel die BS2 watter penne as uitsette gebruik moet word met behulp van die DIRS -opdrag. Dit werk omdat die BS2 kan vertel watter penne hoog en laag moet ry, en sal wag totdat u spesifiseer watter penne uitsette is. Kom ons kyk of dinge reg aangesluit is deur probeer net om LED te knip 1. As u na die skematiese kyk, kan u sien dat P0 aan die katode (-) van LED 1 gekoppel is en P1 is aangeslote op die anode van dieselfde LED. Dit beteken dat ons P0 laag en P1 hoog wil ry. Dit kan so gedoen word: "OUTS = % 11110" wat P4-P1 hoog en P0 laag dryf. (% Dui aan dat 'n binêre getal moet volg. Die laagste binêre syfer is altyd regs. 0 = LAAG, 1 = HOOG) Die BS2 stoor die inligting, maar reageer nie daarop totdat ons verklaar watter penne uitsette is nie. Hierdie stap is die belangrikste, aangesien slegs twee penne gelyktydig uitsette moet wees. Die res moet insette wees, wat die penne in die hoë -impedansie -modus stel, sodat hulle geen stroom sal sink nie. Ons moet P0 en P1 ry, sodat ons dit op uitsette stel en die res na insette soos volg: "DIRS = % 00011". (% Dui aan dat 'n binêre getal volg. Die laagste binêre syfer is altyd regs. 0 = INGANG, 1 = UITGANG) Kom ons sit dit saam in 'n paar nuttige kode: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS = %11110 'Ry P0 laag en P1-P4 hoog DIRS = %00011' Stel P0- P1 as uitsette en P2-P4 as insette PAUSE 250 'Pouse vir LED om aan te bly DIRS = 0' Stel alle penne op Input. Dit sal die LED PAUSE 250 'pouse uitskakel sodat LED af bly. LOOP

Stap 5: Die ontwikkelingsiklus

Noudat ons 'n enkele werktyd gesien het om seker te maak dat hulle almal werk. 20led_Zig-Zag.bse Hierdie aangehegte kode moet elkeen van die 20 LED's in 'n zig-zag-patroon verlig. U sal agterkom dat ek, nadat elke bak oopgemaak is, "DIRS = 0" gebruik om alle penne weer in insette te verander. As u die OUTS verander sonder om die uitsetpennetjies af te skakel, kan u 'ghosting' kry, waar 'n LED wat nie moet brand nie, tussen siklusse kan knip. As u die W1 -veranderlike aan die begin van hierdie kode na 'W1 = 1' verander sal slegs 'n pouse van 1 millisekonde tussen elke LED -knipper wees. Dit sal 'n aanhoudende visie -effek (POV) veroorsaak wat dit laat lyk asof al die LED's brand. Dit het wel daartoe gelei dat die LED's dowwer word, maar dit is die kern van hoe ons karakters in hierdie matriks sal vertoon. LED's in 'n bruikbare patroon. Hierdie lêer is my eerste poging. U sal sien dat die karakters onderaan die lêer in vier reëls van 'n 5 -syfer -binêre gestoor word. Elke reël word ingelees, ontleed, en elke keer as 'n led aangesteek moet word, word 'n subroetine gebel. Hierdie kode werk deur die syfers 1-0. As u probeer om dit uit te voer, let op dat dit deur 'n baie stadige verversingssnelheid geteister word, wat veroorsaak dat die karakters amper te stadig flits om herken te word. Hierdie kode is om baie redes sleg. Eerstens neem vyf syfers van binêre net soveel ruimte in die EEPROM in as 8 syfers van binêre, aangesien alle inligting in groepe van vier bisse gestoor word. Tweedens, die SELECT CASE wat gebruik is om te besluit watter pen moet aangesteek word, vereis 20 kaste. Die BS2 is beperk tot 16 gevalle per SELECT -operasie. Dit beteken dat ek die beperking moes omseil met 'n IF-THEN-ELSE-verklaring. Daar moet 'n beter manier wees. Na 'n paar uur se kopkrap het ek dit ontdek.

Stap 6: 'n Beter tolk

Elke ry van ons matriks bestaan uit 4 LED's, elkeen kan aan of af wees. Die BS2 stoor inligting in sy EEPROM in groepe van vier bisse. Hierdie korrelasie behoort dinge vir ons baie makliker te maak. Benewens hierdie feit stem vier stukkies ooreen met die desimale getalle 0-15 vir 'n totaal van 16 moontlikhede. Dit vergemaklik of SELECTEER GEVAL. Hier is die syfer 7 soos gestoor in die EEPROM: '7 %1111, %1001, %0010, %0100, %0100, Elke ry het 'n desimale gelykstaande aan 0-15, dus lees ons 'n roei uit die geheue en voer dit direk na die SELECT CASE -funksie. Dit beteken dat die menslike leesbare binêre matriks wat gebruik word om elke karakter te maak (1 = aangeskakel, 0 = afgeskakel) die sleutel vir die tolk is. Om dieselfde SELECT CASE vir elk van die 5 rye te gebruik, het ek 'n ander uitgesoekte geval gebruik om die DIRS en OUTS as veranderlikes in te stel. Ek lees eers in elk van die vyf reëls van die karakter veranderlikes ROW1-ROW5. Die hoofprogram roep dan die subroutine op om die karakter te vertoon. Hierdie subroutine neem die eerste ry en ken die vier moontlike OUTS-kombinasies toe aan veranderlike outp1-outp4 en die twee moontlike DIRS-kombinasies aan direc1 & direc2. LED's flikker, die ryteller word verhoog, en dieselfde proses word uitgevoer vir elk van die ander vier rye. Dit is baie vinniger as die eerste tolkprogram. Dit gesê, daar is nog steeds merkbare flikker. Kyk na die video, die kamera laat die flikkering erger lyk, maar u kry die idee. As u hierdie konsep na 'n baie vinniger chip stuur, soos 'n picMicro of 'n AVR -chip, kan u hierdie karakters sonder merkbare flikkering vertoon.

Stap 7: Waarheen om van hier af te gaan

Ek het nie 'n cnc -meul of etsvoorrade om stroombane te maak nie, so ek sal hierdie projek nie bedrieg nie. Stuur vir my 'n boodskap as u 'n meule het en u wil saamwerk om van hier af voort te gaan. Ek betaal graag vir materiaal en gestuur nog meer as ek iets van 'n voltooide produk vir hierdie projek toon.

Ander moontlikhede: 1. Gee dit na 'n ander skyfie. Hierdie matriksontwerp kan gebruik word met enige chip wat 5 i/o-penne beskikbaar het wat in staat is om in drie toestande te werk (penne wat hoog, laag of ingang kan wees (hoë impedansie)). 2. Met 'n vinniger chip (miskien AVR of picMicro) kan u die skaal vergroot. Met 'n 20 -pins chip kan u 14 penne gebruik om 'n 8x22 -skerm aan te sluit en die oorblywende penne te gebruik om reeksopdragte van 'n rekenaar of 'n ander beheerder te ontvang. Gebruik nog drie skyfies van 20 penne, en u kan 'n blaai-skerm van 8x88 hê vir 'n totaal van 11 karakters tegelyk (afhangende van die breedte van elke karakter natuurlik). Sterkte, geniet dit!

Aanbeveel: