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

Arduino և Touchpad Tic Tac Toe. 8 քայլ (նկարներով)
Arduino և Touchpad Tic Tac Toe. 8 քայլ (նկարներով)

Video: Arduino և Touchpad Tic Tac Toe. 8 քայլ (նկարներով)

Video: Arduino և Touchpad Tic Tac Toe. 8 քայլ (նկարներով)
Video: SKR Pro V1.1 - TMC2209 UART with Sensor less Homing 2024, Հունիսի
Anonim
Arduino և Touchpad Tic Tac Toe
Arduino և Touchpad Tic Tac Toe

Կամ ՝ վարժություն մուտքային և ելքային բազմապատկման և բիթերի հետ աշխատելու համար: Եվ ներկայացում Arduino մրցույթին:

Սա տիկ -թեք խաղի խաղ է, որը ցուցադրման համար օգտագործում է երկգույն LED- ների 3x3 զանգված, պարզ դիմադրիչ հպում և Arduino ՝ ամեն ինչ իրար միացնելու համար: Այն տեսնելու համար տեսեք տեսանյութը. Ինչ է պահանջում այս նախագիծը. Մասեր և ծախսվող նյութեր Մեկ պերֆ տախտակ (կամ ժապավենային տախտակ) Ինը երկգույն LED, ընդհանուր կաթոդ Ինը նույնական դիմադրողականություն, 100-220 օմ տիրույթում Վեց նույնական դիմադրություն, 10kohm - 500kohm միջակայք Մեկ բևեռ, երկակի նետում անջատիչ Մի փունջ գլխագին կապեր Մի փունջ էլեկտրական մետաղալար Մեկ թափանցիկ ակրիլային քառակուսի փոքր թերթ, thick 1 մմ հաստությամբ, 8 սմ կողմում Մաքուր կպչուն ժապավեն atերմային փոշիներ (ըստ ցանկության) Վերը նշված բոլորը բավականին տարածված իրեր են, ընդհանուր արժեքը չպետք է գերազանցի $ 20 -ը: Գործիքներ One Arduino- ի տեղադրում (Arduino Duemilanove, Arduino IDE, համակարգիչ, USB մալուխ) Սովորական էլեկտրական գործիքներ (մուլտիմետր, զոդման ատրճանակ, մետաղալարեր, մետաղալար կտրիչ) Arduino- ի հետ կապված ամեն ինչ կարող է լինել հայտնաբերված է https://www.arduino.cc կայքում: Շինության հետ!

Քայլ 1. LED մատրիցի միացում

LED մատրիցի միացում
LED մատրիցի միացում
LED մատրիցի միացում
LED մատրիցի միացում

LED- ի լուսավորության համար դրա երկու լարերը պետք է միացված լինեն: Եթե մենք 18 LED- ներից յուրաքանչյուրին նվիրենք մի զույգ կապում (9 կարմիր, 9 կանաչ), ապա Arduino- ում մենք արագորեն կսպառվեինք: Այնուամենայնիվ, մուլտիպլեքսավորման դեպքում մենք կկարողանանք բոլոր LED- ները հասցեագրել ընդամենը 9 կապում: Դրա համար LED- ները միացված են խաչաձև ձևով, ինչպես ցույց է տրված առաջին նկարում: LED- ները խմբավորված են երեք սյունակներով, իսկ դրանց կաթոդները ՝ վեցանկյուն շարքերում: Որոշակի անոդի գիծը բարձր, իսկ որոշակի կաթոդի գիծը ՝ ցածր, և մյուս բոլոր անոդների և կաթոդների գծերի վրա բարձր դիմադրություն ունենալով, մենք կարող ենք ընտրեք, թե որ լուսադիոդն ենք ուզում լուսավորվել, քանի որ ընթացքը կարող է անցնել միայն մեկ հնարավոր ճանապարհով: Օրինակ ՝ երկրորդ նկարում ՝ կանաչ անոդը 1 տող բարձր կանգնեցնելով, իսկ կաթոդ 1 տողը ցածր, ներքևի ձախ կանաչ LED լուսավորությունը. Այս դեպքում ընթացիկ ուղին ցուցադրվում է կապույտ գույնով: Բայց ինչ անել, եթե ցանկանում եք լուսավորել մեկից ավելի LED տարբեր գծերի վրա: Դրան հասնելու համար մենք կօգտագործենք տեսլականի համառությունը: Շատ արագ ընտրելով LED զույգ գծեր, դա պատրանք է տալիս, որ ընտրված բոլոր LED- ները միաժամանակ լուսավորված են:

Քայլ 2: LED մատրիցի դասավորություն

LED մատրիցային դասավորություն
LED մատրիցային դասավորություն
LED մատրիցային դասավորություն
LED մատրիցային դասավորություն

Ստորև բերված սխեման ցույց է տալիս, թե ինչպես են LED- ները ֆիզիկապես միացված (G1-G9. Կանաչ լուսադիոդներ, R1-R9 ՝ կարմիր լուսադիոդներ): Այս դիագրամը նախատեսված է միայնակ կարմիր և կանաչ LED- ների համար, եթե դուք օգտագործում եք երկգույն ընդհանուր կաթոդ կարմիր/կանաչ LED- ներ, կարմիր/կանաչ զույգի համար կա միայն մեկ կաթոդ, որը պետք է լարել: Կարմիր և կանաչ անոդների գծերը մտնում են PWM կապում: Arduino- ի (կապեր 3, 5, 6, 9, 10, 11 Duemilanove- ում), այնպես որ մենք կարող ենք հետագայում մարելու հետևանքներ ունենալ: Կաթոդային տողերը մտնում են 4, 7 և 8 կապում: Կաթոդի և անոդի յուրաքանչյուր տող ունի 100 օմ դիմադրողականություն `պաշտպանելու համար:

Քայլ 3. Հղում դեպի LED մատրիցա

Tic tac toe կոդի համար մենք պետք է կարողանանք պահել LED- ների մասին հետևյալ տեղեկությունները. 9 բջիջների զանգվածում ՝ օգտագործելով երեք թվանշան ՝ վիճակը ներկայացնելու համար (0 = անջատված, 1 = կարմիր միացված, 2 = կանաչ միացված): Ամեն անգամ, երբ մենք պետք է ստուգենք LED- ի վիճակները, օրինակ `ստուգելու, թե արդյոք կա հաղթելու պայման, մենք պետք է շրջանցենք զանգվածը: Սա աշխատունակ մեթոդ է, բայց բավականին անհարմար: Ավելի պարզեցված մեթոդ կլիներ օգտագործել ինը բիթանոց երկու խումբ: Ինը բիթանոց առաջին խումբը պահում է LED- ների միացման և անջատման կարգավիճակը, իսկ ինը բիթանոց երկրորդ խումբը պահում է գույնը: Հետո, լուսադիոդային վիճակները շահարկելը պարզապես դառնում է մի փոքր թվաբանական և տեղաշարժվող: Ահա աշխատված օրինակ. Եկեք ասենք, որ գծապատկերով գծում ենք մեր tic tac toe ցանցը և առաջինը օգտագործում ենք 1s և 0s ՝ միացման / անջատման կարգավիճակը ներկայացնելու համար (1-ը միացված է, 0-ն անջատված է). LED- ները վառվում են 001 Եթե ստորին ձախից թվարկենք բջիջները, կարող ենք վերը նշված պատկերումները գրել որպես բիթերի շարք: Առաջին դեպքում դա կլինի 100000000, իսկ երկրորդ դեպքում `001010100: Եթե դրանք դիտարկենք որպես երկուական ներկայացումներ, ապա բիթերի յուրաքանչյուր շարքը կարող է խտացվել մեկ թվով (առաջին դեպքում` 256, 84 երկրորդ դեպքում): Այսպիսով, մատրիցայի վիճակը պահելու համար զանգված օգտագործելու փոխարեն, մենք կարող ենք օգտագործել միայն մեկ թիվ: Նմանապես, մենք կարող ենք նույն կերպ ներկայացնել LED- ի գույնը (1 -ը կարմիր է, 0 -ը `կանաչ): Եկեք նախ ենթադրենք, որ բոլոր LED- ները վառված են (ուստի անջատման կարգավիճակը ներկայացված է 511-ով): Ստորև բերված մատրիցան այնուհետև կներկայացնի LED- ների գույնի վիճակը. 010 կանաչ, կարմիր, կանաչ 101 կարմիր, կանաչ, կարմիր 010 կանաչ, կարմիր, կանաչ սկզբում `անջատված, ապա` գունային վիճակում: Օրինակ, ենթադրենք, մեր անջատման վիճակը 100100100 է, իսկ գույնի վիճակը `010101010: Ահա մեր LED ալգորիթմը լուսավորման LED մատրիցի համար. դիմակավորում): Քայլ 2. Եթե դա ճիշտ է, LED լուսավորված է: Այժմ կատարեք գունային վիճակի մի փոքր ավելացում երկուական 1. Քայլ 3. Եթե դա ճիշտ է, լուսավորեք կարմիր LED- ը: Եթե դա կեղծ է, լուսավորեք կանաչ LED- ը: Քայլ 4. Տեղափոխեք ինչպես անջատման, այնպես էլ գույնի վիճակը ՝ մեկ բիթ դեպի աջ (այսինքն ՝ բիթը փոխում է): Քայլ 5. Կրկնեք 1-4 քայլերը մինչև բոլոր ինը բիթերը կարդալը: Նկատի ունեցեք, որ մենք մատրիցան հետ ենք լրացնում. Մենք սկսում ենք բջիջ 9 -ով, այնուհետև վերադառնում դեպի բջիջ 1: Բացի այդ, անջատման և գույնի վիճակները պահվում են որպես անստորագիր ամբողջ տեսակի (բառի) փոխարեն ստորագրված ամբողջ տիպի: Դա պայմանավորված է նրանով, որ փոքր -ինչ տեղաշարժվելու դեպքում, եթե զգույշ չլինենք, կարող ենք ակամա փոխել փոփոխականի նշանը: Կից ներկայացված է LED մատրիցը լուսավորելու ծածկագիրը:

Քայլ 4: Touch Pad- ի կառուցում

Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում
Touch Pad- ի կառուցում

Touchpad- ը կառուցված է բարակ ակրիլային թերթիկից, որը բավականաչափ մեծ է `ծածկելու LED մատրիցը: Այնուհետև, շարանի և սյունակի լարերը կպցրեք ակրիլային թերթիկի վրա ՝ օգտագործելով հստակ ժապավեն: Մաքուր ժապավենը օգտագործվում է նաև որպես մեկուսիչ հեռավորություն լարերի միջև ՝ խաչմերուկներում: Համոզվեք, որ օգտագործեք մաքուր գործիքներ, որպեսզի կանխեք մատների քսուքը ժապավենի կպչուն կողմը: Մատնահետքի բծերը ոչ միայն տգեղ տեսք ունեն, այլ ժապավենը դարձնում են ավելի քիչ կպչուն: Կտրեք գծերից յուրաքանչյուրի մի ծայրը, իսկ մյուս ծայրը կպցրեք ավելի երկար մետաղալարերի: Resistոդեք ռեզիստորը լարերի հետ միասին, նախքան միակցիչների վրա զոդելը: Այստեղ օգտագործվող ռեզիստորները 674k են, բայց 10k- ից մինչև 1M- ի միջև ցանկացած արժեք պետք է լինի լավ: Arduino- ի հետ կապերը կատարվում են 6 անալոգային կապերի միջոցով, որոնցից 14-16 կապումներն ամրացված են մետաղալարերի շարքերում, իսկ 17-19 կապում սյուները:

Քայլ 5. Touch Pad. Ինչպես է այն աշխատում

Touch Pad - Ինչպես է այն աշխատում
Touch Pad - Ինչպես է այն աշխատում
Touch Pad - Ինչպես է այն աշխատում
Touch Pad - Ինչպես է այն աշխատում

Asիշտ այնպես, ինչպես մենք օգտագործում էինք խաչաձև մուլտիպլեքսեր `նվազագույն կապումներով LED մատրիցա ստեղծելու համար, մենք կարող ենք օգտագործել նմանատիպ խաչաձև մուլտիպլեքսեր` հպման տվիչների զանգված ստեղծելու համար, որն այնուհետև կարող ենք օգտագործել LED- ները ակտիվացնելու համար: Այս սենսորային պահոցի հայեցակարգը պարզ է: Դա, ըստ էության, մետաղալար է ՝ երեք մերկ լարերով, որոնք շարված են շարքերով, և երեք մերկ լարեր ՝ շարքերից վերև գտնվող սյուներով: Յուրաքանչյուր խաչմերուկում մեկուսացման մի փոքր քառակուսի է, որը թույլ չի տալիս երկու լարերը դիպչել: Խաչմերուկին դիպչող մատը կապ կհաստատի երկու լարերի հետ, ինչը կհանգեցնի հսկայական, բայց վերջավոր դիմադրության երկու լարերի միջև: Փոքր ընթացիկ, բայց նկատելի ընթացիկ, հետևաբար, կարելի է մատի միջոցով հոսել մի մետաղալարից մյուսը: Որոշելու համար, թե որ խաչմերուկն է սեղմվել, օգտագործվել է հետևյալ մեթոդը. Քայլ 2. Տողերի տողերը սահմանեք INPUT ՝ ներքին ձգումներն ակտիվացված: Քայլ 3. Վերցրեք անալոգային ընթերցում յուրաքանչյուր տողի տողում, մինչև արժեքը նվազի տվյալ շեմից ցածր: Սա ձեզ ասում է, թե որ շարքում է սեղմված խաչմերուկը: Քայլ 4. Կրկնեք 1-3 քայլերը, բայց այժմ սյուները մուտքագրված են, իսկ տողերը `ելքեր: Սա ձեզ ասում է, թե որ սյունակում է սեղմված խաչմերուկը: Աղմուկի հետևանքները նվազագույնի հասցնելու համար մի շարք ընթերցումներ են կատարվում, այնուհետև միջինացվում: Միջին արդյունքը համեմատվում է շեմի հետ: Քանի որ այս մեթոդը պարզապես ստուգում է շեմը, այն հարմար չէ միաժամանակյա սեղմումներ հայտնաբերելու համար: Այնուամենայնիվ, քանի որ tic tac toe- ն հերթափոխով է ընթանում, մեկ մամուլ կարդալը բավարար է: Կից ներկայացված է ուրվագիծ, որը ցույց է տալիս, թե ինչպես է գործում հպման վահանակը: Ինչպես LED մատրիցի դեպքում, բիթերն օգտագործվում են ներկայացնելու համար, թե որ խաչմերուկը սեղմված էր:

Քայլ 6: Ամեն ինչ միասին հավաքելը

Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը

Այժմ, երբ բոլոր առանձին բաղադրիչներն ավարտված են, ժամանակն է դրանք բոլորը միասին դնել: layածկեք մետաղալարը ցանցի LED մատրիցի վրա: Հնարավոր է ՝ ձեզ անհրաժեշտ լինի վերադասավորել LED մատրիցային ծածկագրի քորոցների համարակալումները, որպեսզի այն համաժամացվի մետաղալարերի սենսորի հետ: Ամրացրեք մետաղալարը ձեր նախընտրած ամրակապերով կամ սոսինձներով և ամրացրեք գեղեցիկ խաղատախտակի վրա: Ավելացրեք անցում 12 -ի և Arduino- ի գետնի միջև: Այս անջատիչը պետք է անցնի 2 նվագարկիչի ռեժիմի և 1 նվագարկիչի ռեժիմի միջև (ընդդեմ միկրոկառավարիչի):

Քայլ 7. Programրագրավորում Tic Tac Toe

Կցված է խաղի ծածկագիրը: Եկեք առաջինը տիկ -թաթ խաղը բաժանենք իր տարբեր քայլերի ՝ երկու խաղացողի ռեժիմով. Քայլ 2. Այդ բջիջի լուսադիոդը լուսավորվում է A. գույնով: Քայլ 3. Ստուգեք, թե արդյոք խաղացողը A- ն հաղթել է: Քայլ 4. Խաղացող B- ն ընտրում է չլցված բջիջ: Քայլ 5: Այդ բջիջի LED- ն վառվում է B գույնով:. Քայլ 6. Ստուգեք, թե արդյոք խաղացող B- ն հաղթել է: Քայլ 7: Կրկնեք 1-6-ը մինչև շահման պայման լինի, կամ եթե բոլոր բջիջները լցվեն: Ընթերցում է բջիջները.. Քանի դեռ ցանցի սենսորը չի գրանցում ոչ զրոյական արժեք, այս օղակը կշարունակվի: Երբ խաչմերուկը սեղմվում է, սեղմված փոփոխականը պահում է սեղմված բջիջի դիրքը: Ստուգում, եթե բջիջը լիցքավորված չէ. Երբ դիրքորոշումը ընթերցվում է (փոփոխական սեղմված է), այն համեմատվում է բջիջի ընթացիկ կարգավիճակի հետ (պահվում է GridOnOff փոփոխականում) մի փոքր հավելում օգտագործելով: Եթե Սեղմված բջիջը լիցքավորված չէ, ապա շարունակեք լուսավորել LED- ը, այլապես վերադառնալ բջիջների ընթերցմանը: Գույների միացում. Բուլյան փոփոխականը ՝ Turn- ը, օգտագործվում է գրանցելու, թե ում հերթն է: Բջիջը ընտրելիս ընտրված LED գույնը որոշվում է այս փոփոխականով, որը փոխվում է ամեն անգամ, երբ բջիջը ընտրվում է: Ստուգում ենք հաղթանակի պայմանը. Կան միայն 8 հնարավոր շահման պայմաններ, և դրանք պահվում են որպես բառի փոփոխականներ զանգվածում (winArray): Երկու բիթային հավելումներ են օգտագործվում խաղացողի լցված բջիջի դիրքերը համեմատելու հաղթական պայմանների հետ: Եթե հանդիպում կա, ապա ծրագիրը ցուցադրում է հաղթական ռեժիմ, որից հետո սկսում է նոր խաղ: Ոչ -ոքիի վիճակի ստուգում. Երբ ինը շրջադարձ է գրանցվել, և դեռ չկա հաղթելու պայման, ապա խաղը ոչ -ոքի է: LED- ները այնուհետև մարում են և սկսվում է նոր խաղ: Անցում մեկ խաղացողի ռեժիմի. Եթե անջատիչը միացված է դիրքում, ծրագիրը անցնում է մեկ նվագարկիչի ռեժիմի, առաջինը սկսում է մարդու նվագարկիչը: Մարդու խաղացողի հերթի ավարտին ծրագիրը պարզապես ընտրում է պատահական բջիջ: Ակնհայտ է, որ սա ամենախելացի ռազմավարությունը չէ:

Քայլ 8. Դիտողություններ և հետագա բարելավումներ

Ահա մի տեսանյութ, որը ցույց է տալիս մեկ խաղացողի ռեժիմը, որտեղ ծրագիրը կատարում է բոլորովին պատահական շարժումներ. Այստեղ ցուցադրված ծրագիրը միայն նվազագույն, մերկ ոսկորների տարբերակ է: Շատ այլ բաներ կարելի է անել դրանով. 1) LED- ները միաժամանակ երեք լուսավորելը: Ընթացիկ ծածկագիրը միանգամից ցուցադրում է միայն մեկ LED: Այնուամենայնիվ, այստեղ ցուցադրվող էլեկտրագծերի միջոցով հնարավոր է միաժամանակ լուսավորել բոլոր LED- ները, որոնք միացված են մեկ կաթոդ գծին: Այսպիսով, բոլոր ինը դիրքերում հեծանիվ վարելու փոխարեն, ընդամենը անհրաժեշտ է երեք կաթոդ գծերով շրջել: 2) LED- ները ցուցադրելու համար օգտագործեք ընդհատումներ: Կախված LED ցուցադրման ռեժիմից և մշակման ծավալից, LED- ները կարող են որոշ աստիճանի ցույց տալ թարթում Օգտագործելով ընդհատումներ, LED- ների ժամանակը կարող է ճշգրիտ վերահսկվել և կհանգեցնի ավելի հարթ ցուցադրման: toe նվագարկիչ: Հուսով եմ, որ դուք վայելել եք այս ուսանելի ուսուցումը կարդալը, որքան ես զվարճացել եմ դրա վրա աշխատելիս:

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