Turinys:

5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“: 7 žingsniai
5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“: 7 žingsniai

Video: 5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“: 7 žingsniai

Video: 5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“: 7 žingsniai
Video: Подключаем светодиодные матрицы к Arduino Mega и Raspberry Pi. Железки Амперки 2024, Liepa
Anonim
5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“
5x4 LED ekrano matrica naudojant pagrindinį antspaudą 2 (bs2) ir „Charlieplexing“

Ar sėdi „Basic Stamp 2“ir keletas papildomų šviesos diodų? Kodėl gi ne pažaisti su charlieplexing koncepcija ir sukurti išvestį naudojant tik 5 kaiščius.

Norėdami tai padaryti, aš naudosiu BS2e, bet bet kuris BS2 šeimos narys turėtų dirbti.

1 žingsnis: „Charlieplexing“: kas, kodėl ir kaip

Pirmiausia išsiaiškinkime kodėl. Kodėl naudoti „charlieplexing“su „Basic Stamp 2“? --- Koncepcijos įrodymas: sužinokite, kaip veikia charlieplexing, ir sužinokite ką nors apie BS2. Tai gali būti naudinga man vėliau naudojant greitesnius 8 kontaktų lustus (tik 5 iš jų bus i/o).--- Naudinga priežastis: iš esmės jų nėra. „BS2“yra per lėtas, kad būtų rodomas be pastebimo mirgėjimo. Kas yra „charlieplexing“? --- „Charlieplexing“yra būdas valdyti daugybę šviesos diodų su nedideliu skaičiumi mikroprocesorinių įvesties/išvesties kontaktų. Aš sužinojau apie „charlieplexing“iš www.instructables.com ir jūs taip pat galite: „Charlieplexing“šviesos diodai- teorija Taip pat „wikipedia“: „Charlieplexing“Tai paaiškina tai geriau nei aš kada nors galėjau. „Charlieplexing“skiriasi nuo tradicinio multipleksavimo, kuriam reikia po vieną įvesties/išvesties kaištį kiekvienai eilutei ir kiekvienam stulpeliui (tai iš viso būtų 9 įvesties/išvesties smeigtukai 5/4 ekranui).

2 žingsnis: Aparatūra ir schema

Techninė įranga ir schema
Techninė įranga ir schema

Medžiagų sąrašas: 1x - pagrindinis antspaudas 220x - to paties tipo šviesos diodai (šviesos diodai) (spalva ir įtampos kritimas) 5x - rezistoriai (apie rezistorių vertę žr. Žemiau) -9v Maitinimo šaltinis, priklausomai nuo jūsų BS2 versijos (perskaitykite vadovą) Schema: Ši schema sudaryta atsižvelgiant į mechaninį išdėstymą. Kairėje pusėje pamatysite šviesos diodų tinklelį, tai yra orientacija, kuriai parašytas BS2 kodas. Atkreipkite dėmesį, kad kiekvienos šviesos diodų poros anodas yra prijungtas prie kito katodo. Tada jie prijungiami prie vieno iš penkių įvesties/išvesties kaiščių. Rezistoriaus vertės: Turėtumėte apskaičiuoti savo rezistorių vertes. Patikrinkite savo šviesos diodų duomenų lapą arba naudokite LED nustatymą savo skaitmeniniame multimetre, kad surastumėte šviesos diodų įtampos kritimą. Atlikime keletą skaičiavimų: maitinimo įtampa - įtampos kritimas / norima srovė = rezistoriaus vertė BS2 tiekia 5 V reguliuojamą galią ir gali tiekti 20 mA srovės. Mano šviesos diodai krenta 1,6 V įtampa ir veikia esant 20ma.5v - 1.6v /.02amps = 155ohms Norėdami apsaugoti savo BS2, turėtumėte naudoti kitą didesnę rezistoriaus vertę nuo to, ką gaunate apskaičiuodami, šiuo atveju manau, kad tai būtų 180 omų. Aš naudojau 220 omų, nes mano kūrimo plokštėje yra kiekvienos i/o kaiščio rezistoriaus vertė. PASTABA: Manau, kad kadangi kiekviename kaištyje yra rezistorius, tai efektyviai padvigubina kiekvieno LED atsparumą, nes vienas kaištis yra V+, o kitas yra Gnd. Tokiu atveju turėtumėte perpus sumažinti rezistoriaus vertes. Neigiamas per didelės rezistoriaus vertės poveikis yra silpnesnis šviesos diodas. Ar kas nors gali tai patikrinti ir palikti man PM ar komentarą, kad galėčiau atnaujinti šią informaciją? Aš taip pat naudoju šį lustą savo duonos lentelėje be litavimo ir įtraukiau „In Circuit Serial Programming“(ICSP) antraštę. Antraštė yra 5 kaiščiai, 2-5 kaiščiai jungiami prie DB5 nuoseklaus kabelio 2-5 kaiščių (1 kaištis nenaudojamas). Atminkite, kad norint naudoti šią ICSP antraštės DB9 kabelio 6 ir 7 kaiščius reikia sujungti vienas su kitu. Atstatyti: akimirksniu paspaudžiamas atstatymo mygtukas yra neprivalomas. Tai tik stumia 22 kaištį prie žemės.

3 žingsnis: „Breadboarding“

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Dabar atėjo laikas sukurti matricą ant duonos lentos. Aš naudoju gnybtų juostą, kad sujungčiau vieną koją iš kiekvienos ledų poros ir mažą trumpiklį, kad prijungčiau kitas kojas. Tai išsamiai aprašyta arti esančioje nuotraukoje ir išsamiai paaiškinta čia: 1. Kreipkite savo duonos lentą į didesnį vaizdą2. Padėkite šviesos diodą 1 taip, kad anodas (+) būtų nukreiptas į jus, o katodas (-)-nuo jūsų. Įdėkite šviesos diodą 2 ta pačia kryptimi kaip ir anodas (+) į LED 1 katodo jungiamąją gnybtų juostą. Naudokite mažą jungiamąjį laidą, kad prijungtumėte 1 šviesos diodo anodą su šviesos diodo 2.5 katodu. Pakartokite, kol prie plokštės bus pridėta kiekviena šviesos diodų pora. Aš paprastai naudoju duonos plokštės maitinimo magistralės juosteles kaip magistralės juostas BS2 įvesties/išvesties kaiščiams. Kadangi yra tik 4 magistralės, aš naudoju gnybtų juostelę P4 (penktoji įvesties/išvesties jungtis). Tai galima pamatyti didesniame paveikslėlyje žemiau.6. Prijunkite LED 1 katodo gnybtų juostelę prie P0 magistralės. Pakartokite kiekvieną nelyginio numerio šviesos diodą, pakeisdami tinkamą P* kiekvienai porai (žr. Schemą). Prijunkite LED 2 katodo gnybtų juostelę prie P1 magistralės juostos. Pakartokite kiekvieną nelyginio numerio šviesos diodą, pakeisdami tinkamą P* kiekvienai porai (žr. Schemą). Prijunkite kiekvieną magistralės juostą prie atitinkamo įvesties/išvesties kaiščio BS2 (P0-P4).9. Patikrinkite visas jungtis, kad jos atitiktų schemą.10. Švęskite. PASTABA: Iš arti pamatysite, kad neatrodo, jog aš atlikiau 7 veiksmą, nes ryšys su antruoju įvesties/išvesties kaiščiu yra nelyginių šviesos diodų anode. Atminkite, kad porinių numerių šviesos diodų katodas yra prijungtas prie nelyginių šviesos diodų anodo, todėl ryšys yra tas pats. Jei ši pastaba jus klaidina, tiesiog nekreipkite į ją dėmesio.

4 žingsnis: programavimo pagrindai

Kad „Charlieplexing“veiktų, vienu metu įjunkite tik vieną šviesos diodą. Kad tai veiktų su mūsų BS2, mums reikia dviejų pagrindinių žingsnių: 1. 1. Nustatykite kaiščių išvesties režimus naudodami komandą OUTS.2. Pasakykite BS2, kuriuos kaiščius naudoti kaip išėjimus, naudodami komandą DIRS. Tai veikia, nes BS2 galima pasakyti, kuriuos kaiščius reikia važiuoti aukštai ir žemai, ir laukti, kol tai padarysite, kol nurodysite, kurie kaiščiai yra išėjimai. Pažiūrėkime, ar viskas tinkamai prijungta tiesiog bando mirksėti šviesos diodas 1. Jei pažvelgsite į schemą, pamatysite, kad P0 yra prijungtas prie katodo (-) LED 1, o P1 yra prijungtas prie to paties šviesos diodo anodo. Tai reiškia, kad norime važiuoti P0 žemai ir P1 aukštai. Tai galima padaryti taip: „OUTS = % 11110“, kuris P4-P1 padidina, o P0 žemas. (% Rodo, kad turi sekti dvejetainis skaičius. Mažiausias dvejetainis skaitmuo visada yra dešinėje. 0 = LOW, 1 = HIGH) BS2 saugo tą informaciją, bet nesiima veiksmų, kol nepaskelbsime, kurie kaiščiai yra išėjimai. Šis žingsnis yra esminis, nes tuo pačiu metu išėjimai turėtų būti tik du kaiščiai. Likusi dalis turėtų būti įvestis, kuri nustato tuos kaiščius į didelės varžos režimą, kad jie nenuskęstų jokios srovės. Turime vairuoti P0 ir P1, todėl nustatysime juos į išvestis, o likusius įvesime taip: "DIRS = % 00011". (% Rodo, kad turi sekti dvejetainis skaičius. Mažiausias dvejetainis skaitmuo visada yra dešinėje. 0 = ĮVADAS, 1 = IŠVESTIS) Sujunkime tai į naudingą kodą: „{$ STAMP BS2e}“{$ PBASIC 2.5} DO OUTS = %11110 'Drive P0 low and P1-P4 high DIRS = %00011' Set P0- P1 kaip išėjimai ir P2-P4 kaip įėjimai PAUSE 250 'Pauzė, kad šviesos diodas liktų įjungtas DIRS = 0' Nustatykite visus kaiščius į įvestį. Tai išjungs LED PAUSE 250 'pauzę, kad šviesos diodas liktų išjungtas

5 žingsnis: kūrimo ciklas

Dabar, kai pamatėme vieną smeigtuko darbo laiką, kad įsitikintume, jog jie visi veikia. 20led_Zig-Zag.bse Pastebėsite, kad uždegus kiekvienam kaiščiui aš naudoju „DIRS = 0“, kad visus kaiščius vėl paversčiau įėjimais. Jei pakeisite OUTS, neišjungę išvesties kaiščių, gali atsirasti „vaiduoklių“, kai tarp ciklų gali mirksėti šviesos diodas, kuris neturėtų užsidegti. Jei šio kodo pradžioje pakeisite kintamąjį W1 į „W1 = 1“bus tik 1 milisekundės pertrauka tarp kiekvieno LED mirksėjimo. Tai sukels nuolatinio regėjimo (POV) efektą, dėl kurio atrodo, kad visi šviesos diodai dega. Dėl to šviesos diodai tampa silpnesni, tačiau esmė yra tai, kaip šioje matricoje bus rodomi simboliai. Šviesos diodai yra tinkamo modelio. Šis failas yra mano pirmasis bandymas. Pamatysite, kad failo apačioje simboliai saugomi keturiose 5 skaitmenų dvejetainių eilučių eilutėse. Kiekviena eilutė skaitoma, analizuojama ir kiekvieną kartą iškviečiama paprograma, kai reikia uždegti šviesos diodą. Šis kodas veikia, pereinant per skaitmenis 1-0. Jei bandysite paleisti, pastebėkite, kad jį kamuoja labai lėtas atnaujinimo dažnis, todėl simboliai mirksi beveik per lėtai, kad juos būtų galima atpažinti. Šis kodas yra blogas dėl daugelio priežasčių. Visų pirma, penki skaitmeniniai dvejetainiai skaičiai užima tiek pat vietos EEPROM, kiek 8 skaitmenys dvejetainių, nes visa informacija saugoma keturių bitų grupėmis. Antra, SELECT CASE, naudojamas sprendžiant, kurį kaištį reikia apšviesti, reikalauja 20 dėklų. BS2 yra tik 16 atvejų, kai atliekama SELECT operacija. Tai reiškia, kad turėjau nulaužti šį apribojimą naudodami IF-THEN-ELSE teiginį. Turi būti geresnis būdas. Po kelių valandų galvos kasymo atradau.

6 žingsnis: geresnis vertėjas

Kiekvieną mūsų matricos eilutę sudaro 4 šviesos diodai, kiekvienas gali būti įjungtas arba išjungtas. BS2 saugo informaciją savo EEPROM keturių bitų grupėmis. Ši koreliacija turėtų mums daug palengvinti. Be to, keturi bitai atitinka dešimtainius skaičius 0-15, iš viso 16 galimybių. Tai labai palengvina arba PASIRINKTI BYLĄ. Štai skaičius 7, saugomas EEPROM: „7 %1111, %1001, %0010, %0100, %0100, kiekvienoje eilutėje yra dešimtainis atitikmuo 0-15, todėl skaitome įrašykite eilutę iš atminties ir perkelkite ją tiesiai į funkciją SELECT CASE. Tai reiškia, kad žmogaus skaitoma dvejetainė matrica, naudojama kiekvienam simboliui sudaryti (1 = įjungta, 0 = išjungta), yra vertėjo raktas. Norėdami naudoti tą pačią SELECT CASE kiekvienai iš 5 eilučių, naudoju kitą pasirinktą atvejį nustatyti DIRS ir OUTS kaip kintamuosius. Pirmiausia perskaičiau kiekvieną iš penkių simbolio eilučių į kintamuosius ROW1-ROW5. Tada pagrindinė programa iškviečia paprogramę, kad būtų parodytas simbolis. Ši paprograma užima pirmąją eilutę ir keturis galimus OUTS derinius priskiria kintamajam outp1-outp4, o du galimus DIRS derinius-tiesioginiam ir tiesioginiam2. Šviesos diodai mirksi, eilučių skaitiklis padidinamas ir tas pats procesas vykdomas kiekvienoje iš keturių eilučių. Tai daug greičiau nei pirmoji vertėjo programa. Tai sakant, vis dar pastebimas mirgėjimas. Pažvelkite į vaizdo įrašą, fotoaparatas mirksi daug blogiau, bet supratote. Šios koncepcijos perkėlimas į daug greitesnį lustą, pvz., „PicMicro“ar AVR mikroschemą, įgalintų rodyti šiuos simbolius be pastebimo mirgėjimo.

7 žingsnis: kur eiti iš čia

Aš neturiu cnc malūno ar ėsdinimo reikmenų, kad galėčiau gaminti plokštes, todėl šio projekto nevedysiu. Jei turite malūną ir norite bendradarbiauti, kad judėtumėte į priekį, atsiųskite man žinutę. Man būtų malonu mokėti už medžiagas ir pristatymą, dar maloniau parodyti kažką gatavo projekto šiam projektui.

Kitos galimybės: 1. Perkelkite tai į kitą lustą. Šią matricos konstrukciją galima naudoti su bet kokiu lustu, kuriame yra 5 įvesties/išvesties kaiščiai, galintys trijų būsenų (kaiščiai, kurie gali būti dideli, žemi arba įvesties (didelė varža)). 2. Naudodami greitesnį lustą (galbūt AVR arba „picMicro“), galite padidinti mastelį. Turėdami 20 kontaktų lustą, galite naudoti 14 kaiščių, kad paleistumėte 8x22 ekraną, o likusius kaiščius gautumėte nuoseklias komandas iš kompiuterio ar kito valdiklio. Naudokite dar tris 20 kontaktų lustus ir galite turėti 8 x 88 dydžio slinkties ekraną, iš viso 11 simbolių vienu metu (žinoma, priklausomai nuo kiekvieno simbolio pločio). Sėkmės, pasilinksmink!

Rekomenduojamas: