Talaan ng mga Nilalaman:
- Mga Layunin
- Karanasan at Kasanayan
- Pagwawaksi at Kredito
- Hakbang 1: Mga Bahagi
- Listahan ng Mga Bahagi
- Pangkalahatang Bahagi
- Mga Tiyak na Bahaging Ginamit Dito
- Mga Tala Tungkol sa Mga Bahagi
- Hakbang 2: Ang Matrix
- Mga Pagsasaalang-alang sa Konstruksiyon
- Pagbuo ng Matrix
- Mahalaga
- Hakbang 3: Ang Control Hardware
- Pagbuo ng Control Hardware
- Hakbang 4: Software
- Ang daya
- Mga Registro ng Shift: Paano Magagawa
- Ang pagtugon sa display
- Programming
- Sa Pagkilos
- Hakbang 5: Mga Modular na Konsepto
- Matematika
- Mga Rehistro ng Cascading Shift
- Maramihang Mga Driver ng Hilera
- Halimbawa
- Hakbang 6: Konklusyon
- Mga Posibleng Karagdagan
- Hakbang 7: Sundin ang Up
- Mga Tampok ng Circuit Board
- Assembly
Video: LED Matrix Gamit ang Mga Rehistro ng Shift: 7 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
Ang itinuturo na ito ay sinadya upang maging isang mas kumpletong paliwanag kaysa sa iba na magagamit sa online. Kapansin-pansin, magbibigay ito ng higit na paliwanag sa hardware kaysa sa magagamit sa LED Marquee na itinuturo ng led555.
Mga Layunin
Itinuturo ng tagubilin na ito ang mga konseptong kasangkot sa mga rehistro ng shift at mga driver ng mataas na panig. Sa pamamagitan ng paglalarawan ng mga konseptong ito sa isang 8x8 LED matrix Inaasahan kong magbigay sa iyo ng mga tool na kinakailangan upang umangkop at palawakin sa laki at layout ng iyong mga tawag sa proyekto.
Karanasan at Kasanayan
Ire-rate ko ang proyektong ito na may katamtamang kahirapan:
- Kung mayroon ka nang karanasan sa mga microcontroller ng programa at nagtatrabaho sa mga LED na ang proyektong ito ay dapat na madali para sa iyo upang makumpleto at sukatin ang mas malaking mga arrays ng ilaw.
- Kung nagsisimula ka lamang sa mga microcontroller at na-flash ang isang LED o dalawa dapat mong makumpleto ang proyektong ito sa ilang tulong mula sa aming kaibigang google.
- Kung mayroon kang kaunti o walang karanasan sa mga microcontroller o programa na ito ay marahil lampas sa kung ano ang dapat mong makuha ang iyong sarili. Subukan ang ilang iba pang mga proyekto ng nagsisimula at bumalik kapag mayroon kang ilang higit pang mga karanasan sa pagsusulat ng mga programa para sa mga microcontroller.
Pagwawaksi at Kredito
Una, hindi ako isang electrical engineer. Kung nakakita ka ng isang bagay na mali, o hindi isang pinakamahusay na kasanayan, mangyaring ipaalam sa akin at gagawin ko ang pagwawasto. Gawin ito sa iyong sariling peligro! Dapat mong malaman kung ano ang iyong ginagawa o maaari kang maging sanhi ng pinsala sa iyong computer, iyong microcontroller, at kahit sa iyong sarili. Marami akong natutunan mula sa internet, partikular sa mga forum sa: https://www.avrfreaks.net Gumagamit ako isang font set na kasama ng ks0108 universal C library. Suriin ito dito:
Hakbang 1: Mga Bahagi
Listahan ng Mga Bahagi
Pangkalahatang Bahagi
Upang makagawa ng isang 8x8 grid ng LEDs at makontrol ang mga ito kakailanganin mo:
- 64 LEDs na iyong pinili
- 8 Mga resistor para sa mga LED
- 1 Pagrehistro ng shift para sa mga haligi
- 1 array ng Driver para sa mga row
- 8 Mga resistor para sa paglipat ng array ng driver
- 1 microcontroller
- 1 mapagkukunan ng orasan para sa microcontroller
- 1 prototyping board
- 1 power supply
- Wire ng hook-up
Mga Tiyak na Bahaging Ginamit Dito
Para sa itinuturo na ito ginamit ko ang sumusunod:
- 64 berdeng LEDs (Mouser bahagi # 604-WP7113GD)
- 8 220ohm 1/4 watt resistors para sa LEDs (Mouser bahagi # 660-CFS1 / 4CT52R221J)
- 1 HEF4794 LED driver na may shift register (Mouser part # 771-HEF4794BPN)
- 1 mic2981 High-Voltage High-Current Source Driver Array (Digikey bahagi # 576-1158-ND)
- 8 3.3kohm 1/4 watt resistors para sa paglipat ng driver array (bahagi ng Radio Shack # 271-1328)
- 1 Atmel ATmega8 microcontroller (Mouser bahagi # 556-ATMEGA8-16PU)
- 1 12MHz na kristal para sa mapagkukunan ng orasan ng microcontroller (Mouser bahagi # 815-AB-12-B2)
- 1 2200-hole prototyping board (bahagi ng Radio Shack # 276-147)
- Na-convert na suplay ng kuryente ng ATX: Tingnan ang Makatuturo na Ito
- Solid core 22-awg hook-up wire (Radio Shack bahagi # 278-1221)
- Solderless breadboard (Radio Shack bahagi # 276-169 (hindi na magagamit, subukan: 276-002)
- AVR Dragon (Mouser bahagi # 556-ATAVRDRAGON)
- Dragon Rider 500 ng Ecros Technologies: Tingnan ang Maituturo na Ito
Mga Tala Tungkol sa Mga Bahagi
Mga Driver ng Row at Column: Marahil ang pinakamahirap na bahagi ng proyektong ito ay ang pagpili ng mga driver ng hilera at haligi. Una, sa palagay ko ang isang karaniwang rehistro ng shift ng 74HC595 ay isang magandang ideya dito dahil hindi nila mahawakan ang uri ng kasalukuyang nais naming ipadala sa pamamagitan ng mga LED. Ito ang dahilan kung bakit pinili ko ang driver ng HEF4794 dahil madali nitong mapalubog ang kasalukuyang kasalukuyan kapag ang lahat ng 8 leds ay nasa isang hilera ay nakabukas. Ang rehistro ng shift ay naroroon sa mababang bahagi (ang ground pin ng leds). Kakailanganin namin ang isang drayber ng hilera na maaaring mapagkukunan ng sapat na kasalukuyang mag-string ng maraming mga haligi. Maaaring magbigay ang mic2981 ng hanggang sa 500mA. Ang nag-iisa lamang na bahagi na natagpuan ko na gumaganap ng gawaing ito ay ang UDN2981 (digikey part # 620-1120-ND) na parehong bahagi ng ibang tagagawa. Mangyaring magpadala sa akin ng isang mensahe kung alam mo ang iba pang mga driver ng mataas na panig na gagana nang maayos sa application na ito. LED Matrix: Ang matrix na ito ay 8x8 dahil ang mga driver ng hilera at haligi ay may 8 pin. Ang isang mas malaking LED array ay maaaring binuo sa pamamagitan ng pag-string ng maraming mga matrice nang magkasama at tatalakayin sa hakbang na "modular konsepto". Kung nais mo ang isang malaking array, mag-order ng lahat ng mga kinakailangang bahagi nang sabay-sabay. Mayroong 8x8, 5x7 at 5x8 LED matrices na magagamit sa isang maginhawang pakete. Ang mga ito ay dapat na madaling kapalit ng isang diy matrix. Ang Ebay ay isang mahusay na mapagkukunan para sa mga ito. Ang Mouser ay mayroong ilang 5x7 na yunit na magagamit tulad ng bahagi # 604-TA12-11GWA. Gumamit ako ng murang mga berdeng LEDs dahil naglalaro lang ako at masaya. Ang paggastos ng higit pa sa mataas na ningning, mataas na kahusayan na mga LED ay maaaring payagan kang makagawa ng mas kamangha-manghang hitsura na nakikita … sapat na para sa akin ito! Control Hardware: Ang matrix ay kinokontrol ng isang Atmel AVR microcontroller. Kakailanganin mo ang isang programmer para dito. Dahil prototyping ako Gumagamit ako ng Dragon Rider 500 kung saan nagsulat ako ng parehong mga instruksyon ng pagpupulong at paggamit. Ito ay isang madaling tool para sa prototyping at lubos kong inirerekumenda ito.
Hakbang 2: Ang Matrix
Itatayo ko ang aking sariling LED matrix para sa proyektong ito gamit ang 5mm leds at isang prototyping board mula sa Radio Shack. Dapat pansinin na maaari kang bumili ng 8x8 dot matrix led module mula sa maraming mga mapagkukunan, kabilang ang ebay. Dapat silang gumana nang maayos kasama ang itinuturo na ito.
Mga Pagsasaalang-alang sa Konstruksiyon
Alignment: Ang LEDS ay kailangang ihanay upang magkaharap sila sa parehong direksyon sa parehong anggulo. Natagpuan ko ang pinakamadaling pagpipilian para sa akin ay ilagay ang katawan ng LED flush sa board at hawakan ito doon ng isang maliit na piraso ng plexiglass at isang clamp. Naglagay ako ng ilang mga LED sa lugar ng ilang pulgada ang layo mula sa hilera na pinagtatrabahuhan ko upang matiyak na ang plexiglass ay kahanay ng prototyping board. Mga Rows at Column Kailangan namin magkaroon ng isang karaniwang koneksyon para sa bawat hilera pati na rin ang bawat haligi. Dahil sa aming pagpipilian ng driver ng row at haligi kailangan namin na magkaroon ng anode (positibong lead ng LED) na konektado sa pamamagitan ng row at ang cathode (negatibong lead ng LED) na konektado sa pamamagitan ng haligi. Control Wires Para sa prototype na ito gumagamit ako ng solid core (solong conductor) na hook-up wire. Napakadali nitong mai-interface sa isang solderless breadboard. Huwag mag-atubiling gumamit ng ibang uri ng konektor upang umangkop sa iyong proyekto.
Pagbuo ng Matrix
1. Ilagay ang unang haligi ng LEDS sa prototyping board.2. I-double check kung tama ang iyong polarity para sa bawat LED, napakahirap itong ayusin kung napagtanto mo ito sa paglaon. Parehong parehong mga lead ng LED sa board. Suriin upang matiyak na nakahanay ang mga ito nang tama (hindi sa mga kakatwang mga anggulo) at i-clip ang mga lead ng cathode. Siguraduhin na hindi mo mai-clip ang anode lead, kakailanganin namin iyon sa paglaon kaya't iwan mo lamang ito na nakaturo. Alisin ang pagkakabukod mula sa isang piraso ng solidong kawad na core. Ihihinang ang piraso ng kawad sa bawat katod sa kanan sa antas ng board.
- Inilagay ko ito sa bawat dulo pagkatapos ay bumalik at nagdagdag ng kaunting panghinang sa bawat kantong.
- Ang wire na ito ay dapat na tumakbo nakaraang iyong huling LED upang gawin para sa isang madaling interface kapag nagdagdag kami ng mga wire na kontrol.
5. Ulitin ang mga bahagi 1-4 hanggang sa mailagay mo ang lahat ng mga LED sa lugar at lahat ng mga haligi na bus ay na-solder.6. Upang lumikha ng isang hilera na bus, yumuko ang maraming mga anode lead sa isang 90 degree na anggulo upang hawakan nila ang iba pang mga lead ng anode sa parehong hilera.
- Mayroong detalyadong mga larawan ng ito sa ibaba.
- Mag-ingat na huwag hayaan ang mga ito na makipag-ugnay sa mga haligi na bus, lumilikha ng isang maikling circuit.
7. Paghinang ng mga lead sa bawat kantong at i-clip ang labis na mga lead ng anode.
Iwanan ang huling pagdikit ng anod na nakaraan ang huling LED. Gagamitin ito upang ikonekta ang mga wire ng control driver ng row
8. Ulitin ang mga bahagi 6 & 7 hanggang sa ang lahat ng mga hilera na bus ay na-solder.9. Ikabit ang mga wire na kontrol.
- Gumamit ako ng pulang solidong kawad na core para sa mga hilera at itim para sa mga haligi.
- Ikonekta ang isang kawad para sa bawat haligi at isa para sa bawat hilera. Madali itong magagawa sa pagtatapos ng bawat bus.
Mahalaga
Ang LED matrix na ito ay walang anumang kasalukuyang paglilimita sa mga resistors. Kung susubukan mo ito nang walang resistors marahil ay masusunog mo ang iyong mga LED at lahat ng gawaing ito ay magiging wala.
Hakbang 3: Ang Control Hardware
Kailangan naming kontrolin ang mga haligi at mga hilera ng aming LED matrix. Ang matrix ay itinayo upang ang Anodes (boltahe na bahagi ng LED) ay bumubuo ng mga hilera, at ang mga Cathode (ground side ng LED) ay bumubuo sa mga haligi. Nangangahulugan ito na ang aming driver ng hilera ay kailangang mag-source ng kasalukuyan at ang aming driver ng haligi ay kailangang lababo dito. Upang makatipid sa mga pin gumagamit ako ng isang rehistro sa paglilipat upang makontrol ang mga haligi. Sa ganitong paraan makokontrol ko ang isang halos walang limitasyong bilang ng mga haligi na may apat na mga microcontroller na pin lamang. Posibleng gumamit lamang ng tatlo kung ang Enable Output pin ay nakatali nang direkta sa boltahe. Napili ko ang driver ng HEF4794 LED na may shift register. Ito ay isang mas mahusay na pagpipilian kaysa sa isang pamantayan ng 74HC595 dahil madali nitong mapalubog ang kasalukuyang kasalukuyan kapag ang lahat ng 8 LEDs ay nasa isang oras. Sa mataas na bahagi (kasalukuyang mapagkukunan para sa mga hilera) Gumagamit ako ng isang mic2981. Ipinapakita ng eskematiko ang isang UDN2981, naniniwala akong mapapalitan ang dalawang ito. Ang driver na ito ay maaaring mapagkukunan ng hanggang sa 500mA ng kasalukuyang. Dahil nagmamaneho lamang kami ng 1 hilera nang paisa-isa ay nagbibigay ito ng maraming pagkakataon para sa pagpapalawak, hanggang sa 33 mga haligi para sa maliit na tilad na ito (higit pa sa hakbang na "modular na mga konsepto").
Pagbuo ng Control Hardware
Para sa itinuturo na ito ay na-breadboard ko lang ang circuit na ito. Para sa isang mas permanenteng solusyon ay gugustuhin mong mag-ukit ng iyong sariling circuit board o gumamit ng prototyping board.1. Row Driver
- Ilagay ang mic2981 (o UDN2981) sa breadboard
- Ikonekta ang Pin 9 sa Boltahe (nakalilito ito sa eskematiko)
- Ikonekta ang Pin 10 sa Ground (Nakakalito ito sa eskematiko)
- ipasok ang 3k3 resistors na kumokonekta sa mga pin 1-8
- Kumonekta mula sa Port D ng ATmega8 (PD0-PD8) sa 8 resistors
- Ikonekta ang 8 row control wires ng LED matrix sa pin 11-18 (tandaan na nakakonekta ko ang pinakamababang hilera ng LEDs sa Pin 18 at ang Pinakamataas na row sa Pin 11).
2. Driver ng Column
- Ilagay ang hef4794 sa breadboard
- Ikonekta ang Pin 16 sa boltahe
- Ikonekta ang Pin 8 sa lupa
- Ikonekta ang 220 ohm resistors sa Pins 4-7 at 11-14.
- Ikonekta ang mga wires ng control ng 8 haligi mula sa LED matrix sa 8 resistors na nakakonekta mo lamang.
- Ikonekta ang Pin1 (Latch) sa PC0 ng ATmega8
- Ikonekta ang Pin2 (Data) sa PC1 ng ATmega8
- Ikonekta ang Pin3 (Clock) sa PC2 ng ATmega8
- Ikonekta ang Pin15 (Paganahin ang Output) sa PC3 ng ATmega8
3. Clock Crystal
Ikonekta ang isang 12MHz na kristal at i-load ang mga capacitor tulad ng ipinakita sa eskematiko
4. ISP
Ikonekta ang header ng programa tulad ng ipinakita sa eskematiko
5. Pag-filter ng Capacitor at Pull-up risistor
- Mahusay na i-filter ang boltahe na ibinigay sa ATmega8. Gumamit ng isang 0.1uf capacitor sa pagitan ng Pin 7 & 8 ng ATmega8
- Ang pag-reset ng pin ay hindi dapat iwanang lumulutang dahil maaaring maging sanhi ito ng mga random na pag-reset. Gumamit ng isang risistor upang ikonekta ito sa boltahe, ang anumang tungkol sa 1k ay dapat na mabuti. Gumamit ako ng isang 10k risistor sa eskematiko.
6. Tiyaking gumagamit ka ng + 5v na kinokontrol na lakas. Nasa sa iyo ang disenyo ng regulator.
Hakbang 4: Software
Ang daya
Oo, tulad ng lahat, mayroong isang trick. Ang lansihin ay na mayroong hindi hihigit sa 8 LEDs na naiilawan sa isang pagkakataon. Upang ito ay gumana nang maayos, kailangan ng kaunting tuso na programa. Ang konsepto na pinili ko ay ang gumamit ng isang timer makagambala. Narito kung paano gumana ang display sa simpleng ingles:
- Ang timer ay binibilang hanggang sa isang tiyak na punto, kapag naabot ang gumagambala na gawain ay pinatakbo.
- Ang gawain na ito ang magpapasya kung aling hilera ang susunod na ipapakita.
- Ang impormasyon para sa susunod na hilera ay tiningnan mula sa isang buffer at inilipat sa driver ng haligi (ang impormasyong ito ay hindi "na-latched" kaya't hindi pa ito ipinapakita).
- Ang driver ng hilera ay nakasara, walang mga LED na kasalukuyang naiilawan.
- Ang driver ng haligi ay "naka-lat" na ginawa sa impormasyong inilipat namin sa dalawang hakbang na ang nakakalipas na kasalukuyang impormasyong ipapakita.
- Ang drayber ng hilera pagkatapos ay nagbibigay ng kasalukuyang sa bagong hilera na ipinapakita namin.
- Nagtatapos ang nakagawian na serbisyo na regular at ang programa ay bumalik sa normal na daloy hanggang sa susunod na makagambala.
Napakabilis nito nangyari. Ang makagambala ay itinapon bawat 1 mSec. Nangangahulugan ito na nire-refresh ang buong display tungkol sa isang beses bawat 8 mSec. Nangangahulugan ito ng isang rate ng pagpapakita ng halos 125Hz. Mayroong ilang pag-aalala tungkol sa ningning sapagkat mahalagang pinapatakbo namin ang mga LED sa isang 1/8 na cycle ng tungkulin (naka-off ang mga 7/8 ng oras). Sa aking kaso nakakakuha ako ng sapat na maliwanag na display na walang nakikitang flashing. Ang buong LED display ay nai-map sa isang array. Sa pagitan ng mga pagkagambala, ang array ay maaaring mabago (maging maingat sa pagiging atomiko) at lilitaw sa display habang susunod itinuturo ito. Isinama ko ang source code (nakasulat sa C at pinagsama sa AVR-GCC) pati na rin ang hex file sa programa nang direkta. Nagkomento ako ng lahat ng code kaya dapat mo itong magamit upang malinis ang anumang mga katanungan tungkol sa kung paano makakuha ng data sa shift register at kung paano gumagana ang pag-refresh ng row. Mangyaring tandaan na gumagamit ako ng isang font file na kasama ng ks0108 unibersal na C library. Ang library na iyon ay matatagpuan dito:
Mga Registro ng Shift: Paano Magagawa
Nagpasya akong magdagdag ng kaunti tungkol sa kung paano magprogram sa mga shift registro. Inaasahan kong nililimas nito ang mga bagay para sa mga hindi pa nagtrabaho sa kanila dati. Ang ginagawa nila Sa kasong ito, mayroong isang data wire na tumatagal sa data at 8 mga pin na kinokontrol depende sa kung anong data ang natanggap. Upang gawing mas mahusay ang mga bagay, mayroong isang outpin para sa bawat rehistro ng shift na maaaring konektado sa input pin ng isa pang rehistro ng shift. Ito ay tinatawag na cascading at ginagawang potensyal ang pagpapalawak ng isang halos walang limitasyong pag-asa. Ang mga rehistro ng Control PinsShift ay mayroong 4 control pin:
- Latch - Sinasabi ng pin na ito ang rehistro ng paglilipat kung oras na upang lumipat sa bagong ipinasok na data
- Data - Ang mga 1 at 0 ay nagsasabi sa rehistro ng paglilipat kung anong mga pin upang maisaaktibo ang natanggap sa pin na ito.
- Clock - Ito ay isang pulso na ipinadala mula sa microcontroller na nagsasabi sa rehistro ng shift na kumuha ng pagbabasa ng data at lumipat sa susunod na hakbang sa proseso ng komunikasyon
- Paganahin ang Output - Ito ay isang on / off switch, Mataas = Bukas, Mababa = Naka-off
Ginagawa itong gawin ang iyong pag-bid: Narito ang isang kurso sa pag-crash sa pagpapatakbo ng mga pin ng kontrol sa itaas: Hakbang 1: Itakda ang Mababang Latch, Data, at Clock
Ang pagtatakda ng mababang Latch ay nagsasabi sa rehistro ng paglilipat na susulatin namin dito
Hakbang 2: Itakda ang Pin ng data sa halaga ng lohika na nais mong ipadala sa Shift RegisterStep 3: Itakda ang Clock pin na mataas, na sinasabi sa Shift Register na basahin sa kasalukuyang halaga ng Data pin
Ang lahat ng iba pang mga halagang kasalukuyang nasa Shift Register ay lilipat ng 1 lugar, na nagbibigay ng puwang para sa kasalukuyang halaga ng lohika ng Data pin
Hakbang 4: Itakda ang Clock pin Mababang at ulitin ang mga hakbang 2 at 3 hanggang sa maipadala ang lahat ng data sa rehistro ng shift.
Dapat itakda ang pin na orasan nang mababa bago baguhin sa susunod na Halaga ng data. Ang pag-toggle ng pin na ito sa pagitan ng mataas at mababa ay ang lumilikha ng "orasan ng pulso" na kailangang malaman ng rehistro ng shift kung kailan lilipat sa susunod na hakbang sa proseso
Hakbang 5: Itakda ang mataas na Latch
Sinasabi nito ang rehistro ng paglilipat upang kunin ang lahat ng data na inilipat at gamitin ito upang buhayin ang mga output pin. Nangangahulugan ito na hindi ka makakakita ng data dahil lumilipat ito; walang pagbabago sa mga output pin na magaganap hanggang sa ang Latch ay maitakda nang mataas
Hakbang 6: Itakda ang Mataas na Paganahin ang Output
- Walang pin output hanggang ang Enable Output ay nakatakda sa mataas, hindi mahalaga kung ano ang nangyayari sa iba pang tatlong mga control control.
- Ang pin na ito ay maaaring laging iwanang mataas kung nais mo
Mayroong dalawang mga pin na maaari mong gamitin para sa cascading, Os at Os1. Ang Os ay para sa mabilis na tumataas na mga orasan at ang Os1 ay para sa mabagal na pagtaas ng mga orasan. I-hook ang pin na ito sa data pin ng susunod na rehistro ng paglilipat at ang overflow mula sa chip na ito ay ipapasok sa susunod. Katapusan ng pag-update
Ang pagtugon sa display
Sa halimbawa ng programa lumikha ako ng isang hanay ng 8 bytes na tinatawag na row_buffer . Ang bawat byte ay tumutugma sa isang hilera ng 8x8 display, ang row 0 ay ang ilalim at ang row 7 ang nasa itaas. Ang hindi gaanong makabuluhang piraso ng bawat hilera ay nasa kanan, ang pinaka-makabuluhang piraso sa kaliwa. Ang pagbabago ng display ay kasing dali ng pagsulat ng isang bagong halaga sa array ng data na iyon, ang nakagagambala na gawain sa serbisyo ay nangangalaga sa pag-refresh ng display.
Programming
Hindi tatalakayin nang detalyado ang pag-program dito. Babalaan ko kayo na huwag gumamit ng isang cable cable sa DAPA sapagkat naniniwala akong hindi mo mai-program ang maliit na tilad sa sandaling ito ay tumatakbo sa 12MHz. Ang lahat ng iba pang karaniwang mga programmer ay dapat na gumana (STK500, MKII, Dragon, Parallel / Serial programmer, atbp.). Mga piyus: Siguraduhin na i-program ang mga piyus upang magamit ang 12MHz crystalhfuse: 0xC9lfuse: 0xEF
Sa Pagkilos
Kapag na-program mo ang chip dapat ipakita ng display ang isang "Hello World!". Narito ang isang video ng LED matrix sa mga pagkilos. Ang kalidad ng video ay medyo mababa habang ginawa ko ito sa tampok na video ng aking digital camera at hindi isang tamang video o webcam.
Hakbang 5: Mga Modular na Konsepto
Ang proyekto na ito ay nasusukat. Ang tanging tunay na naglilimita kadahilanan ay kung gaano karaming kasalukuyang maaaring magbigay ng iyong supply ng kuryente. (Ang iba pang katotohanan ay kung gaano karaming mga LEDs at rehistro ang mga shifter na magagamit mo).
Matematika
Nagmamaneho ako ng mga LED sa halos 15mA (5V-1.8vDrop / 220ohms = 14.5mA). Nangangahulugan ito na maaari akong magmaneho ng hanggang sa 33 mga haligi gamit ang mic2981 driver (500mA / 15mA = 33.3). Nahahati sa pamamagitan ng 8 maaari nating makita na pinapayagan kaming mag-string ng 4 na rehistro sa paglilipat. Isaalang-alang din na hindi mo kailangang maabot ang lahat ng 32 mga haligi mula sa kaliwa hanggang kanan. Maaari kang lumikha ng isang 16x16 array na wired sa parehong paraan na nais mong isang 8x32 array. Ito ay matutugunan sa pamamagitan ng paglilipat sa 4 bytes …. ang unang dalawa ay lilipat hanggang sa mga leds para sa ika-9 na hilera, ang pangalawang dalawang byte ay lilipat sa unang hilera. Ang parehong mga hilera ay mapagkukunan ng isang pin sa row driver.
Mga Rehistro ng Cascading Shift
Ang ginamit na mga register sa shift ay cascading shift register. Nangangahulugan ito na kapag lumipat ka sa data, lilitaw ang overflow sa Os pin. Naging kapaki-pakinabang ang isang bilang isang hanay ng mga rehistro ng shift ay maaaring konektado sa bawat isa, Os pin sa Data pin, pagdaragdag ng 8 mga haligi sa bawat bagong maliit na tilad. Ang lahat ng mga rehistro ng shift ay kumokonekta sa parehong mga Latch, Clock, at Paganahin ang Mga pin ng output ang microcontroller. Ang "cascading" na epekto ay nilikha kapag ang Os ng unang rehistro ng shift ay konektado sa Data pin ng pangalawa. Ang programa ay kailangang baguhin upang ipakita ang tumaas na bilang ng mga haligi. Ang parehong buffer na nag-iimbak ng impormasyon at ang pagpapaandar na nagpapalipat-lipat ng impormasyon para sa bawat haligi ay kailangang i-update upang maipakita ang tunay na bilang ng mga haligi. Ang isang eskematiko nito ay ibinibigay sa ibaba bilang isang halimbawa.
Maramihang Mga Driver ng Hilera
Ang hilera driver (mic2981) ay maaaring mapagkukunan ng sapat na kasalukuyang upang humimok ng 32 mga haligi. Paano kung nais mo ng higit sa 32 mga haligi? Dapat ay posible na gumamit ng maraming mga driver ng hilera nang hindi gumagamit ng maraming mga microcontroller pin. Kailangan namin ang mga driver ng hilera upang makunan ng sapat na kasalukuyang upang magaan ang mga LED. Kung gumagamit ka ng mas maraming mga haligi kaysa sa posible na mag-iilaw nang sabay-sabay, ang mga driver ng row ng karagdagan ay maaaring magbigay ng kinakailangang kasalukuyang. Ang parehong mga input pin mula sa microcontroller ay ginagamit kaya hindi na kailangang baguhin ang pag-scan ng mga hilera. Sa madaling salita, kinokontrol ng bawat driver ang mga hilera para sa isang 8x32 block. Kahit na ang 64 na mga haligi ay maaaring may parehong paglalagay ng hilera ng PISIKAL, hinahati namin ang mga bus ng hilera sa dalawa, gamit ang isang driver para sa 8 mga hilera ng unang 32 haligi, at isang pangalawang driver para sa 8 mga hilera ng pangalawang 32 mga haligi at iba pa. Ang isang eskematiko nito ay ibinibigay sa ibaba bilang isang halimbawa. Potensyal na Maling hakbang: 1. Huwag gumamit ng maraming mga driver ng hilera na may parehong bilang ng mga haligi. Ang paggawa nito ay nangangahulugang ang bawat pin na rehistro ng paglilipat ay magdadala ng higit sa isang LED nang paisa-isa.2. Dapat ay mayroon kang isang hanay ng 8 resistors (3k3) para sa bawat driver ng hilera, ang isang hanay para sa maraming mga driver ng hilera ay hindi gagana dahil hindi ito magbibigay ng kinakailangang kasalukuyang upang ilipat ang mga gate.
Halimbawa
Napagpasyahan kong palawakin ang matrix na binuo ko kanina. Nagdagdag ako ng 7 higit pang mga hilera para sa isang kabuuang 15 dahil iyon lang ang maaari kong magkasya sa protoboard na ito. Nalaman ko rin ang tungkol sa isang paligsahan na ginagawa ng Instructables na tinatawag na "Let it Glow". Narito ang isang video ng aking pagkuha sa na. Muli, ang digital camera na ginamit ko upang kunin ang video ay hindi ginagawang hustisya. Mukha itong mahusay sa mata ng tao, lalo na kung saan ang lahat ng mga LED flash, ngunit hindi gaanong maganda sa video. Tangkilikin: Ang source code para sa mas malaking display na ito ay kasama sa ibaba.
Hakbang 6: Konklusyon
Mga Posibleng Karagdagan
Iniwan ng I2CI ang Dalawang Wire Interface (I2C) na mga pin na hindi ginagamit sa disenyo na ito. Mayroong maraming mga kagiliw-giliw na mga prospect na maaaring magamit ang dalawang mga pin. Ang pagdaragdag ng isang I2C EEPROM ay magpapahintulot sa pag-iimbak ng mas malaking mga mensahe. Mayroon ding pag-asam ng pagdidisenyo ng programa upang gawin ang mega8 sa isang katugmang display driver ng I2C. Bubuksan nito ang posibilidad ng pagkakaroon ng isang USB na paganahin ang aparato upang ipakita ang data sa iyong LED array sa pamamagitan ng pagpasa sa I2C bus. InputMaraming natitirang mga pin na maaaring magamit para sa mga pindutan o isang IR receiver. Papayagan nito ang mga mensahe na mai-program sa pamamagitan ng isang menu system. Ipakita Para sa pagtuturo na ito ipinatupad ko lamang ang isang pares ng mga pagpapaandar sa pagpapakita. Ang isa ay nagsusulat lamang ng mga character sa display, ang iba pang mga scroll character sa display. Ang mahalagang bagay na dapat tandaan ay ang nakikita mo sa mga ilaw ay kinakatawan sa isang array ng data. Kung makakaisip ka ng mga paraan ng cleaver upang baguhin ang array ng data, ang mga ilaw ay magbabago sa parehong paraan. Kasama sa ilang mga nakakaakit na pagkakataon ang paglikha ng isang meter ng graphing mula sa mga haligi. Maaari itong magamit bilang isang signal analyzer na may isang stereo. Maaaring i-implement ang pag-scroll mula sa itaas pababa o pababa, kahit kaliwa hanggang kanan. Good luck, magsaya ka!
Hakbang 7: Sundin ang Up
Matapos hayaan ang circuit ng controller na umupo sa breadboard nang maraming buwan sa wakas ay dinisenyo ko at nakaukit ang ilang mga circuit board upang magkasama ang prototype na ito. Naging mahusay ang lahat, sa palagay ko walang anumang bagay na nagawa kong iba.
Mga Tampok ng Circuit Board
- Ang mga rehistro ng shift ay nasa magkakahiwalay na mga board na maaaring maging daisy na kadena ng magkasama upang madagdagan ang laki ng display.
- Ang Controller board ay mayroong sariling power regulator kaya't maaari itong patakbuhin ng anumang mapagkukunan ng kuryente na nagbibigay ng 7v-30v (9v baterya o 12v bench supply na parehong gumagana para sa akin).
- Kasama ang 6 pin ISP header kaya ang microcontroller ay maaaring muling maprograma nang hindi inaalis ito mula sa board.
- Magagamit ang 4-pin na header para sa hinaharap na paggamit ng I2C bus. Maaari itong magamit para sa isang eeprom upang mag-imbak ng maraming mga mensahe o kahit na gawin itong isang aparato ng alipin na kinokontrol ng isa pang microcontroller (RSS ticker kahit sino?)
- 3 pansamantalang mga pindutan ng itulak ang kasama sa disenyo. Maaari kong sabunutan ang firmware sa hinaharap upang isama ang paggamit ng mga pindutan na ito.
Assembly
Bigyan mo ako ng plexiglass, mga bracket ng anggulo, 6x32 machine screws, nut, at washers, pati na rin ang isang tap set sa mga butas ng thread at makakalikha ako ng anuman.
Pangalawang Gantimpala sa Let It Glow!
Inirerekumendang:
7 Segment sa Display Counter Sa Shift Rehistro: 3 Mga Hakbang
7 Segment Display Counter With Shift Register: Ito ang perpektong proyekto ng nagsisimula kung natututunan mo lamang kung paano gumamit ng isang shift register at kung paano ito nagpapatakbo ng code. Bilang karagdagan, ang proyektong ito ay isang mahusay na pagsisimula kung bago ka sa pagpapakita ng 7 segment. Bago mo simulan ang proyektong ito siguraduhin na
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Senyas na Pagliko: 5 Hakbang (na may Mga Larawan)
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Sinyales na Pag-turn: Gustong-gusto kong sumakay ng bisikleta, karaniwang ginagamit ko ito upang makarating sa paaralan. Sa oras ng taglamig, madalas na madilim pa rin sa labas at mahirap para sa ibang mga sasakyan na makita ang mga signal ng aking kamay na lumiliko. Samakatuwid ito ay isang malaking panganib dahil maaaring hindi makita ng mga trak na nais kong
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c
Paggamit ng isang Dot Matrix LED Na May Arduino at Shift Rehistro: 5 Hakbang
Paggamit ng isang Dot Matrix LED Na may isang Arduino at Shift Rehistro: Ang Siemens DLO7135 Dot matrix LED ay isang kamangha-manghang piraso ng optoelectronics. Siningil ito bilang isang 5x7 Dot Matrix Intelligent Display (r) na may Memory / Decoder / Driver. Kasabay ng memorya na iyon, mayroon itong nakatakdang 96-character na display ng ASCII na may itaas at mas mababang
Ang 74HC164 Shift Rehistro at Iyong Arduino: 9 Mga Hakbang
Ang 74HC164 Shift Rehistro at Iyong Arduino: Ang mga rehistro ng shift ay isang napakahalagang bahagi ng digital na lohika, kumikilos sila bilang pandikit sa pagitan ng mga parallel at serial na mundo. Binabawasan nila ang mga bilang ng kawad, paggamit ng pin at kahit na nakakatulong sa pag-load mula sa iyong cpu sa pamamagitan ng pagiging maimbak ng kanilang data. Iba't iba ang dumating