Բովանդակություն:

Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցման միջոցով. 5 քայլ
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցման միջոցով. 5 քայլ

Video: Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցման միջոցով. 5 քայլ

Video: Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցման միջոցով. 5 քայլ
Video: Introduction to HT16K33 4 Digit LED Seven Segment Display with Arduino 2024, Նոյեմբեր
Anonim
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով
Օգտագործելով Dot Matrix LED- ը Arduino- ի և Shift գրանցամատյանով

Siemens DLO7135 Dot matrix LED- ը օպտոէլեկտրոնիկայի զարմանալի կտոր է: Այն գանձվում է որպես 5x7 Dot Matrix ինտելեկտուալ էկրան (r) ՝ Հիշողության/ապակոդավորման/վարորդի հետ: Այդ հիշողության հետ մեկտեղ, այն ունի 96 նիշանոց ASCII էկրան ՝ մեծ և փոքր տառերով, ներկառուցված կերպարների գեներատոր և մուլտիպլեքսեր, լուսավորության ինտենսիվության չորս մակարդակ և ամեն ինչ աշխատում է 5 Վ լարման վրա: Դա շատ բան է ապրելու համար:, և $ 16 փոփ -ով, դա անպայման պետք է: Կես օր անցկացնելով իմ սիրած էլեկտրոնիկայի խանութում, ես գտա դրանցով լի աղբամանը ՝ 1 հատը 1,50 դոլարով: Խանութից դուրս եկա մի քանիսի հետ: Այս հրահանգը ցույց կտա ձեզ, թե ինչպես միանալ այս կետային մատրիցային LED- ներին և ցուցադրել նիշերը ՝ օգտագործելով AVR- ի վրա հիմնված Arduino- ն: Եթե կարդացել եք իմ նախորդ ուղեցույցներից որևէ մեկը, կարող է այն միտքը ծագել, որ ես հաճախ կողմնակից եմ ամենախնայող լուծմանը, և դուք չեք սխալվի, նույնիսկ եթե ժամանակ առ ժամանակ ես չհամապատասխանեմ նպատակին:. Հետևաբար, ես նաև մեկ այլ քայլ կանեմ այս ուսանելիի մեջ և ձեզ ցույց կտամ, թե ինչպես կարող եք նվազեցնել I/O նավահանգիստների քանակը, որոնք անհրաժեշտ են այս մեծ, լուսավոր կետային մատրիցով LED- ները վարելու համար:

Քայլ 1: Ստացեք ապրանքներ…

Ստացեք ապրանքները…
Ստացեք ապրանքները…

Այս կարճ նախագծի համար ձեզ հարկավոր է.

  • AVR- ի վրա հիմնված միկրոկոնտրոլեր, ինչպիսին է Arduino- ն կամ դրա նմանակները: Այս հրահանգները, հավանաբար, կարող են հարմարեցվել ձեր ընտրած MCU- ին:
  • DLO7135 կետային մատրիցով LED կամ նույն ընտանիքում այլ
  • 8-բիթանոց հերթափոխի գրանցամատյան, ինչպես 74LS164, 74C299 կամ 74HC594
  • մի տախտակ
  • կապի մետաղալարեր, մետաղալարեր և այլն:

Eringոդման երկաթ անհրաժեշտ չէ, չնայած որ ես ավելի ուշ եմ օգտագործում; առանց դրա կարող ես գլուխ հանել:

Քայլ 2: Ուղղակի միացեք LED էկրանին

Ուղղակի միացեք LED էկրանին
Ուղղակի միացեք LED էկրանին
Ուղղակի միացեք LED էկրանին
Ուղղակի միացեք LED էկրանին
Ուղղակի միացեք LED էկրանին
Ուղղակի միացեք LED էկրանին

Տեղադրեք մասերի ձեր փոքր ցուցակը և վերցրեք LED- ը: Տեղադրեք այն սեղանի վրա, որը կենտրոնացած է ինչ -որ չափով ՝ շեղվելով միջին գծի ակոսից: Միացման առաջին մասը տեղի է ունենում LED- ի ձախ կողմում: Պին #1 -ը գտնվում է ձախ վերևում, ինչպես նշված է եռանկյունու/սլաքի միջոցով: Ձեր նշման համար ես տեղադրում եմ քորոցային գործառույթները նկարի վրա, երբ կարդում կամ միացնում եք ձեր LED- ը:

Ձախ կողմը

Դրական և բացասական Սկսած վերևի ձախ մասից ՝ Vcc- ն միացրեք 5 Վ -ի: Միգուցե լավ գաղափար է, որ ձեր տախտակը միացված չլինի, մինչև ամբողջ ձախ կողմը չավարտվի: LED- ը կարող է պայծառ լինել, եթե փորձում եք փոքր անցքեր տեսնել լարերի մեջ խրվելու համար: Միացրեք ներքևի ձախ GND- ը գետնին: Lamp Test, Chip Enable and Write 2 -րդ և 3 -րդները ձախից վերևում են Lamp Test- ը և Chip Enable- ը: Սրանք երկուսն էլ բացասական տրամաբանություն են, այսինքն ՝ դրանք միացված են, երբ գտնվում են տրամաբանական 0 -ի փոխարեն 1 -ի փոխարեն: LT կապը, երբ միացված է, լուսավորում է կետային մատրիցի յուրաքանչյուր կետ 1/7 -րդ պայծառությամբ: Դա ավելի շատ պիքսելային թեստ է, բայց LT քորոցում ամենահետաքրքիրն այն է, որ այն չի փոխարինում հիշողության մեջ գտնվող որևէ կերպար, այնպես որ դուք, եթե ունեք դրանցից մի քանիսը միասին (դրանք ունեն 20 ֆուտ դիտման հեռավորություն), հարվածելով LT- ին: կարող է այն դարձնել կուրսորի տեսք: Անջատված լինելու համար միացրեք այն 5 Վ -ին: CE և WR կապերը նույնպես բացասական տրամաբանություն են և պահանջվում է, որ դրանք միացված լինեն այս խելացի սարքի վրա գրվելու համար: Դուք կարող եք միկրոկառավարել այս կապում ձեր միկրոկառավարիչի պահեստային մուտքի/ելքի պորտերով, բայց մենք այստեղ չենք անհանգստանա: Պարզապես միացրեք դրանք գետնին `դրանք միացված պահելու համար: Պայծառության մակարդակներ DLO- ի LED լուսադիոդների լուսավորության չորս ծրագրավորվող մակարդակ կա.

  • Դատարկ
  • 1/7 Պայծառություն
  • 1/2 Պայծառություն
  • Լրիվ պայծառություն

BL1 HIGH և BL0 LOW- ը 1/2 պայծառություն է: Երկուսն էլ բարձր են ամբողջ պայծառությամբ: Սահմանեք այն, ինչ ցանկանում եք: Կրկին, եթե դուք ունեք մուտքի/ելքի նավահանգիստներ և դա ձեզ համար բավական կարևոր է, այն կարող է վերահսկվել նաև ձեր Arduino- ի կողմից: Դա փաթաթում է ձախ կողմը: Եթե էներգիա եք բերում ձեր տախտակին, ապա պետք է տեսնեք, որ LED լույսը վառվում է: Խաղացեք պայծառության կարգավորիչների և լամպի թեստի հետ ՝ դրան ծանոթանալու համար, եթե ձեզ հետաքրքրում է:

Աջ կողմը

Աջ կողմը բաղկացած է ամբողջությամբ տվյալների նավահանգիստներից: Ներքևի աջ կողմը, ճշգրիտ 8 կամ D0, ներկայացնում է 7 բիթանոց նիշի ամենաքիչ նշանակալի բիթը: Վերևի աջ կողմը, 14 կամ D6 կապը ներկայացնում է ամենակարևոր բիթը: Սա թույլ է տալիս իմանալ, թե ինչ կարգով է ձեր բիթերը խառնել LED- ին գրելիս: Երբ տվյալների մուտքագրման պորտերը միացված են, գտեք յոթ դատարկ թվային մուտքի/ելքային պորտեր ձեր Arduino- ում կամ AVR- ում և միացրեք դրանք: Դուք հավանաբար կցանկանաք հիշել, թե ձեր AVR- ի տվյալների ելքային պորտը որ LED- ի վրա է մտնում տվյալների մուտքագրման պորտը: Այժմ դուք պատրաստ եք որոշ տվյալներ մղել այդ խելացի LED- ի վրա: Դուք դեռ դողում եք հուզմունքից: Ես գիտեմ, որ ես…

Քայլ 3: ifyingուցադրվող կերպար նշելը

Specուցադրվող կերպար նշելը
Specուցադրվող կերպար նշելը

Այս CMOS LED- ի վրա օգտագործվող նիշերի հավաքածուն ձեր գործարկման ASCII- ն է ՝ սկսած 0x20 (տասնորդական 32; բացատ) և վերջացրած 0x7F (տասնորդական 127; ջնջում, չնայած LED- ում ներկայացված է որպես կուրսորային գրաֆիկա). Այսպիսով, LED էկրան ունենալը նշանակում է ոչ այլ ինչ, քան ձեր տվյալների ելքային կապերի վրա տրամաբանական 1 կամ 0 հրում, որը սովորաբար հաջորդում է WR զարկերակին, բայց ես դա ասում եմ այս վարժության համար: Այսպիսով, դուք գրել եք կամ հիշեց, թե որ կապերն ինչ նավահանգիստներ են գնում, այնպես չէ՞: Ես ընտրեցի PD [2..7] և PB0 (թվային կապում 2-ից 8-ը Arduino-speak- ում): Ես սովորաբար չեմ առաջարկում օգտագործել PD [0..1], քանի որ այն նվիրում եմ իմ սերիական հաղորդակցությանը ՝ վերադառնալով FreeBSD տուփի, և Arduino- ի և այլոց: քարտեզագրեք այդ կապումներն իրենց FTDI USB հաղորդակցման ալիքին, և չնայած «նրանք» ԱՍՈՄ են, որ 0 և 1 կապերը կաշխատեն, եթե դուք չսկսեք սերիական հաղորդակցումը, ես երբեք չեմ կարողացել օգտագործել այդ կապերը որպես սովորական թվային մուտք/ելք: Իրականում, ես երկու օր անցկացրեցի ՝ փորձելով կարգաբերել խնդիրը, երբ փորձեցի օգտագործել PD0 և PD1 և պարզեցի, որ դրանք միշտ բարձր էին: * թոթվում է* Հավանաբար լավ կլիներ ունենալ ինչ -որ արտաքին մուտք, օրինակ ՝ ստեղնաշար, սեղմիչ կամ բութ մատի անջատիչ, կամ գուցե նույնիսկ տերմինալից մուտքագրում (իմ ArduinoTerm- ը դեռ պատրաստ չէ հիմնական ժամանակին դեռ…): Ընտրությունը ձերն է: Առայժմ ես պարզապես ցույց կտամ, թե ինչպես ստանալ ծածկագիրը ՝ ձեր ուզած կերպարը LED- ի վրա ստանալու համար: Ներբեռնման համար կա zipfile, ներառյալ սկզբնաղբյուրը և Makefile- ը, և կա նաև կարճամետրաժ ֆիլմ, որը ցույց է տալիս, որ LED- ով տպվում է իր բնույթի հավաքածուն: Ներողություն ենք խնդրում տեսանյութի վատ որակի համար: Ստորև բերված կոդը տպում է «Welcome to my Instructable!» Տողը: այնուհետև շրջվում է ամբողջ կերպարների հավաքածուի միջով, որն աջակցում է LED- ը:

DDRD = 0xFF; // Ելք DDRB = (1 << DDB0); char msg = "Բարի գալուստ իմ Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _ ուշացում (150); } համար (i = 0x20; i <0x80; i ++) {Print2LED (i); _ ուշացում (150); } Print2LED (& apos*& apos);}Պորտի ելքը խնամվում է Print2Led () գործառույթում

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

Կոդը և Makefile- ը ներառված են ստորև նշված zip ֆայլում:

Քայլ 4. Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով

Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով
Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով
Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով
Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով
Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով
Պահպանեք I/O նավահանգիստները Shift գրանցամատյանով

Այսպիսով, այժմ մեր միկրոկառավարիչը կարող է տվյալներ ուղարկել կետային մատրիցային LED- ին, բայց այն օգտագործում է ութ մուտքի/ելքի պորտ: Դա բացառում է ATtiny- ի օգտագործումը 8-փինանոց DIP փաթեթում, և նույնիսկ ավելի նոր Arduino- ի դեպքում, որը հագեցած է ATmega328p- ով, որն ունի բազմաթիվ LED/I/O նավահանգիստներ: Մենք կարող ենք շրջանցել դա, այնուամենայնիվ, օգտագործելով IC- ն, որը կոչվում է հերթափոխի գրանցամատյան: Շարժումները «փոխելու» պահը … Տեղափոխման գրանցամատյանը լավագույնս կարելի է հասկանալ ՝ մտածելով նրա անունը կազմող երկու բառերի մասին ՝ «հերթափոխ» և «գրանցել»: Shift բառը վերաբերում է, թե ինչպես են տվյալները շարժվում գրանցամատյանում: Այստեղ (ինչպես մեր Arduino- ում և ընդհանրապես միկրոկոնտրոլերներում) գրանցամատյանը տվյալներ պահող վայր է: Դա անում է թվային տրամաբանական սխեմաների գծային շղթայի ներդրմամբ, որը կոչվում է «մատնաթափեր», որն ունի երկու կայուն վիճակ, որոնք կարող են ներկայացվել կամ 1 -ով կամ 0 -ով: Այսպիսով, ութ մատով շալվարը միասին դնելով, դուք ունեք մի սարք, որն ունակ է պահել և ներկայացնում է 8 բիթ բայթ: Ինչպես որ կան մի քանի տիպի մատիտներ և մի քանի տատանումներ հերթափոխի մատյանների վրա (մտածեք վեր/վար հաշվիչներ և countոնսոնի հաշվիչներ), կան նաև մի քանի տիպի հերթափոխի գրանցամատյաններ ՝ հիմնված տվյալների վրա ամրագրված է գրանցամատյանում և ինչպես են այդ տվյալները դուրս բերվում: Դրա հիման վրա հաշվի առեք հերթափոխի գրանցամատյանների հետևյալ տեսակները.

  • Սերիական ներս / զուգահեռ ելք (SIPO)
  • Սերիական ներս / սերիական ելք (SISO)
  • Paուգահեռ մուտք/ սերիա ելք (PISO)
  • Paուգահեռ մուտք / զուգահեռ ելք (PIPO)

Նշվածներից երկուսն են `SIPO- ն և PISO- ն: SIPO գրանցամատյանները վերցնում են տվյալները հաջորդականորեն, այսինքն ՝ մեկը մյուսի հետևից, նախկինում մուտքագրված բիթը տեղափոխելով հաջորդ մատով և դնելով տվյալները միանգամից բոլոր մուտքերի վրա: Սա գեղեցիկ սերիալ է զուգահեռ փոխարկիչին: PISO հերթափոխի գրանցամատյանները, ընդհակառակը, ունեն զուգահեռ մուտքագրումներ, այնպես որ բոլոր բիթերը մուտքագրվում են միանգամից, բայց դուրս են գալիս մեկ առ մեկ: Եվ կռահեցիք, սա սերիական փոխարկիչին հաճելի զուգահեռ է ստեղծում: Տեղափոխման գրանցամատյանը, որը մենք ցանկանում ենք օգտագործել ՝ մուտքի/ելքի կապերի քանակը նվազեցնելու համար, թույլ կտա մեզ վերցնել այն 8 IO կապերը, որոնք մենք ավելի վաղ օգտագործել էինք և դրանք հասցնել մեկի, կամ գուցե ընդամենը մի քանիսի ՝ հաշվի առնելով, որ գուցե անհրաժեշտ լինի վերահսկել, թե ինչպես ենք մուտքագրում բիթերը: Հետևաբար, հերթափոխի գրանցամատյանը, որը մենք կօգտագործենք, Serial In / Parallel Out է: Միացրեք հերթափոխի գրանցամատյանը LED- ի և Arduino- ի միջև Հեշտությամբ հերթափոխի ռեգիստրի օգտագործումը: Ամենադժվարը տվյալների արտացոլման կապում պատկերացնելն է, և թե ինչպես են երկուական թվանշանները հայտնվում IC- ում, և ինչպես են դրանք ի վերջո հայտնվում LED- ի վրա: Մի պահ տրամադրեք սա պլանավորելու համար: 1. Կցեք 5V- ը 14 -րդ կապում (վերևի աջ) և 7 -րդը (ներքևից ձախ) իջեցրեք գետնին: Shift ռեգիստրն ունի երկու սերիական մուտք, բայց մենք կօգտագործենք միայն մեկը, այնպես որ միացրեք երկու կապը 5V3- ին: Մենք չենք օգտագործի հստակ քորոցը (օգտագործվում է բոլոր ելքերը զրոյացնելու համար), այնպես որ այն թողեք լողացող կամ հարձակվեք 5V4- ի վրա: Միացրեք մեկ թվային IO նավահանգիստ `հերթափոխի ռեգիստրից մեկը ամրացնելու համար: Սա սերիական մուտքագրման փին է: Միացրեք մեկ թվային IO նավահանգիստ 8 -ի կապին (ներքևի աջ): Սա ժամացույցի փին է: 6. Միացրեք ձեր տվյալների տողերը Q0- ից Q6: Մենք օգտագործում ենք ընդամենը 7 բիթ, քանի որ ASCII նիշերի հավաքածուն օգտագործում է ընդամենը յոթ բիթ: Ես օգտագործեցի PD2- ը իմ սերիական տվյալների և PD3- ի ՝ ժամացույցի ազդանշանի համար: Տվյալների կապերի համար ես Q0- ը միացրեցի D6- ին LED- ի վրա և շարունակեցի այդպես (Q1- ից D5, Q2- ից D4 և այլն): Քանի որ մենք տվյալներ ենք ուղարկում սերիաներով, մենք պետք է քննենք յուրաքանչյուր բնույթի երկուական ներկայացումը, որը ցանկանում ենք ուղարկել, նայելով 1 և 0 հարաբերությունները և յուրաքանչյուր բիթը թողարկելով սերիական գծի վրա: Ներառել եմ dotmatrixled.c աղբյուրի երկրորդ տարբերակը, ինչպես նաև ստորև բերված Makefile- ը: Այն շրջում է նիշերի հավաքածուի միջով և ցուցադրում բոլոր զույգ նիշերը (եթե տարօրինակ է մտածել, որ տառը կարող է լինել կենտ կամ զույգ, մի պահ մտածեք երկուական ներկայացման մասին): Փորձեք պարզել, թե ինչպես այն դարձնել շրջանառության մեջ ՝ ցուցադրելով բոլոր տարօրինակ կերպարները: Դուք կարող եք հետագա փորձեր կատարել հերթափոխի գրանցամատյանի, կետային մատրիցի LED- ի և ձեր Arduino- ի միջև կապերի հետ: LED- ի և գրանցամատյանի միջև կան մի քանի հսկիչ հնարավորություններ, որոնք կարող են թույլ տալ ճշգրիտ կարգավորել ձեր վերահսկողությունը տվյալների ցուցադրման ժամանակ: Այսպիսով…. Մենք ութ մուտքի/ելքի պորտից օգտվելուց դարձել ենք միայն երկուսը:

Քայլ 5: Ամփոփում

Ամփոփում
Ամփոփում
Ամփոփում
Ամփոփում

Այս ուսանելիում ես ներկայացրել եմ DLO7135 կետային մատրիցով LED- ն և ինչպես այն դարձնել աշխատելու: Ավելին, ես քննարկեցի, թե ինչպես կրճատել պահանջվող մուտքի/ելքի միացումների թիվը ութից մինչև երկուսը `օգտագործելով հերթափոխի գրանցամատյանը: DLO7135 կետային մատրիցով LED- ը կարող է ամրացվել միասին `դարձնելով շատ գրավիչ և հետաքրքիր լուսանցքներ: Հուսով եմ, որ դուք զվարճացաք կարդալ այս ուսանելի ծրագիրը: Եթե որևէ բարելավում կա, որը կարծում եք, որ ես կարող եմ անել կամ առաջարկություններ, որոնք կցանկանայիք տալ այս կամ իմ «ամեն մի» մասին, ես ուրախ եմ լսել դրանք: Շնորհավոր AVR'ing:

Խորհուրդ ենք տալիս: