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

74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն ՝ 9 քայլ
74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն ՝ 9 քայլ

Video: 74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն ՝ 9 քայլ

Video: 74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն ՝ 9 քայլ
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, Դեկտեմբեր
Anonim
74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն
74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն
74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն
74HC164 հերթափոխի գրանցամատյանը և ձեր Arduino- ն

Տեղափոխման մատյանները թվային տրամաբանության շատ կարևոր մասն են, դրանք սոսնձի դեր են կատարում զուգահեռ և սերիական աշխարհների միջև: Նրանք նվազեցնում են մետաղալարերի քանակը, քորոցների օգտագործումը և նույնիսկ օգնում են հեռացնել ձեր պրոցեսորից բեռը ՝ կարողանալով պահել իրենց տվյալները: Դրանք գալիս են տարբեր չափերի, տարբեր օգտագործման մոդելների և տարբեր հնարավորությունների համար: Այն, ինչ ես այսօր կքննարկեմ, 74HC164 8 բիթանոցն է, զուգահեռաբար սերիական, չփակված, հերթափոխի գրանցամատյան: Ինչու՞: Դե ինչ, դա մեկն է այն ամենակարևոր տեղաշարժերի գրանցամատյաններից, որն ավելի հեշտ է դարձնում դրա մասին սովորելը, բայց պատահեց, որ այն միակն էր, որ ունեի (լոլ!), և միացրեք այն arduino- ի հետ, ներառյալ որոշ էսքիզներ և առաջնորդվող սխեմաներ: Հուսով եմ, որ բոլորդ կվայելեք:

Քայլ 1: Այսպիսով, ինչ են Shift գրանցամատյանները:

Այսպիսով, ինչ են հերթափոխի գրանցամատյանները
Այսպիսով, ինչ են հերթափոխի գրանցամատյանները

Ինչպես արդեն նշվեց, դրանք լինում են բոլոր տարբեր համային տեսականիով, և ես նաև նշեցի, որ ես օգտագործում եմ 74HC164 8 բիթանոց, սերիական զուգահեռաբար դուրս, չփակված, հերթափոխի գրանցամատյաններ, ի՞նչ է նշանակում այդ ամենը: Նախ ՝ 74 անունը նշանակում է 74xx տրամաբանական ընտանիքի մաս, և քանի որ իր տրամաբանությամբ այն չի կարող ուղղակիորեն վերահսկել շատ ընթացիկ (ամբողջ չիպի համար 16-20 մկա սովորական է), այն միայն ազդանշաններ է փոխանցում շուրջը, բայց դա չի նշանակում այդ ազդանշանը չի գնում դեպի տրանզիստոր, որը կարող է միացնել ավելի մեծ ընթացիկ բեռ: HC նշանակում է, որ այն ունի բարձր արագությամբ cmos սարք, դրա մասին կարող եք կարդալ ստորև բերված հղումից, սակայն այն, ինչ դրա մասին հիմնականում պետք է իմանալ, այն է, որ այն ցածր է սնուցման սարքը և կաշխատի 2 -ից 5 վոլտ (այնպես որ, եթե օգտագործում եք 3.3 վոլտ arduino ձեր լավ) Նաև այն կարող է ճիշտ աշխատել բարձր արագությունների դեպքում: քանի դեռ այն չի սկսի հիմարանալ) ինչպես ուզում եք Հերթափոխի գրանցամատյանը կազմված է մատով խափանման սխեմաներից, մատով խափանումը 1 բիթ հիշողություն է, այս մեկը ՝ հա s 8 (կամ 1 բայթ հիշողություն): Քանի որ այն հիշողություն է, եթե գրանցամատյանը թարմացնելու կարիք չունեք, կարող եք պարզապես դադարել «խոսել» նրա հետ, և այն կմնա այն վիճակում, ինչից այն թողել եք, մինչև նորից «չխոսեք» դրա հետ կամ չվերագործարկեք էներգիան: այլ 7400 տրամաբանական շարքերի հերթափոխի գրանցամատյանները կարող են զուգահեռաբար դուրս գալ մինչև 16 բիթանոց սերիա: Սա նշանակում է, որ ձեր arduino- ն այն տվյալներ է ուղարկում հաջորդաբար (անջատված իմպուլսները մեկը մյուսի հետևից), իսկ հերթափոխի գրանցամատյանը յուրաքանչյուր բիթը տեղադրում է ճիշտ ելքային քորոցի վրա: Այս մոդելի համար անհրաժեշտ է վերահսկել միայն 2 լար, այնպես որ դուք կարող եք օգտագործել 2 թվային կապում arduino- ում և այդ 2 -ից հասցնել 8 -ի ավելի թվային ելք: Որոշ այլ մոդելներ սերիալային զուգահեռ են, նրանք նույնն են անում, բայց որպես մուտքեր arduino- ում: (օրինակ, NES gamepad) չփակված Սա կարող է լինել այս չիպի անկում, եթե դրա կարիքը ունեք: Երբ տվյալները մուտքագրվում են հերթափոխի գրանցամատյանում սերիայի միջոցով, այն հայտնվում է ելքային առաջին փինում, երբ ժամացույցի զարկերակը մտնում է, առաջին բիթը տեղաշարժվում է 1 տեղով ՝ ելքերի վրա պտտելով ազդեցություն ստեղծելով, օրինակ ՝ 00000001 -ը կհայտնվի ելքերի վրա: որպես 101001000100001000001000000100000001 Եթե խոսում եք նույն տրամաչափը կիսող և այլևս չսպասող այլ տրամաբանական սարքերի հետ, դա կարող է խնդիրներ առաջացնել: Փակված հերթափոխի գրանցամատյաններն ունեն լրացուցիչ հիշողություն, այնպես որ, երբ տվյալները մուտքագրվեն գրանցամատյան, կարող եք շրջել անջատիչը և ցույց տալ արդյունքները, բայց այն ավելացնում է ևս մեկ մետաղալար, ծրագրակազմ և այն, ինչին պետք է հետևել: մենք վերահսկում ենք LED էկրանները, ոլորման էֆեկտը տեղի է ունենում այնքան արագ, որ դուք չեք կարող տեսնել այն (բացառությամբ այն դեպքերի, երբ առաջին անգամ միացնում եք չիպը), և երբ բայթը հերթափոխի գրանցամատյանում է, այլևս ոլորում չկա: Մենք վերահսկելու ենք գծագրի տեսակը, 7 հատված, և 16LED 4x4 կետանոց մատրիցա այս չիպով և arduino- ի ծրագրակազմով ՝ օգտագործելով ընդամենը 2 թվային կապում (+ հզորություն և հող)

Քայլ 2: Հիմնական էլեկտրամոնտաժ և շահագործում

Հիմնական էլեկտրամոնտաժ և շահագործում
Հիմնական էլեկտրամոնտաժ և շահագործում
Հիմնական էլեկտրամոնտաժ և շահագործում
Հիմնական էլեկտրամոնտաժ և շահագործում

Հաղորդալարեր 74HC164- ը 14 փին չիպ է, այն ունի 4 մուտքային կապ, 8 ելքային կապ, ուժ և հող, այնպես որ եկեք սկսենք վերևից: 1 և 2 կապերը երկուսն էլ սերիական մուտք են, դրանք տեղադրված են որպես տրամաբանական AND դարպաս, ինչը նշանակում է, որ նրանք երկուսն էլ պետք է լինեն տրամաբանորեն բարձր (այսինքն ՝ 5 վոլտ), որպեսզի բիթը դիտվի որպես 1, ցածր վիճակ (0 վոլտ) ցանկացածի վրա կկարդա որպես զրո: Մեզ իսկապես դա պետք չէ, և դրա հետ ավելի հեշտ է զբաղվել ծրագրային ապահովման մեջ, այնպես որ ընտրեք մեկը և կապեք այն V+ - ի հետ, որպեսզի այն միշտ բարձր լինի: Ես ընտրում եմ jumper- ը օգտագործել 1 -ին կապից մինչև 14 -րդ կապը (V+), քանի որ չիպի վրա կարող եք պարզապես մի տախտակ ցատկել: Մնացած սերիական մուտքը (իմ սխեմաների 2 -րդ փականը) arduino- ի թվային կապն է անցնելու: 74HC164- ի 3 -րդ, 4 -րդ, 5 -րդ և 6 -րդ ելքի առաջին 4 բայթերն են: Pin 7 -ը միանում է գետնին Անցում դեպի աջ, 8 -րդ կապ ժամացույցի քորոցն է, այսպես է հերթափոխի գրանցամատյանը գիտի, որ հաջորդ սերիան պատրաստ է դրա ընթերցման համար, այն պետք է միացված լինի arduino- ի թվային 3 -րդ կապին: 9 -րդ կետը միանգամից ամբողջ գրանցամատյանը մաքրելն է, եթե այն ցածր է, դուք ունեք այն օգտագործելու տարբերակ, բայց այս աննկատելիքի մեջ ոչինչ չկա, այնպես որ այն կապեք V+կապումներով 10, 11 12 և 13 ելքային ելքի վերջին 4 բայթ 14 -ն է չիպերի հզորությունը Գործողությունը Նախ անհրաժեշտ է սահմանել սերիական մուտքագրում գրանցամատյանի (թվային կապիչ 2 -ին arduino- ի վրա) բարձր կամ ցածր, այնուհետև ժամացույցի կապը (թվային կապ 3) ցածրից բարձր շրջեք, հերթափոխի գրանցամատյանը կկարդա սերիական մուտքի տվյալները և կփոխի ելքային կապերը 1, կրկնել 8 անգամ, և դուք սահմանել եք բոլոր 8 ելքերը: Սա կարող է արվել ձեռքով օղակների և թվային գրառումների համար arduino IDE- ում, բայց քանի որ t նա շատ տարածված ապարատային մակարդակի հաղորդակցություն է (SPI): նրանք ունեն մեկ գործառույթ, որը դա անում է ձեզ համար: shiftOut (dataPin, clockPin, bitOrder, value) Պարզապես ասեք, թե որտեղ են տվյալները և ժամացույցի կապերը միացված arduino- ին, ինչ եղանակով են տվյալները ուղարկվում և ինչ ուղարկվում, և դրա մասին հոգ է տանում ձեզ համար (հարմար)

Քայլ 3: Նախագծեր

Նախագծեր
Նախագծեր

Լավ, բավականաչափ դասախոսություն և տեսություն, թույլ տվեք ինչ -որ զվարճալի բաներ անել այս չիպի հետ: Կան 3 նախագիծ, որոնք պետք է փորձեն այս ուսանելի ծրագրում, առաջին 2 -ը հեշտ են և կարող են մի քանի վայրկյանում դուրս գալ: Երրորդը ՝ 4x4 առաջնորդվող մատրիցան, պահանջում է ավելի շատ ժամանակ և մտածում կառուցման համար ՝ առաջնորդվող էլեկտրագծերի շնորհիվ: Մասերի ցանկ Projectրագրի 1 -ին ՝ «2 մետաղալար» bargraph LED էկրանների վերահսկիչ 1 * 74HC164 Shift գրանցամատյան 1 * առանց զոդման տախտակ 1 * arduino, կամ arduino համատեղելի (5 վ) 1 * 330 օմ 1/4 վտ ռեզիստոր 8 * նորմալ ելքային կարմիր LED- ի 12 * ցատկող լարեր Նախագիծ 2 ՝ «2 լար» 7 հատվածի ցուցադրման վերահսկիչ 1 * 74HC164 հերթափոխի գրանցամատյան 1 * առանց զոդման տախտակ 1 * arduino, կամ arduino համատեղելի (5 վ) 1 * 330 օմ 1/4 վտ դիմադրություն 1 * ընդհանուր կաթոդ յոթ հատվածի ցուցադրում 9 * թռիչքային լարեր Նախագիծ 3 ՝ «2 մետաղալար» 4x4 LED մատրիցով ցուցադրում 1 * 74HC164 Shift register1 * arduino, կամ arduino համատեղելի (5v) 4 * 150 ohm 1 1/4 վտ դիմադրություն 8 * 1 Կմ 1/8 վտ դիմադրություն (կամ ավելի մեծ) 8 * NpN տրանզիստոր (2n3904 կամ ավելի լավ) 16 * նորմալ ելքային կարմիր LED- ն այն կառուցելու միջոց է և կարգավորվող 5 վոլտ հզորություն, որը կարող է գործածել 160+մա (կարող եք միացրեք բոլոր LED- ները միաժամանակ արգելակի լույսի պես)

Քայլ 4. Projectրագիր 1 [pt 1]. '2 Wire' Bargraph LED Display Controller Hardware

Նախագիծ 1 [pt 1]. «2 Wire» Bargraph LED Display Controller Hardware
Նախագիծ 1 [pt 1]. «2 Wire» Bargraph LED Display Controller Hardware
Նախագիծ 1 [pt 1]. '2 Wire' Bargraph LED Display Controller Hardware
Նախագիծ 1 [pt 1]. '2 Wire' Bargraph LED Display Controller Hardware

Միացրեք arduino- ի և հերթափոխի գրանցամատյանը ըստ սխեմատիկ պատկերի, ես արդեն ունեմ տախտակի օգտագործման համար պատրաստվող 10 հատվածի գծագրիչ և դա այն է, ինչ կտեսնեք նկարում, բայց նույնը կարող եք անել առանձին լեդերով երկրորդ էջում Ես հայտարարեցի, որ դրանք վարորդական սարքեր չեն, դրանք տրամաբանական սարքեր են, որոնց միջով կարող են անցնել հոսանքի փոքր քանակություններ: 8 LED- ները գործարկելու համար, միացումը պարզ պահելով և հերթափոխի գրանցամատյանը չպատրաստելով, պահանջում է, որ մենք բավականին սահմանափակենք հոսանքը: LED- ները զուգահեռաբար լարված են և կիսում են ընդհանուր հիմք (ընդհանուր կաթոդ), նախքան հոսանքի անցնելը մատակարարման գետնին նրանք պետք է անցնեն 330 օմ ռեզիստորով ՝ սահմանափակելով հոսանքի ընդհանուր քանակը, որը բոլոր LED- ները կարող էին օգտագործել մինչև 10 մա (5 վոլտ): այս օրինակը, որպեսզի լուսադիոդներն իրենց համապատասխան հոսանքով վարեն, ձեզ հարկավոր է տեղադրել տրանզիստոր, որտեղ հերթափոխի գրանցամատյանը կարող է միացնել / անջատել ընթացիկ ավելի բարձր աղբյուրը (տե՛ս նախագիծը 3) Տեղափոխման գրանցամատյանի տվյալների կապը (փին 2) անհրաժեշտ է arduino թվային PIN # 2 -ին Shift ռեգիստրի ժամացույցի քորոցը (pin 8) պետք է միանա arduino թվային # 3 կապին

Քայլ 5. Projectրագիր 1 [pt 2]. '2 Wire' Bargraph LED Display Controller Software

Նախագիծ 1 [pt 2]. '2 Wire' Bargraph LED Display Controller Software
Նախագիծ 1 [pt 2]. '2 Wire' Bargraph LED Display Controller Software
Նախագիծ 1 [pt 2]. '2 Wire' Bargraph LED Display Controller Software
Նախագիծ 1 [pt 2]. '2 Wire' Bargraph LED Display Controller Software

Օրինակ 1. Բացեք ֆայլը «_164_bas_ex.pde» arduino IDE- ի ներսում, դա մի պարզ ուրվագիծ է, որը թույլ է տալիս սահմանել կամ անջատել լուսադիոդային էկրանին LED- ները: Առաջին 2 տողերը սահմանում են այն կապի համարները, որոնք մենք կօգտագործենք տվյալների և ժամացույցի համար, I օգտագործել #define over const integer, ես ավելի հեշտ եմ հիշում, և որևէ մեկին կամ մյուսին առավելություն չկա #սահմանել տվյալները 2 #սահմանել ժամացույցը 3 Հաջորդը դատարկ կարգաբերման գործառույթն է, այն աշխատում է միայն մեկ անգամ, ուստի arduino- ն պտտվում է on, սահմանում է հերթափոխի գրանցամատյանը և այլ անելիք չունի: Void setup ֆունկցիայի ներսում մենք ժամացույցը և տվյալների կապերը դնում ենք որպես OUTPUT կապ, այնուհետև օգտագործելով shiftOut գործառույթը, մենք տվյալները ուղարկում ենք shift գրանցիչին void setup () {pinMode (clock, OUTPUT); // ժամացույցի քորոցը դարձնել ելքային pinMode (տվյալներ, OUTPUT); // դարձրեք տվյալների քորոցը ելքային shiftOut (տվյալներ, ժամացույց, LSBFIRST, B10101010); // ուղարկեք այս երկուական արժեքը հերթափոխի գրանցամատյանին B- ից անցած տարրը ամենաքիչ նշանակալից բիթն է: Սկզբում այն սնվում է սկզբում, այնպես որ այն հայտնվում է վերջին ելքի վրա, երբ բոլոր 8 բիթերը սնվում են:, փորձեք խաղալ տարբեր արժեքներով `տարբեր նախշեր միացնելու կամ անջատելու համար և վերջապես դատարկ դատարկ հանգույց (որովհետև ձեզ դա անհրաժեշտ է նույնիսկ այն դեպքում, երբ այն չեք օգտագործում) դատարկ հանգույց () {} // առայժմ դատարկ հանգույց Օրինակ 2. առաջին 8 տողերն են նույնը, ինչ առաջին օրինակի առաջին 8 տողերը, ըստ էության, դրանք չեն փոխվի մյուս նախագծերից որևէ մեկի համար, ուստի #սահմանեք տվյալները 2 #սահմանեք ժամացույցը 3 խուսափեք կարգավորումից () {pinMode (ժամացույց, ԵԼՔ); // ժամացույցի քորոցը դարձնել ելքային pinMode (տվյալներ, OUTPUT); // դարձրեք տվյալների քորոցը ելք: Բայց այժմ դատարկ կարգավորման դեպքում կա 8 օղակի հաշվարկ, այն վերցնում է դատարկ բայթ և միաժամանակ 1 բիթ է փոխում ՝ սկսած ձախակողմյան բիտից և շարժվելով աջ: Սա հետ է մնում առաջին օրինակից, որտեղ մենք սկսել էինք աջից և աշխատել ձախ, բայց օգտագործելով MSBFIRST shift out գործառույթը տվյալները ուղարկում է ճիշտ ճանապարհով: Նաև մենք ավելացնում ենք for loop- ի հետաձգում, որպեսզի այն բավական դանդաղեցնի տեսանելի լինելու համար: (int i = 0; i <8; ++ i) // համար 0 - 7 դեպքում {shiftOut (տվյալներ, ժամացույց, MSBFIRST, 1 << i); // բիթը տեղափոխում է տրամաբանական բարձր (1) արժեքը i հետաձգմամբ (100); // հետաձգեք 100 ms, այլապես չեք կարողանա տեսնել այն}} void loop () {} // դատարկ օղակ այժմ վերբեռնեք սցենարը, և այժմ դուք պետք է տեսնեք, որ գծագիրը լուսավորում է յուրաքանչյուր լույսը մեկ առ մեկ

Քայլ 6. Նախագիծ 2. «2 մետաղալար» 7 հատվածի ցուցադրման վերահսկիչ

Նախագիծ 2 ՝ «2 մետաղալար» 7 հատվածի ցուցադրման վերահսկիչ
Նախագիծ 2 ՝ «2 մետաղալար» 7 հատվածի ցուցադրման վերահսկիչ
Նախագիծ 2 ՝ «2 մետաղալար» 7 հատվածի ցուցադրման վերահսկիչ
Նախագիծ 2 ՝ «2 մետաղալար» 7 հատվածի ցուցադրման վերահսկիչ

Նայեք ձեր 7 հատվածի ցուցադրման եզրագծին (ես ունեի միայն երկակի, բայց միայն կեսը) և ստորև բերված գծագրով միացրեք յուրաքանչյուր հատված հերթափոխի գրանցման ճիշտ բիթին bitbit 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (եթե ցանկանում եք օգտագործել տասնորդական կետը) Եվ 330 օհմ ռեզիստորի միջոցով ցուցադրման կաթոդը և սնուցման աղբյուրը այժմ բացեք յոթ_սեգ_դեմո.պդ arduino IDEF- ում սկզբում տեսնում եք, թե որտեղ ենք մենք սահմանում տվյալները և ժամացույցի կապերը #սահմանում ենք տվյալները 2 #սահմանում ենք ժամացույցը 3 Հաջորդը մենք բոլոր երկու նախշերը դնում ենք երկուական ձևով, սա բավականին հեշտ է, եթե ստորին հատվածի կարիք ունեք, նայեք ստորև ներկայացված նկարին: մուտքագրեք մեկը, հաջորդը ձեզ հարկավոր է վերին հատվածը, եթե այո մուտքագրեք մեկ այլ, շարունակեք դա մինչև ծածկել բոլոր 8 հատվածները, նկատեք, որ իմ աջ բիթը (բիթ 8) միշտ 0 է, այդ պատճառով ես երբեք չեմ միացնում տասնորդականը կետ. բայթ զրո = B01111110; բայթ մեկ = B00000110; բայթ երկու = B11011010; բայթ երեք = B11010110; բայթ չորս = B10100110; բայթ հինգ = B11110100; բայթ վեց = B11111100; բայթ յոթ = B01000110; բայթ ութ = B11111110; բայթ ութ = B1111110; byte ութ = B11111110; բայթ ութ = B11111110; հաջորդը void setup- ում մենք մեր տվյալները և ժամացույցի կապումներն ենք դնում void setup () {pinMode (ժամացույց, OUTPUT) ելքեր; // ժամացույցի քորոցը դարձնել ելքային pinMode (տվյալներ, OUTPUT); // դարձրեք տվյալների կապը ելք 3} այնուհետև դատարկ օղակում մենք օգտագործում ենք shiftOut ՝ յուրաքանչյուր օրինակը (թիվը) ցուցադրելու համար սպասեք 1/2 վայրկյան և ցուցադրեք հաջորդը ՝ 0 -ից 9 -ը, քանի որ դա արվում է դատարկ օղակի ֆունկցիայում: 0-9 և կրկնել ընդմիշտ: void loop () {shiftOut (տվյալներ, ժամացույց, LSBFIRST, զրո); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, մեկ); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, երկու); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, երեք); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, չորս); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, հինգ); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, վեց); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, յոթ); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, ութ); ուշացում (500); shiftOut (տվյալներ, ժամացույց, LSBFIRST, ինը); ուշացում (500);}

Քայլ 7. Projectրագիր 3 [pt 1]. '2 Wire' 4x4 Led Matrix Display

Նախագիծ 3 [pt 1]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 1]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 1]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 1]. '2 Wire' 4x4 Led Matrix Display

4x4 LED մատրիցային նախագիծը մի փոքր ավելի բարդ է, բայց այն գրեթե ամբողջովին շինարարության մեջ է, ես ընտրում եմ, որ իմը զոդվի սալիկի վրա, բայց հնարավոր է, որ այն հնարավոր լինի կրկնօրինակել տախտակի վրա, շատ ավելի հեռու: Շրջանակը նույնպես տարբերվում է նրանով, որ հերթափոխի ռեգիստրը ուղղակիորեն չի առաջնորդում led- ը, փոխարենը հերթափոխի գրանցամատյանում թողարկվող ելքերը 1 Կոհմ ռեզիստորի միջոցով ուղարկվում են NpN տրանզիստորի հիմքին, երբ բիտի ելքը բարձր է, այն թույլ է տալիս բավականաչափ հոսանք և լարում անցնել տրանզիստոր `կոլեկտորի և արտանետիչի միջև կապը փոխելու համար, կոլեկտորները կապված են« ամուր »կարգավորվող 5 վոլտերի հետ: Տրանզիստորների ճառագայթիչները միացված են 150 օմ ռեզիստորների, իսկ դիմադրիչները` 4 շարանի անընդմեջ անոդների հետ և տողը սահմանափակում է մինչև 20 մա, չնայած էկրանին պատկերներ նկարելիս միաժամանակ միացված է միայն 1 լուսարձակը, և, հետևաբար, ամբողջ պայծառության մոտ (քանի որ դրանք միանում և անջատվում են շատ արագ ՝ ամբողջ պատկերը կազմելու համար) Կան 4 տող և 4 սյուներ, յուրաքանչյուրը տողը ստանում է ռեզիստոր և տրանզիստոր, յուրաքանչյուր սյունակի վրա LED- ի կաթոդները կապված են իրար, բախվում են տրանզիստորի կոլեկտորի հետ, որի հիմքը նույնպես վերահսկվում է հերթափոխի մատյանով և վերջապես դուրս է գալիս գետնին: Սխեմատիկ www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Քայլ 8. Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display

Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display
Նախագիծ 3 [pt 2]. '2 Wire' 4x4 Led Matrix Display

Տեղափոխման գրանցամատյանը վերահսկում է LED- ի և՛ անոդը, և՛ կաթոդները YX ձևաչափով: 6 = տող 2 բիտ 7 = տող 3 բիտ 8 = տող 4 Պատկեր պատրաստելու համար գրաֆիկական թղթի վրա գծեք 4x4 քառակուսի և լրացրեք, թե որոնք եք ցանկանում ցուցադրել, հաջորդը կազմեք YX աղյուսակ: Ստորև կտեսնեք նմանակման քարտեզագրում, ինչպես նաև լավագույնը կարելի է անել 4x4 «պիքսելներով»: Յուրաքանչյուր լրացված հատվածի համար ես գրում եմ, թե որ սյունակում է (Y), այնուհետև որ շարքում է (X): Այժմ բացեք arduino IDE- ի _4x4.pde ֆայլը դուք կտեսնեք մեր հին 2 ընկերներին #սահմանեք տվյալները 2 #սահմանեք ժամացույցը 3 ապա ամբողջ թվերի զանգված int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Եթե նայեք, դա ընդամենը իմ գրված YX կոորդինատների ցանկն է, հետույքի մեջ մեծ ցավ կլինի այդ արժեքները ձեռքով փոխակերպելը, և մենք ունենք համակարգիչ… թող դա անի: մեր ժամացույցը և տվյալների կապում OUTPUTS void setup () {pinMode (ժամացույց, OUTPUT); // ժամացույցի քորոցը դարձնել ելքային pinMode (տվյալներ, OUTPUT); // դարձրեք տվյալների կապը ելք 3} Եվ շփոթեցնող տեսք ունեցող դատարկ օղակ, ամեն ինչ սկսելու համար մենք պետք է որոշ տեղական փոփոխականներ հայտարարենք void loop () {int Y; int X; բայթ դուրս; Հետո for loop, այս օղակը պետք է լինի այնքան երկար, որքան img զանգվածի գրառումների քանակը, այս պատկերի համար ես օգտագործել եմ ընդամենը 6 պիքսել, այնպես որ դա կազմում է 12 YX կոորդինատ: Ես ստիպում եմ, որ նա բաց թողնի յուրաքանչյուր այլ թիվ ՝ օգտագործելով i += 2, քանի որ մենք կարդում ենք 2 կոորդինատ մեկ օղակի համար (int i = 0; i <12; i += 2) // կետերի քանակը img զանգվածում, այս դեպքում 12 {Այժմ մենք կարդում ենք Y գրառումը զանգվածում և մեկից հանում ենք դրա արժեքից, քանի որ բայթերը չեն սկսվում մեկից, նրանք սկսվում են զրոյից, բայց մենք հաշվել ենք 1 -ից // ստանալ առաջին զույգ YX լարերը Y = (img - 1); // հանել մեկը, քանի որ բիտերի հաշվարկը սկսվում է 0 -ից: Հաջորդը մենք զանգվածում կարդում ենք X մուտքը [i + 1], և հանում ենք դրա արժեքից, նույն պատճառով X = (img [i + 1] - 1); Այն բանից հետո, երբ մենք ունենք պիքսելի YX արժեքները, մենք կատարում ենք բիթային կամ մաթեմատիկական և ձախ տեղաշարժ: Նախ պետք է կարդալ X արժեքը, և ինչպիսին էլ լինի դրա արժեքը, այն տեղափոխեք այնքան տեղ + 4, այնպես որ, եթե X- ը 4 է և ավելացրեք 4 -ը 8 -րդ բիթ է (MSB), նորից նայելով գծապատկերին … բիթ 1 = սյունակ 1 (աջից աջ) բիթ 2 = սյունակ 2 բիթ 3 = սյունակ 3 բիթ 4 = սյունակ 4 բիթ 5 = տող 1 (ամենաբարձր) բիթ 6 = տող 2 բիթ 7 = տող 3 բիթ 8 = տող 4 Բիթ 8 -ը վերջին տողն է: Հաջորդը Y արժեքը նույնպես տեղափոխվում է ձախ, այս անգամ միայն ինքն իրենով, ոչինչ ավելացված չէ: Ի վերջո, երկուսը միասին կազմված են 1 բայտի փոխարեն `2 կես բայթ (կծկվում է), օգտագործելով bitwise կամ (խորհրդանիշը |) վերցնում է երկու բայթ և դրանք հիմնականում ավելացնում միասին, ենթադրենք X = 10000000Y = 00000001 -------------------- OR = 10000001row 4 սյունակ 1 դուրս = 1 << (X + 4) | 1 << Y; Եվ վերջապես shiftOut ներկայիս պատկերը ցուցադրելու համար և շարունակեք դա անել, մինչև զանգվածում այլ տվյալներ չունենանք… մի պահ հետաձգեք և միանգամից շրջանցեք, քանի որ մենք տվյալները տեղափոխում էինք ձախ, և մեզ անհրաժեշտ է, որ MSB- ն լինի վերջին ելքային կապում հերթափոխի գրանցամատյանը նախ ուղարկի այն: shiftOut (տվյալներ, ժամացույց, MSBFIRST, դուրս); // բայթը տեղափոխել մեր գրանցման հետաձգում (1); // հետաձգել այն, որպեսզի հնարավորություն ունենա լույսի մի կետ թողնել ձեր աչքերում: Ազատ զգալ պատրաստեք ձեր սեփական պատկերներն ու էֆեկտները: Կան 3 նմուշի ֆայլեր, ժպիտի դեմքը և վահանակը (որն ավելի շատ գծերի է նման), և վերջապես պատահական կայծակ ստեղծող

Քայլ 9: Եզրակացություն

Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն

Այս ամենի համար բավականին հարմար փոքրիկ չիպ է, և ես ուրախ եմ, որ այն ջնջեցի մի հին էլեկտրոնիկայից, որն ուղարկել էր աղբարկղ: Այն կարող է օգտագործվել այլ բաների համար, բացի ցուցադրման համակարգերից, բայց բոլորին դուր են գալիս լույսերը և տեսնելու ակնթարթային արձագանքը: այն, ինչ կատարվում է, ծայրահեղ օգտակար է տեսողական մտածողների համար, ինչպիսին ես եմ: Նաև, խնդրում եմ, ներեք իմ կոդը, ես միայն arduino ունեմ հոկտեմբերի երրորդ շաբաթից սկսած, և դա բավականին մեծ վթարի ընթացք էր:Բայց դա համակարգի ամենակարևոր բանն է, եթե նստեք և աշխատեք դրա հետ, այն լի է կոկիկ հատկություններով, որոնք հեշտացնում են աշխարհը կառավարել 8 բիթանոց միկրոկոնտրոլերով: Ինչպես միշտ հարցերն ու մեկնաբանությունները ողջունելի են, և շնորհակալություն կարդալով, հուսով եմ, որ շատ բան ես սովորել

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