Talaan ng mga Nilalaman:

5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing: 7 Hakbang
5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing: 7 Hakbang

Video: 5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing: 7 Hakbang

Video: 5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing: 7 Hakbang
Video: What Is It? Game of Life on Led Matrix 5x4 Homemade Desktop Gadget 2024, Hulyo
Anonim
5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing
5x4 LED Display Matrix Gamit ang isang Pangunahing Stamp 2 (bs2) at Charlieplexing

Mayroon bang isang Pangunahing Stamp 2 at ilang labis na mga LED na nakaupo sa paligid? Bakit hindi laruin ang konsepto ng charlieplexing at lumikha ng isang output gamit ang 5 mga pin lamang.

Para sa pagtuturo na ito ay gumagamit ako ng BS2e ngunit ang sinumang miyembro ng pamilya BS2 ay dapat na gumana.

Hakbang 1: Charlieplexing: Ano, Bakit, at Paano

Alisin muna natin ang bakit. Bakit gumamit ng charlieplexing sa isang Pangunahing Stamp 2? --- Katibayan ng konsepto: Alamin kung paano gumagana ang charlieplexing at alamin ang isang bagay tungkol sa BS2. Maaari itong maging kapaki-pakinabang sa akin sa paglaon gamit ang mas mabilis na 8-pin chips (5 lamang sa mga ito ang i / o).--- Kapaki-pakinabang na dahilan: Talaga walang. Ang BS2 ay masyadong mabagal upang ipakita nang walang kapansin-pansin na pagkutitap. Ano ang charlieplexing? --- Ang Charlieplexing ay isang paraan ng pagmamaneho ng isang malaking bilang ng mga LED na may isang maliit na bilang ng mga microprocessor i / o pin. Natutunan ko ang tungkol sa charlieplexing mula sa www.instrukturable.com at maaari mo ring: Charlieplexing LEDs- Ang teorya Paano magmaneho ng maraming mga LED mula sa ilang mga pin ng microcontroller. Gayundin sa wikipedia: CharlieplexingPaano ako makakapag-drive ng 20 leds na may 5 i / o pin? --- Mangyaring basahin ang tatlong mga link sa ilalim ng "Ano ang charlieplexing?". Na nagpapaliwanag nito nang mas mahusay kaysa sa dati kong magagawa. Ang Charlieplexing ay naiiba mula sa tradisyunal na multiplexing na nangangailangan ng isang i / o pin para sa bawat hilera at bawat haligi (iyon ay magiging isang kabuuang 9 i / o mga pin para sa isang 5/4 na display).

Hakbang 2: Hardware at Skema

Hardware at Skematika
Hardware at Skematika

Listahan ng mga materyales: 1x - Pangunahing Stamp 220x - light emitting diode (LEDs) ng parehong uri (kulay at boltahe na drop) 5x - resistors (tingnan sa ibaba tungkol sa halaga ng risistor) Auxiliary / Opsyonal: Paraan ng pagprograma ng iyong BS2Momentary push button bilang isang reset switch6v -9vPower supply depende sa iyong bersyon ng BS2 (basahin ang iyong manu-manong) Ang Skematika: Ang eskematiko na ito ay isinasama kasama ang mekanikal na layout. Makikita mo ang grid ng mga LED na naka-set up sa kaliwa, ito ang oryentasyon kung saan nakasulat ang code na BS2. Pansinin na ang bawat pares ng LEDs ay may anode na konektado sa cathode ng isa pa. Pagkatapos ay nakakonekta ang mga ito sa isa sa limang mga i / o pin. Mga Halaga ng Resistor: Dapat mong kalkulahin ang iyong sariling mga halaga ng risistor. Suriin ang datasheet para sa iyong mga LED o gamitin ang setting ng LED sa iyong digital multimeter upang makita ang drop ng boltahe ng iyong mga LED. Gumawa tayo ng ilang mga kalkulasyon: Supply Voltage - Voltage Drop / Desired Current = Resistor Value Ang BS2 ay nagbibigay ng 5v na kinontrol na lakas, at maaaring mapagkukunan ng 20ma ng kasalukuyang Ang aking mga LED ay may isang drop na 1.6v at nagpapatakbo sa 20ma.5v - 1.6v /.02amps = 155ohms Upang maprotektahan ang iyong BS2 dapat mong gamitin ang susunod na mas mataas na halaga ng resistor mula sa iyong nakukuha sa pagkalkula, sa kasong ito naniniwala akong magiging 180ohms ito. Gumamit ako ng 220ohms dahil ang aking development board ay may halagang resistor na nakapaloob dito para sa bawat i / o pin. TANDAAN: Naniniwala ako na dahil may risistor sa bawat pin epektibo itong pagdodoble ng paglaban sa bawat humantong dahil ang isang pin ay V + at ang isa pa ay Gnd. Kung ito ang kaso dapat mong bawasan ng kalahati ang mga halaga ng risistor. Ang masamang epekto ng masyadong mataas na halaga ng resistor ay isang dimmer LED. Maaari bang patunayan ito ng isang tao at mag-iwan sa akin ng PM o magkomento upang ma-update ko ang impormasyong ito? Programming: Gumagamit ako ng isang development board na mayroong isang konektor ng DB9 upang mai-program ang chip sa mismong board. Ginagamit ko rin ang chip na ito sa aking walang solder na breadboard at may kasamang header na In Circuit Serial Programming (ICSP). Ang header ay 5 mga pin, mga pin 2 hanggang 5 kumonekta sa mga pin 2-5 sa isang DB9 serial cable (ang Pin 1 ay hindi ginagamit). Mangyaring tandaan na upang magamit ang ICSP header pin 6 at 7 sa DB9 cable dapat na konektado sa bawat isa. I-reset: Ang isang pansamantalang pindutan ng push reset ay opsyonal. Hinihila lamang nito ang pin 22 sa lupa kapag itinulak.

Hakbang 3: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Ngayon ay oras na upang maitayo ang matrix sa isang breadboard. Gumamit ako ng isang terminal strip upang ikonekta ang isang binti mula sa bawat pinangunahan na pares magkasama at isang maliit na jumper wire upang ikonekta ang iba pang mga binti. Detalyado ito sa closeup na larawan at ipinaliwanag nang malalim dito: 1. I-orient ang iyong breadboard upang tumugma sa mas malaking larawan2. Ilagay ang LED 1 kasama ang Anode (+) papunta sa iyo at sa Cathode (-) na malayo sa iyo.3. Ilagay ang LED 2 sa parehong oryentasyon sa Anode (+) sa pagkonekta ng strip ng terminal ng LED 1 cathode.4. Gumamit ng isang maliit na wire ng jumper upang ikonekta ang Anode ng LED 1 sa Cathode ng LED 2.5. Ulitin hanggang ang bawat pares ng LED ay naidagdag sa board. Gumagamit ako ng kung ano ang karaniwang mga strip ng bus ng kuryente ng board ng tinapay bilang mga strip ng bus para sa mga pin ng BS2 I / O. Dahil mayroon lamang 4 na mga bus strip na gumagamit ako ng isang terminal strip para sa P4 (ang ikalimang I / O na koneksyon). Makikita ito sa mas malaking larawan sa ibaba.6. Ikonekta ang terminal strip para sa LED 1 cathode sa P0 bus strip. Ulitin para sa bawat kakatwang bilang na LED na pinapalitan ang tamang P * para sa bawat pares (tingnan ang eskematiko).7. Ikonekta ang terminal strip para sa LED 2 cathode sa P1 bus strip. Ulitin para sa bawat kakatwang numero na LED na pamalit sa tamang P * para sa bawat pares (tingnan ang eskematiko).8. Ikonekta ang bawat bus strip sa naaangkop na I / O pin sa BS2 (P0-P4).9. Suriin ang lahat ng mga koneksyon upang matiyak na tumutugma sila sa eskematiko.10. Ipagdiwang. TANDAAN: Sa malapit na makikita mo na hindi lilitaw na sinundan ko ang hakbang 7 habang ang koneksyon sa pangalawang I / O na pin ay nasa Anode ng mga kakaibang may bilang na mga LED. Tandaan na ang Cathode ng pantay na may bilang na mga LED ay konektado sa Anode ng mga kakatwang bilang na LEDs kaya't ang koneksyon ay pareho sa alinmang paraan. Kung malito ka ng tala na ito, huwag mo nalang pansinin.

Hakbang 4: Mga Pangunahing Kaalaman sa Programming

Para sa gumana ang charlieplexing binuksan mo ang isa lamang na paisa-isa. Upang gumana ito sa aming BS2 kailangan namin ng dalawang pangunahing mga hakbang: 1. Itakda ang mga mode ng output para sa mga pin sa pamamagitan ng paggamit ng OUTS command.2. Sabihin sa BS2 kung aling mga pin ang gagamitin bilang mga output gamit ang utos ng DIRS Gumagana ito dahil masasabi sa BS2 kung aling mga pin ang maghimok ng mataas at mababa at maghihintay na gawin ito hanggang sa tukuyin mo kung aling mga pin ang output. Tingnan natin kung ang mga bagay ay nai-hook up nang tama ng sinusubukan lamang upang pumikit ang LED 1. Kung titingnan mo ang eskematiko maaari mong makita na ang P0 ay naka-hook up sa Cathode (-) ng LED 1 at P1 ay naka-hook up sa Anode ng parehong LED. Nangangahulugan ito na nais naming magmaneho ng P0 mababa at ang taas ng P1. Maaari itong magawa tulad:) Inimbak ng BS2 ang impormasyong iyon ngunit hindi ito kikilos hanggang sa ideklara namin kung aling mga pin ang output. Ang hakbang na ito ay susi dahil dalawang pin lamang ang dapat na output nang sabay. Ang natitira ay dapat na mga input, na nagtatakda ng mga pin sa High Impedance mode upang hindi sila lumubog ng anumang kasalukuyang. Kailangan nating magmaneho ng P0 at P1 kaya itatakda natin ang mga iyon sa mga output at ang natitira sa mga input tulad nito: "DIRS =% 00011". (Ipinapahiwatig ng% ang isang binary number na susundan. Ang pinakamababang binary digit ay palaging nasa kanan. 0 = INPUT, 1 = OUTPUT) Isama natin iyan sa ilang kapaki-pakinabang na code: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS =% 11110 'Drive P0 low and P1-P4 high DIRS =% 00011' Set P0- P1 bilang Mga Output at P2-P4 bilang Mga Input PAUSE 250 'I-pause para sa LED na manatili sa DIRS = 0' Itakda ang lahat ng mga pin sa Input. Patayin nito ang LED PAUSE 250 'I-pause para sa LED upang manatiling offLOOP

Hakbang 5: Ang Ikot ng Pag-unlad

Ngayon nakita namin ang isang oras ng pagtatrabaho ng pin upang matiyak na gumagana silang lahat.20led_Zig-Zag.bse Ang nakalakip na code na ito ay dapat na ilaw ang bawat isa sa 20 LEDS sa isang pattern ng zig-zag. Mapapansin mo na pagkatapos ng bawat pin ay may ilaw na bin ay gumagamit ako ng "DIRS = 0" upang ibalik ang lahat ng mga pin sa mga input. Kung binago mo ang OUTS nang hindi pinapatay ang mga output pin maaari kang makakuha ng ilang "ghosting" kung saan ang isang humantong na hindi dapat naiilawan ay maaaring magpikit sa pagitan ng mga cycle. Kung binago mo ang variable ng W1 sa simula ng code na ito sa "W1 = 1" doon ay magiging isang millisecond pause lamang sa pagitan ng bawat LED blink. Magdudulot ito ng isang pagtitiyaga ng pangitain (POV) na epekto na ginagawang tulad ng lahat ng mga LED ay naiilawan. Ito ay may epekto ng paggawa ng mga dims ng LED ngunit ang kakanyahan ng kung paano namin ipapakita ang mga character sa matrix na ito.20led_Interpreter_Proto.bse Napagpasyahan ko sa puntong ito na kailangan kong bumuo ng ilang uri ng code ng interpreter upang i-on ang mga nakatutuwang kumbinasyon na kinakailangan upang magaan ang ilaw Mga LED sa isang magagamit na pattern. Ang file na ito ang aking unang pagtatangka. Makikita mo na sa ilalim ng file ang mga character ay nakaimbak sa apat na linya ng 5 digit na binary. Ang bawat linya ay binabasa, na-parse, at isang subroutine ay tinatawag na sa tuwing kailangang maiilawan ang isang humantong. Gumana ang code na ito, pagbibisikleta sa pamamagitan ng mga numerong 1-0. Kung susubukan mong patakbuhin ito mapansin na ito ay sinalanta ng isang napakabagal na rate ng pag-refresh na naging sanhi ng mga character na mag-flash ng halos masyadong mabagal upang makilala. Ang code na ito ay masama sa maraming kadahilanan. Una, ang limang mga digit ng binary ay tumatagal ng mas maraming kuwarto sa EEPROM bilang 8 na digit ng binary tulad ng lahat ng impormasyon ay nakaimbak sa mga pangkat ng apat na piraso. Pangalawa, ang Piling KASO na ginamit upang magpasya kung aling pin ang kailangang ilawan ay nangangailangan ng 20 kaso. Ang BS2 ay limitado sa 16 na kaso bawat SELECT na operasyon. Nangangahulugan ito na kailangan kong mag-hack sa paligid ng limitasyon na iyon sa isang pahayag na IF-THEN-ELSE. Dapat mayroong isang mas mahusay na paraan. Matapos ang ilang oras na paggalaw ng ulo natuklasan ko ito.

Hakbang 6: Isang Mas Mahusay na Interpreter

Ang bawat hilera ng aming matrix ay binubuo ng 4 LEDs, ang bawat isa ay maaaring naka-on o naka-off. Ang BS2 ay nag-iimbak ng impormasyon sa EEPROM nito sa mga pangkat ng apat na piraso. Ang ugnayan na iyon ay dapat gawing mas madali ang mga bagay sa amin. Bilang karagdagan sa katotohanang ito, ang apat na piraso ay tumutugma sa decimal na numero na 0-15 para sa isang kabuuang 16 na posibilidad. Ginagawa nitong mas madali o SELECT CASE. Narito ang bilang ng 7 na nakaimbak sa EEPROM: '7% 1111,% 1001,% 0010,% 0100,% 0100, Ang bawat hilera ay may isang desimal na katumbas ng 0-15 kaya't nabasa namin ang isang hilera mula sa memorya at pakainin ito nang direkta sa pag-andar ng SELECT CASE. Nangangahulugan ito na ang nababasa ng tao na binary matrix na ginamit upang gawin ang bawat character (1 = led on, 0 = led off) ay ang susi para sa interpreter. Upang magamit ang parehong SELECT CASE para sa bawat isa sa 5 mga hilera na ginamit ko ang isa pang piling kaso upang itakda ang DIRS at OUTS bilang mga variable. Nabasa ko muna sa bawat isa sa limang mga linya ng character sa mga variable na ROW1-ROW5. Tinatawagan ng pangunahing programa ang subroutine upang ipakita ang character. Ang subroutine na ito ay tumatagal ng unang hilera at nagtatalaga ng apat na posibleng mga kumbinasyon ng OUTS sa variable outp1-outp4 at ang dalawang posibleng DIRS na kombinasyon sa direc1 at direc2. Ang mga LED ay na-flash, ang row counter ay nadagdagan, at ang parehong proseso ay pinapatakbo para sa bawat isa sa iba pang apat na mga hilera. Ito ay mas mabilis kaysa sa unang programa ng interpreter. Sinasabi na, may kapansin-pansin pa ring kurap. Tingnan ang video, pinapalala ng camera ang flicker ngunit nakuha mo ang ideya. Ang paglalagay ng konseptong ito sa isang mas mabilis na maliit na tilad, tulad ng isang picMicro o isang AVR chip ay magbibigay-daan sa pagpapakita ng mga character na ito nang walang kapansin-pansin na pagkutitap.

Hakbang 7: Saan Pupunta Dito

Wala akong isang cnc mill o mga kagamitan sa pag-ukit upang makagawa ng mga circuit board kaya't hindi ako magiging kable ng proyektong ito. Kung mayroon kang isang galingan at interesado sa pakikipagtulungan upang sumulong mula rito, magpadala sa akin ng isang mensahe. Masaya akong magbayad para sa mga materyales at magpadala ng mas masaya upang maipakita ang isang bagay ng isang natapos na produkto para sa proyektong ito.

Iba Pang Mga Posibilidad: 1. Port this to another chip. Ang disenyo ng matrix na ito ay maaaring magamit sa anumang chip na mayroong 5 i / o mga pin na magagamit na may kakayahang tri-state (mga pin na maaaring maging mataas, mababa, o input (mataas na impedance)). 2. Gamit ang isang mas mabilis na maliit na tilad (marahil AVR o picMicro) maaari mong dagdagan ang sukat. Sa isang 20pin chip maaari kang gumamit ng 14 na pin upang charlieplex isang 8x22 display at gamitin ang natitirang mga pin upang makatanggap ng mga serial command mula sa isang computer o ibang Controller. Gumamit ng tatlong higit pang 20-pin chips at maaari kang magkaroon ng isang pag-scroll display na 8x88 para sa isang kabuuang 11 mga character nang sabay-sabay (depende sa lapad ng bawat karakter syempre). Good luck, magsaya ka!

Inirerekumendang: