Sa tutorial na ito ay magdidisenyo kami ng isang 8x8 LED Matrix Scrolling Display gamit ang Arduino Uno, na magpapakita ng mga alpabeto sa pag-scroll.
Ang 8x8 LED Matrix ay naglalaman ng 64 LEDs (Light Emitting Diode) na nakaayos sa anyo ng isang matrix, samakatuwid ang pangalan ay LED matrix. Gagawin namin ang Matrix na ito sa pamamagitan ng paghihinang sa mga 64 LEDs na ito sa perfboard o DOT PCB. Ang mga LED ay maaaring may anumang kulay, piliin ang mga magagamit sa iyo. Pagkatapos ay magsusulat kami ng isang programa para makontrol ng Arduino ang 64 LEDs matrix na ito. Ang UNO, ayon sa programa, ay nagpapagana sa mga naaangkop na LED upang ipakita ang mga character sa pag-scroll na fashion.
Kinakailangan ang Mga Bahagi:
- Arduino Uno
- 64 LEDs
- Perfboard kasama ang iba pang mga tool sa paghihinang
- 1KΩ risistor (8 piraso)
- Power Supply (5v)
Circuit at Paggawa ng Paliwanag:
Mayroong 64 LEDs na nakaayos sa isang matrix form. Kaya mayroon kaming 8 mga haligi at 8 mga hilera. Sa mga hilera at haligi na iyon, lahat ng mga positibong terminal sa isang hilera ay pinagsasama. Para sa bawat hilera, mayroong isang Karaniwang Positibong Terminal para sa lahat ng 8 LED sa hilera na iyon. Ipinapakita ito sa ibaba na pigura,
Kaya para sa 8 mga hilera mayroon kaming 8 karaniwang mga positibong terminal. Isaalang-alang ang unang hilera, tulad ng nakikita sa pigura, ang 8 LEDs mula D57 hanggang D64 ay may isang pangkaraniwang positibong terminal at tinukoy ng 'POSITIVE0'. Ngayon kung nais namin ang isang glow o lahat ng mga LED sa unang ROW ng matrix, dapat nating paganahin ang PIN0 ng LED Matrix. Gayundin kung nais nating mamula sa anumang LED (o lahat) sa anumang ROW kung gayon kailangan naming i-power ang kaukulang Common Positive Terminal Pin ng kaukulang Hilera.
Hindi pa ito tapos at ang pag-iiwan lamang ng MATRIX ROWS na may positibong supply ay hindi magbubunga ng anupaman. Kailangan nating ibagsak ang mga negatibo na LEDs upang magaan ang mga ito. Kaya't sa 8x8 LED matrix, ang lahat ng mga negatibong terminal ng mga LED sa anumang haligi ay pinagsama upang mabuo ang walong Mga Karaniwang Negatibong Terminal, tulad ng lahat ng mga negatibong terminal sa unang haligi ay magkakakonekta sa PIN-A1 (NEGATIVE7). Ipinapakita ito sa figure sa ibaba:
Ang isa ay dapat magbayad ng pansin sa mga pin na ito habang hinihinang ang mga LED sa Perfboard.
Ngayon kung kailangan nating ibagsak ang anumang LED sa unang haligi pagkatapos ay ibagsak namin ang PIN-A1 (NEGATIVE7) ng MATRIX, at ibabagsak nito ang lahat ng mga LED sa unang haligi. Ang parehong proseso ay napupunta para sa lahat ng iba pang pitong karaniwang mga negatibong haligi.
Simula ngayon alam mo kung paano gumagana ang Karaniwang Positibo at Karaniwang Negatibo. Pinagsama natin sila upang makita kung paano sila nagtutulungan at ang panghuling Circuit para sa Pag-scroll ng 8x8 display na Matrix na LED ay magiging ganito:
Pagmamaneho ng 8x8 LED Matrix gamit ang Multiplexing:
Ngayon sabihin nating nais nating buksan ang LED57 kung gayon kailangan nating i-power ang PIN0 ng UNO at i-ground ang PIN-8 ng UNO. Ngayon para sa pag-on ng parehong LED57 at LED50, kailangan naming i-power PIN0, PIN1 at i-ground ang PIN8, PIN9. Ngunit ang paggawa nito ay hindi lamang buksan ang D57, D50 ngunit pati na rin ang D49, D58. Upang maiwasan na gumamit kami ng diskarteng tinatawag na Multiplexing. Tinalakay na natin ang Multiplex Technique na ito sa 8x8 LED Matrix nang detalyado; dumaan sa artikulong iyon para sa detalyadong paliwanag. Dito namin ipinapaliwanag ang Multiplexing nang maikli.
Ang mata ng tao ay hindi maaaring makuha ang isang dalas na higit sa 30 HZ. Iyon ay kung ang isang LED ay nagpapatuloy at NAKA-OFF nang tuluy-tuloy sa rate na 30HZ o higit pa. Ang mata ay nakikita ang LED na patuloy na ON. Gayunpaman hindi ito ang kaso at ang LED ay talagang magiging ON at OFF parating. Ang pamamaraang ito ay tinatawag na Multiplexing.
Sabihin nating halimbawa, nais naming i-on lamang ang LED57 at LED50 nang hindi binuksan ang D49 at D58. Ang daya ay, bibigyan muna namin ang kapangyarihan sa unang hilera upang i-ON ang LED57 at maghintay para sa 1mSEC, at pagkatapos ay i-OFF namin ito. Pagkatapos ay bibigyan namin ang lakas sa pangalawang hilera upang i-on ang LED50 at maghintay para sa 1mSEC pagkatapos ay i-OFF ito. Ang pag-ikot ay patuloy na may mataas na dalas at ang LED57 & LED50 ay mabilis na makakakuha ng On at Off at ang parehong mga LED ay lilitaw na patuloy na ON sa aming mata. Nangangahulugan lamang na nagbibigay kami ng lakas sa isang hilera nang paisa-isa, inaalis ang mga pagkakataong buksan ang iba pang mga LED sa iba pang mga hilera. Gagamitin namin ang diskarteng ito upang maipakita ang lahat ng mga character.
Mayroon ding isang silid- aklatan na tinatawag na LedControlMS.h upang mapangalagaan ang lahat ng pagiging kumplikado ng multiplexing na ito, kung saan kailangan mo lamang ipasok ang character o numero na nais mong i-print sa LED matrix, suriin ang Arduino LED matrix na may MAX7219 na proyekto para sa karagdagang detalye.
Paliwanag sa Programming:
Sa aming Code, nagsulat kami ng decimal na halaga para sa bawat character at na-program ang mga halagang ito sa Arduino. Ang programa ay sumulat upang ilipat ang mga halagang ito sa susunod na hilera para sa bawat 0.2 sec, makikita ito bilang pag-scroll ng mga character paitaas, napakasimple nito.
Upang baguhin ang mga character na ipapakita, palitan lamang ang halaga sa char ALPHA array alinsunod sa mga halaga ng character na ibinigay sa ibaba, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Tulad ng kung nais mong ipakita ang DAD sa LED Matrix pagkatapos ay palitan muna ang mga halaga ng Character sa char ALPHA array sa pamamagitan ng paglalagay ng mga halaga para sa mga character D, A at D mula sa listahan sa itaas:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,020 0, 0,0,0,0,0,0,0,0,0,0,0};
Ang kabuuang halaga ay 5 * 10 = 50 na halaga ngayon, kaya
Palitan, para sa (int x = 0; x <142; x ++) // 150-8 (upang ihinto ang overflow) {…….. Sa, para sa (int x = 0; x <42; x ++) // 50-8 (upang itigil ang pag-apaw) {……..
Kaya kailangan mo lang baguhin ang numero.
Sa pamamagitan nito nagawa mo na ang pagprograma at ngayon ay maaari mong Mag - scroll ng anumang teksto sa 8x8 LED Matrix, suriin ang Buong code sa ibaba na may isang demonstrasyong Video.