Orodha ya maudhui:

Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register: Hatua 5
Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register: Hatua 5

Video: Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register: Hatua 5

Video: Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register: Hatua 5
Video: ESP32 Tutorial 8 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learnig kit 2024, Novemba
Anonim
Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register
Kutumia Dot Matrix LED Pamoja na Arduino na Shift Register
Kutumia LED ya Matrix ya Dot Na Rejista ya Arduino na Shift
Kutumia LED ya Matrix ya Dot Na Rejista ya Arduino na Shift
Kutumia LED ya Matrix ya Dot Na Rejista ya Arduino na Shift
Kutumia LED ya Matrix ya Dot Na Rejista ya Arduino na Shift

LED ya Nokia DLO7135 Dot matrix ni kipande cha kushangaza cha vifaa vya elektroniki. Inatozwa kama Onyesho la Akili la 5x7 Dot Matrix (r) na Kumbukumbu / Decoder / Dereva. Pamoja na kumbukumbu hiyo, ina onyesho la herufi 96 ya ASCII iliyowekwa na herufi kubwa na za chini, jenereta ya wahusika iliyojengwa na multiplexer, viwango vinne vya nguvu ya mwangaza, na yote inaendeshwa kwa 5V., na kwa $ 16 pop, hakika inapaswa. Wakati nikitumia nusu ya siku kwenye duka langu la elektroniki nilipenda nilipata pipa iliyojaa hizi kwa $ 1.50 kipande. Niliacha duka na kadhaa. Mafundisho haya yatakuonyesha jinsi ya kushikamana na haya matriki ya nukta LED na kuonyesha wahusika ukitumia Arduino ya AVR. Ikiwa umesoma miongozo yangu yote ya hapo awali, unaweza kupata wazo kwamba mimi mara nyingi ninapendelea suluhisho la ujinga zaidi, na hautakuwa na makosa, hata nikikosa lengo mara kwa mara. Kwa hivyo, nitaenda pia hatua nyingine katika hii inayoweza kufundishwa na kukuonyesha jinsi unaweza kupunguza idadi ya bandari za I / O zinahitajika kuendesha hizi LED kubwa za honkin 'dot matrix.

Hatua ya 1: Pata Bidhaa…

Pata Bidhaa…
Pata Bidhaa…

Kwa mradi huu mfupi, utahitaji:

  • Mdhibiti mdogo wa AVR kama Arduino au aina yoyote ya hiyo. Maagizo haya yanaweza kubadilishwa kwa MCU yako ya chaguo.
  • DLO7135 dot matrix LED au nyingine katika familia moja
  • rejista ya mabadiliko ya 8-bit kama 74LS164, 74C299, au 74HC594
  • ubao wa mkate
  • waya, waya za kukata, nk.

Chuma cha kuuzia haihitajiki, ingawa mimi hutumia baadaye; unaweza kupata bila hiyo.

Hatua ya 2: Unganisha moja kwa moja kwenye Uonyesho wa LED

Unganisha moja kwa moja kwenye Uonyesho wa LED
Unganisha moja kwa moja kwenye Uonyesho wa LED
Unganisha moja kwa moja kwenye Uonyesho wa LED
Unganisha moja kwa moja kwenye Uonyesho wa LED
Unganisha moja kwa moja kwenye Uonyesho wa LED
Unganisha moja kwa moja kwenye Uonyesho wa LED

Weka orodha yako ndogo ya sehemu na chukua LED. Weka kwenye ubao wa mkate uliozingatia kwa kiasi fulani, ukitanda katikati ya gombo la katikati. Sehemu ya kwanza ya unganisho hufanyika yote upande wa kushoto wa LED. Pini # 1 iko juu kushoto kama inavyoonyeshwa na pembetatu / mshale. Ninaweka kazi za pini kwenye picha kwa kumbukumbu yako unaposoma au kuunganisha LED yako.

Upande wa Kushoto

Chanya na Hasi Kuanzia juu kushoto, unganisha Vcc na 5V. Labda ni wazo nzuri kutowezeshwa na bodi yako hadi utumie upande mzima wa kushoto; LED inaweza kuwa mkali ikiwa unajaribu kuona mashimo madogo ili kushika waya. Unganisha chini ya kushoto ya GND chini. Mtihani wa Taa, Chip Wezesha na Andika ya 2 na ya 3 kutoka juu kushoto ni Jaribio la Taa na Chip Wezesha. Hizi zote ni mantiki hasi, maana yake zinawezeshwa wakati ziko kwenye mantiki 0 badala ya 1. Picha yangu hapa chini inapaswa kuwa na baa juu yao, lakini sikuielezea kwa yeyote kati yao. Pini ya LT ikiwezeshwa inaangazia kila nukta kwenye tumbo la nukta kwenye mwangaza wa 1/7. Ni zaidi ya jaribio la pikseli, lakini jambo la kufurahisha juu ya pini ya LT ni kwamba haitoi herufi yoyote iliyo kwenye kumbukumbu, kwa hivyo ikiwa ikiwa una kadhaa ya hizi zilizounganishwa pamoja (zina umbali wa kutazama 20ft), ikipiga LT inaweza kuifanya ionekane kama kielekezi. Ili kuhakikisha kuwa imezimwa, inganisha kwa 5V. Pini za CE na WR pia ni mantiki hasi na inahitajika kuwezeshwa kwa kifaa hiki kizuri kuandikiwa. Unaweza kudhibiti pini hizi na bandari za I / O za ziada kwenye mdhibiti wako mdogo, lakini hatutasumbua hapa. Waunganishe tu chini ili uwawezeshe. Ngazi za Mwangaza Kuna viwango vinne vya mwangaza kwenye programu ya DLO ya LED:

  • Tupu
  • 1/7 Mwangaza
  • 1/2 Mwangaza
  • Mwangaza kamili

BL1 HIGH na BL0 LOW ni 1/2 mwangaza. WOTE wa juu ni mwangaza kamili. Weka kwa chochote unachopenda. Tena, ikiwa una bandari za I / O za kuachilia na ni muhimu kwako, hii inaweza pia kudhibitiwa na Arduino yako. Hiyo inafunga upande wa kushoto. Ikiwa unaleta nguvu kwenye bodi yako unapaswa kuona taa ya LED ikiwaka. Cheza na udhibiti wa mwangaza na jaribio la taa ili ujue nalo, ikiwa unataka kujua.

Upande wa kulia

Upande wa kulia una bandari za data kabisa. Kulia chini, piga 8 au D0 kuwa sahihi, inawakilisha Kidogo Kikubwa katika herufi 7-bit. Juu kulia, pini 14 au D6 inawakilisha Kitufe Muhimu Zaidi. Hii inakuwezesha kujua ni agizo gani la kuchanganya bits zako wakati wa kuandika kwa LED. Unapokuwa na bandari za kuingiza data zilizounganishwa, pata bandari saba tupu za I / O za dijiti kwenye Arduino yako au AVR na uziunganishe. Labda unataka kukumbuka ni bandari gani ya pato la data kwenye AVR yako inakwenda kwa bandari gani ya kuingiza data kwenye LED. Sasa uko tayari kushinikiza data fulani kwenye LED hiyo nzuri. Je! Unatetemeka na msisimko bado? Najua niko…

Hatua ya 3: Kubainisha Tabia ya Kuonyeshwa

Kubainisha Tabia ya Kuonyeshwa
Kubainisha Tabia ya Kuonyeshwa

Seti ya herufi ambayo hutumiwa kwenye LED hii ya CMOS ni kukimbia kwako kwa kinu ASCII kuanzia 0x20 (decimal 32; nafasi) na kuishia 0x7F (decimal 127; kufuta, ingawa inawakilishwa kwenye LED kama picha ya mshale). Kwa hivyo, kuwa na onyesho la LED tabia haimaanishi zaidi ya kushinikiza mantiki 1 au 0 kwenye pini zako za kutoa data, kawaida ikifuatiwa na mapigo ya WR, lakini ninatabiri hilo kwa zoezi hili. ikumbukwe pini gani huenda kwa bandari gani, sivyo? Nilichagua PD [2..7] na PB0 (pini za dijiti 2 hadi 8 kwa lugha ya Arduino). Sipendekezi kutumia PD [0..1] kwa sababu ninajitolea kwa mawasiliano yangu ya mfululizo kwenye sanduku la FreeBSD, na Arduino's et al. ramani pini hizo kwenye kituo chao cha mawasiliano cha USB cha FTDI, na ingawa "wao" SEMA pini 0 na 1 zitafanya kazi ikiwa hautaanzisha mawasiliano ya serial, sijawahi kutumia pini hizo kama I / O ya kawaida ya dijiti. Kwa kweli, nilikaa siku mbili kujaribu kutatua shida wakati nilijaribu kutumia PD0 na PD1 na kugundua kuwa walikuwa juu kila wakati. * shrug * Labda itakuwa nzuri kuwa na aina fulani ya pembejeo za nje, kama vile keypad, pushwheel au switchwheel switch, au labda hata pembejeo kutoka kwa terminal (ArduinoTerm yangu haiko tayari kwa wakati mkuu bado…). Chaguo ni lako. Kwa sasa, nitaonyesha tu jinsi ya kupata nambari kupata herufi unayotaka kwenye LED. Kuna faili ya kupakua ikiwa ni pamoja na nambari ya chanzo na Makefile na pia kuna sinema fupi inayoonyesha uchapishaji wa LED nje ya tabia yake. Samahani kwa ubora wa video. Nambari iliyo hapa chini inachapisha kamba "Karibu kwenye Inayoweza Kufundishwa!" kisha mizunguko kupitia seti nzima ya herufi ambayo LED inasaidia.

DDRD = 0xFF; // PatoDDRB = (1 << DDB0); char msg = "Karibu kwenye yangu inayoweza kufundishwa!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); kuchelewa_ms (150); } kwa (i = 0x20; i <0x80; i ++) {Print2LED (i); kuchelewa_ms (150); } Chapisha2LED (& apos * & apos);}Pato la bandari linatunzwa katika kazi ya Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); ikiwa (i & 0b01000000) PORTB = (1 <

Nambari na Makefile imejumuishwa kwenye faili ya zip hapa chini.

Hatua ya 4: Hifadhi Bandari za I / O na Rejista ya Shift

Hifadhi Bandari za I / O na Daftari la Shift
Hifadhi Bandari za I / O na Daftari la Shift
Hifadhi Bandari za I / O na Daftari la Shift
Hifadhi Bandari za I / O na Daftari la Shift
Hifadhi Bandari za I / O na Daftari la Shift
Hifadhi Bandari za I / O na Daftari la Shift

Kwa hivyo sasa mdhibiti wetu mdogo anaweza kutuma data kwa mwangaza wa nukta LED lakini inatumia bandari nane za I / O. Hiyo haijumuishi kutumia ATTiny kwenye kifurushi cha 8-pin DIP, na hata na Arduino mpya ya kucheza ATmega328p hiyo ni bandari nyingi za I / O kwa LED moja. Tunaweza kuzunguka hii, hata hivyo, kwa kutumia IC inayoitwa rejista ya mabadiliko. Wakati wa "kubadili" gia … Rejista ya zamu inaweza kueleweka vizuri kwa kufikiria juu ya maneno mawili ambayo yana jina lake: "kuhama" na "kujiandikisha." Kuhama kwa neno kunamaanisha jinsi data inapita kwenye rejista. Hapa (kama ilivyo kwa Arduino yetu na watawala wadogo, kwa jumla) rejista ni eneo ambalo lina data. Inafanya hivyo kwa kutekeleza mnyororo wa laini ya mizunguko ya mantiki ya dijiti iitwayo "flip flops" ambayo ina majimbo mawili thabiti ambayo yanaweza kuwakilishwa na 1 au 0. Kwa hivyo, kwa kuweka vijiti vinane pamoja una kifaa kinachoweza kushikilia na kuwakilisha byte ya 8-bit. Kama vile kuna aina kadhaa za flip flops, na tofauti kadhaa kwenye mada ya rejista za mabadiliko (fikiria juu / kaunta na kaunta za Johnson), pia kuna aina kadhaa za sajili za mabadiliko kulingana na jinsi data imeingia kwenye rejista na jinsi data hiyo inatolewa. Kulingana na hii, fikiria aina zifuatazo za sajili za mabadiliko:

  • Serial In / Sambamba Kati (SIPO)
  • Serial In / Serial Out (SISO)
  • Sambamba Katika / Serial Kati (PISO)
  • Sambamba Katika / Sambamba Nje (PIPO)

Barua mbili ni SIPO na PISO. Sajili za SIPO huchukua data mfululizo, ambayo ni, kidogo baada ya nyingine, kuhamisha kidogo pembejeo hapo awali kwenda kwenye flip flop inayofuata na kutuma data nje kwa pembejeo zote mara moja. Hii inafanya serial nzuri kwa kibadilishaji sambamba. Rejista za mabadiliko ya PISO, kinyume chake, zina pembejeo zinazofanana, kwa hivyo bits zote zinaingizwa mara moja, lakini hutolewa moja kwa wakati. Na umekisia, hii inalingana sawa na kibadilishaji cha serial. Rejista ya kuhama ambayo tunataka kutumia kupunguza idadi ya pini za I / O itaturuhusu kuchukua pini hizo 8 za IO tulizotumia hapo awali na kuzipunguza hadi moja, au labda ni wanandoa tu, kwa kuzingatia tunaweza kuhitaji kudhibiti jinsi tunavyoingiza bits. Kwa hivyo, rejista ya mabadiliko tutakayotumia ni Serial In / Parallel Out. Funga rejista ya mabadiliko kati ya LED na Arduino Kutumia rejista ya mabadiliko ni rahisi. Sehemu ngumu zaidi ni kuibua tu pini za pato la data na jinsi nambari za binary zitaishia kwenye IC, na ni vipi hatimaye watajitokeza kwenye LED. Chukua muda kupanga hii. 1. Ambatisha 5V kubandika 14 (juu kulia) na chukua pin 7 (chini kushoto) chini chini. Rejista ya kuhama ina pembejeo mbili za serial lakini tutatumia moja tu, kwa hivyo unganisha pini mbili hadi 5V3. Hatutatumia pini wazi (iliyotumiwa kutoa matokeo yote) kwa hivyo iache ikielea au ishambulie kwa 5V4. Unganisha bandari moja ya IO ya dijiti kubandika moja ya rejista ya mabadiliko. Hii ni pini ya kuingiza serial. Unganisha bandari moja ya IO ya dijiti ili kubandika 8 (chini kulia). Hii ndio pini ya saa. Unganisha mistari yako ya data kutoka Q0 hadi Q6. Tunatumia tu bits 7 kwa sababu tabia ya ASCII imeweka tu bits saba. Nilitumia PD2 kutoa data yangu ya serial na PD3 kwa ishara ya saa. Kwa pini za data, niliunganisha Q0 hadi D6 kwenye LED na kuendelea kwa njia hiyo (Q1 hadi D5, Q2 hadi D4, nk). Kwa kuwa tunatuma data mfululizo tutalazimika kuchunguza uwakilishi wa kila herufi tunayotaka kutuma, tukitazama 1 na 0, na kutoa kila kitu kwenye safu ya serial. Nimejumuisha toleo la pili la chanzo cha dotmatrixled.c pamoja na Makefile hapa chini. Inazunguka kwa seti ya wahusika na huonyesha wahusika wote (ikiwa ni ajabu kufikiria kwamba barua inaweza kuwa isiyo ya kawaida au hata, fikiria juu ya uwakilishi wa binary kwa muda mfupi). Jaribu kujua jinsi ya kuifanya iwe mzunguko kupitia kuonyesha herufi zote zisizo za kawaida. Unaweza kujaribu zaidi unganisho kati ya sajili ya kuhama, mwangaza wa nukta LED, na Arduino yako. Kuna huduma kadhaa za kudhibiti kati ya LED na rejista ambayo inaweza kukuruhusu kurekebisha udhibiti wako kuhusu wakati data inavyoonyeshwa. So…. Tumeenda kutumia bandari nane za I / O kutumia mbili tu!

Hatua ya 5: Muhtasari

Muhtasari
Muhtasari
Muhtasari
Muhtasari

Katika hii inayoweza kufundishwa, nimewasilisha DLO7135 dot matrix LED na jinsi ya kuifanya ifanye kazi. Nimeendelea zaidi, kujadili jinsi ya kupunguza idadi ya bandari zinazohitajika za I / O kutoka nane hadi mbili tu kwa kutumia rejista ya mabadiliko. DLO7135 dot matrix LED inaweza kushonwa pamoja ili kufanya marquees ya kuvutia sana. Natumai ulifurahi kusoma hii inayoweza kufundishwa! Ikiwa kuna maboresho yoyote unadhani ningeweza kutoa au maoni ambayo ungependa kutoa juu ya hii au yoyote ya 'ibles yangu, ninafurahi kuyasikia!

Ilipendekeza: