Përmbajtje:

Përdorimi i një LED me pikë matriksi me një regjistër Arduino dhe Shift: 5 hapa
Përdorimi i një LED me pikë matriksi me një regjistër Arduino dhe Shift: 5 hapa

Video: Përdorimi i një LED me pikë matriksi me një regjistër Arduino dhe Shift: 5 hapa

Video: Përdorimi i një LED me pikë matriksi me një regjistër Arduino dhe Shift: 5 hapa
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Nëntor
Anonim
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift
Përdorimi i një LED Dot Matrix Me një Regjistër Arduino dhe Shift

LED i Siemens DLO7135 Dot matrix është një pjesë e mahnitshme e optoelektronikës. It'sshtë faturuar si një ekran inteligjent 5x7 Dot Matrix (r) me kujtesë/dekoder/drejtues. Së bashku me atë memorie, ajo ka një ekran ASCII me 96 karaktere të vendosur me karaktere të mëdha dhe të vogla, një gjenerator të integruar dhe multiplexer, katër nivele të intensitetit të dritës dhe gjithçka funksionon në 5V. Kjo është shumë për të jetuar, dhe me 16 dollarë një pop, patjetër që duhet. Ndërsa kaloja gjysmën e ditës në dyqanin tim të preferuar elektronik, gjeta një kosh të mbushur me këto për 1.50 dollarë në copë. Unë u largova nga dyqani me disa. Ky udhëzues do t'ju tregojë se si të lidheni me këto LED të matricës me pika dhe të shfaqni karakteret duke përdorur një Arduino të bazuar në AVR. Nëse keni lexuar ndonjë nga udhëzuesit e mi të mëparshëm, mund të merrni idenë se unë jam shpesh në favor të zgjidhjes më të kujdesshme dhe nuk do të gabonit, edhe nëse herë pas here nuk arrij qëllimin Me Prandaj, unë gjithashtu do të bëj një hap tjetër në këtë udhëzues dhe do t'ju tregoj se si mund të zvogëloni numrin e porteve I/O të nevojshëm për të drejtuar këto LED të mëdhenj të matricës me pika.

Hapi 1: Merrni Mallrat…

Merrni Mallrat…
Merrni Mallrat…

Për këtë projekt të shkurtër të vogël, do t'ju duhet:

  • një mikrokontrollues me bazë AVR si një Arduino ose ndonjë nga të ngjashmit e tij. Këto udhëzime ndoshta mund të përshtaten me MCU -në tuaj të zgjedhur.
  • një LED me matricë DLO7135 ose të tjera në të njëjtën familje
  • një regjistër ndërrimi 8-bitësh si 74LS164, 74C299 ose 74HC594
  • një dërrasë buke
  • tela lidhës, prerës teli, etj.

Një hekur bashkues nuk është i nevojshëm, edhe pse unë e përdor një më vonë; mund të kalosh pa të.

Hapi 2: Lidhuni drejtpërdrejt me ekranin LED

Lidheni drejtpërdrejt me ekranin LED
Lidheni drejtpërdrejt me ekranin LED
Lidheni drejtpërdrejt me ekranin LED
Lidheni drejtpërdrejt me ekranin LED
Lidheni drejtpërdrejt me ekranin LED
Lidheni drejtpërdrejt me ekranin LED

Paraqitni listën tuaj të vogël të pjesëve dhe kapni LED. Vendoseni atë në dërrasën e bukës të përqendruar disi, duke kaluar në brazdën e vijës së mesme. Pjesa e parë e lidhjes zhvillohet e gjitha në anën e majtë të LED. Kunja #1 ndodhet në pjesën e sipërme të majtë siç tregohet nga trekëndëshi/shigjeta. Unë i vendos funksionet e kunjave në një fotografi për referencën tuaj ndërsa lexoni ose lidhni LED tuaj.

Ana e Majtë

Pozitiv dhe Negativ Duke filluar nga lart majtas, lidhni Vcc me 5V. Maybeshtë ndoshta një ide e mirë që të mos e aktivizoni bordin tuaj derisa të përfundoni të gjithë anën e majtë; LED mund të jetë e ndritshme nëse po përpiqeni të shihni vrima të vogla që të futen në tela. Lidhni GND -in e poshtëm të majtë me tokën. Testi i llambës, aktivizoni dhe shkruani çipin 2 dhe 3 nga lart në të majtë janë Lamp Test dhe Chip Enable. Këto janë të dyja logjikë negative, që do të thotë se ato janë të aktivizuara kur janë në një vlerë 0 logjike në vend të 1. Fotografia ime më poshtë duhet të ketë shirita mbi to, por unë nuk e shënova atë për asnjërën prej tyre. Kunja LT kur aktivizohet ndriçon çdo pikë në matricën e pikave në shkëlqimin 1/7. Moreshtë më shumë një test pixel, por gjëja interesante në lidhje me pin LT është se nuk mbishkruan asnjë karakter që është në kujtesë, kështu që nëse i keni disa prej tyre të lidhur së bashku (ata kanë një distancë shikimi 20 metra), duke goditur LT mund ta bëjë atë të duket si një kursor. Për të siguruar që është i paaftë, lidheni atë me 5V. Kunjat CE dhe WR janë gjithashtu logjikë negative dhe kërkohet të aktivizohen që të shkruhet kjo pajisje e zgjuar. Ju mund t'i menaxhoni këto mikrobe me porta rezervë I/O në mikrokontrolluesin tuaj, por ne nuk do të shqetësohemi këtu. Thjesht lidhini ato me tokën për t'i mbajtur të aktivizuara. Nivelet e shkëlqimit Ekzistojnë katër nivele të ndriçimit të programueshëm në familjen e LED -ve DLO:

  • Bosh
  • 1/7 Ndriçimi
  • 1/2 Ndriçimi
  • Ndriçim i plotë

BL1 HIGH dhe BL0 LOW është 1/2 shkëlqim. Të dyja LART is janë me shkëlqim të plotë. Vendoseni atë në çdo gjë që ju pëlqen. Përsëri, nëse keni porta hyrje/dalje për të kursyer dhe është mjaft e rëndësishme për ju, kjo gjithashtu mund të kontrollohet nga Arduino juaj. Kjo përfundon anën e majtë. Nëse sillni energji në bordin tuaj, duhet të shihni që LED të ndizet. Luani me kontrollet e shkëlqimit dhe testin e llambës për t'u njohur me të, nëse jeni kurioz.

Ana e djathtë

Ana e djathtë përbëhet nga porte të të dhënave. Pjesa e poshtme e djathtë, pin 8 ose D0 për të qenë të saktë, përfaqëson Bit-in më të Rëndësishëm në karakterin 7-bit. Pjesa e sipërme djathtas, kunja 14 ose D6 përfaqëson Bit -in Më Domethënës. Kjo ju lejon të dini se çfarë rendi për të përzier copat tuaja kur shkruani në LED. Kur të keni portat e hyrjes së të dhënave të lidhura, gjeni shtatë porte dixhitale të hyrjes/daljes dixhitale në Arduino ose AVR tuaj dhe lidheni ato. Ju ndoshta do të dëshironi të mbani mend se cila portë e daljes së të dhënave në AVR tuaj shkon në cilën portë të dhënash të të dhënave në LED. Tani jeni gati të shtyni disa të dhëna në atë LED të zgjuar. A po dridheni akoma nga eksitimi? E di që jam…

Hapi 3: Specifikimi i një personazhi që do të shfaqet

Specifikimi i një personazhi që do të shfaqet
Specifikimi i një personazhi që do të shfaqet

Kompleti i karaktereve që përdoret në këtë LED CMOS është ASCII juaj i rrjedhës duke filluar nga 0x20 (dhjetor 32; një hapësirë) dhe duke përfunduar në 0x7F (dhjetor 127; një fshirje, edhe pse i përfaqësuar në LED si një grafik kursori) Me Pra, të kesh një karakter LED të shfaqur nuk kërkon asgjë më shumë sesa të shtysh logjikën 1 ose 0 në kunjat e daljes së të dhënave të tua, zakonisht të ndjekur nga një impuls WR, por këtë e thashë për këtë ushtrim. Pra, ju keni shkruar ose ju kujtohet se cilat kunja shkojnë në cilat porte, apo jo? Zgjodha PD [2..7] dhe PB0 (kunjat dixhitale 2 deri në 8 në Arduino-flas). Normalisht nuk sugjeroj të përdorni PD [0..1] sepse i kushtoj komunikimit tim serik përsëri në një kuti FreeBSD, dhe Arduino's et al. Hartoni ato kunjat në kanalin e tyre të komunikimit USB FTDI, dhe megjithëse "ata" thonë se kunjat 0 dhe 1 do të funksionojnë nëse nuk filloni komunikimin serik, unë kurrë nuk kam qenë në gjendje t'i përdor ato kunjat si I/O normale dixhitale. Në fakt, kalova dy ditë duke u përpjekur të korrigjoj një problem kur u përpoqa të përdor PD0 dhe PD1 dhe zbulova se ato ishin gjithmonë të LARTA. * ngre supet* Ndoshta do të ishte mirë të kishim një lloj hyrjeje të jashtme, si ndoshta një tastierë, një çelës ose një çelës me gishtin e madh, ose ndoshta edhe hyrje nga një terminal (ArduinoTerm im nuk është ende gati për kohën kryesore …). Zgjedhja është e juaja. Tani për tani, unë thjesht do të ilustroj se si të merrni kodin për të marrë karakterin që dëshironi në LED. Ekziston një zipfile për shkarkim duke përfshirë kodin burimor dhe Makefile dhe ka gjithashtu një film të shkurtër që tregon shtypjen LED nga grupi i karakterit të tij. Na falni për cilësinë e keqe të videos. Kodi më poshtë printon vargun "Mirësevini në udhëzuesin tim!" pastaj kalon nëpër të gjithë grupin e karaktereve që LED mbështet.

DDRD = 0xFF; // DaljaDDRB = (1 << DDB0); char msg = "Mirë se vini në Instructable tim!"; uint8_t i; për (;;) {për (i = 0; i <27; i ++) {Print2LED (msg ); _vonesa_ms (150); } për (i = 0x20; i <0x80; i ++) {Print2LED (i); _vonesa_ms (150); } Print2LED (& apos*& apos);}Dalja e portit kujdeset në funksionin Print2Led ()

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

Kodi dhe Makefile përfshihen në një skedar zip më poshtë.

Hapi 4: Ruani Portet I/O me një Regjistër Shift

Kurseni Portet I/O me një Regjistër Shift
Kurseni Portet I/O me një Regjistër Shift
Kurseni Portet I/O me një Regjistër Shift
Kurseni Portet I/O me një Regjistër Shift
Kurseni Portet I/O me një Regjistër Shift
Kurseni Portet I/O me një Regjistër Shift

Pra, tani mikrokontrolluesi ynë mund të dërgojë të dhëna në LED të matricës së pikave, por po përdor tetë porta I/O. Kjo përjashton përdorimin e një ATtiny në një paketë DIP me 8 kunja, dhe madje edhe me një Arduino më të re që ka një ATmega328p që ka shumë porta I/O për një LED. Ne mund ta kapërcejmë këtë, megjithatë, duke përdorur një IC të quajtur regjistër ndërrimi. Një moment për të "ndryshuar" ingranazhet … Një regjistër ndërrimi mund të kuptohet më mirë duke menduar për dy fjalët që përbëjnë emrin e tij: "zhvendosje" dhe "regjistrohu". Fjala zhvendosje i referohet mënyrës se si të dhënat po lëvizin në regjistër. Këtu (si në Arduino -n tonë dhe mikrokontrolluesit, në përgjithësi) një regjistër është një vendndodhje që mban të dhëna. E bën këtë duke zbatuar një zinxhir linear të qarqeve logjike dixhitale të quajtur "rrokullisje" që ka dy gjendje të qëndrueshme që mund të përfaqësohen me 1 ose 0. Pra, duke bashkuar tetë flip -flops së bashku ju keni një pajisje që është e aftë të mbajë dhe që përfaqëson një bajt 8-bit. Ashtu siç ka disa lloje të flip-flops, dhe disa variacione në një temë të regjistrave të ndërrimit (mendoni sportelet lart/poshtë dhe sportelet Johnson), ka edhe disa lloje të regjistrave të ndërrimit bazuar në mënyrën e të dhënave fiksohet në regjistër dhe si dalin ato të dhëna. Bazuar në këtë, merrni parasysh llojet e mëposhtme të regjistrave të ndërrimit:

  • Serial In / Paralel Out (SIPO)
  • Serial In / Serial Out (SISO)
  • Paralele In/ Serial Out (PISO)
  • Paralele brenda / Paralele jashtë (PIPO)

Dy prej tyre janë SIPO dhe PISO. Regjistrat SIPO marrin të dhëna në mënyrë serike, domethënë njëra pas tjetrës, duke e zhvendosur bitin e mëparshëm të hyrjes në flip -flopin tjetër dhe duke i dërguar të dhënat në të gjitha hyrjet menjëherë. Kjo bën një konvertues të mirë serial në paralel. Regjistrat e zhvendosjes PISO, anasjelltas, kanë hyrje paralele, kështu që të gjitha bitët futen menjëherë, por dalin një nga një. Dhe e keni menduar, kjo krijon një paralel të bukur me konvertuesin serik. Regjistri i ndërrimit që duam të përdorim për të zvogëluar numrin e kunjave I/O do të na lejojë të marrim ato 8 kunja IO që kemi përdorur më herët dhe t'i zvogëlojmë ato në një, ose ndoshta vetëm në një çift, duke pasur parasysh që mund të na duhet të kontrollojmë mënyrën e futjes copëzat. Prandaj, regjistri i ndërrimit që do të përdorim është një Serial In / Paralel Out. Lidhni regjistrin e ndërrimit midis LED dhe Arduino Përdorimi i regjistrit të ndërrimit është i lehtë. Pjesa më e vështirë është thjesht të vizualizoni kunjat e daljes së të dhënave dhe sesi shifrat binare do të përfundojnë në IC, dhe si do të shfaqen përfundimisht në LED. Merrni një moment për ta planifikuar këtë. 1. Bashkangjitni 5V në kunjin 14 (lart djathtas) dhe merrni pinin 7 (poshtë majtas) poshtë në tokë.2. Regjistri i ndërrimit ka dy hyrje serike, por ne do të përdorim vetëm një, kështu që lidhni pinin dy me 5V3. Ne nuk do të përdorim pinin e qartë (përdoret për të nxjerrë zero të gjitha daljet), kështu që lëreni të lundrojë ose sulmojeni atë në 5V4. Lidhni një port dixhital IO për të lidhur një nga regjistrat e ndërrimit. Ky është pini serik i hyrjes.5. Lidhni një port dixhital IO në pin 8 (poshtë djathtas). Ky është kunja e orës.6. Lidhni linjat tuaja të të dhënave nga Q0 në Q6. Ne po përdorim vetëm 7 bit sepse grupi i karaktereve ASCII përdor vetëm shtatë bit. Kam përdorur PD2 për nxjerrjen e të dhënave të mia serike dhe PD3 për sinjalin e orës. Për kunjat e të dhënave, unë lidha Q0 me D6 në LED dhe vazhdova kështu (Q1 në D5, Q2 në D4, etj). Meqenëse ne po dërgojmë të dhëna në mënyrë serike, ne do të duhet të shqyrtojmë përfaqësimin binar të secilit karakter që duam të dërgojmë, duke parë 1 dhe 0 dhe duke nxjerrë secilën bit në linjën seriale. Kam përfshirë një version të dytë të burimit dotmatrixled.c së bashku me një Makefile më poshtë. Ai qarkullon përmes grupit të karaktereve dhe shfaq të gjithë personazhet çift (nëse është e çuditshme të mendosh se një shkronjë mund të jetë tek ose çift, mendo për përfaqësimin binar për një moment). Mundohuni të kuptoni se si ta bëni atë të qarkullojë duke shfaqur të gjithë personazhet e çuditshëm. Ju mund të eksperimentoni më tej me lidhjet midis regjistrit të ndërrimit, LED të matricës me pika dhe Arduino -s tuaj. Ekzistojnë disa veçori të kontrollit midis LED dhe regjistrit që mund t'ju lejojnë të rregulloni me saktësi kontrollin tuaj kur shfaqen të dhënat. Pra…. Ne kemi kaluar nga përdorimi i tetë portave I/O në vetëm dy!

Hapi 5: Përmbledhje

Përmbledhje
Përmbledhje
Përmbledhje
Përmbledhje

Në këtë udhëzues, unë kam paraqitur LED -in e matricës së pikave DLO7135 dhe si ta bëj atë të funksionojë. Më tej, kam diskutuar se si të zvogëlohet numri i porteve të kërkuara I/O nga tetë në vetëm dy duke përdorur një regjistër ndërrimi. LED i matricës me pika DLO7135 mund të lidhet së bashku për të bërë shenja tërheqëse dhe interesante. Shpresoj se u argëtuat duke lexuar këtë udhëzues! Nëse ka ndonjë përmirësim që mendoni se mund të bëj ose sugjerime që dëshironi të jepni për këtë ose cilindo nga figurat e mia, unë jam i lumtur t'i dëgjoj ato! Gëzuar AVR'ing!

Recommended: