![Arduino- ի ամբողջական պտտվող լուծում. 5 քայլ Arduino- ի ամբողջական պտտվող լուծում. 5 քայլ](https://i.howwhatproduce.com/images/005/image-12873-9-j.webp)
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Ադուինոյի ամբողջական պտտվող լուծում Ադուինոյի ամբողջական պտտվող լուծում](https://i.howwhatproduce.com/images/005/image-12873-10-j.webp)
Պտտվող կոդավորիչները էլեկտրոնային նախագծերի համար պտտվող կառավարման կոճակներ են, որոնք հաճախ օգտագործվում են Arduino ընտանիքի միկրոկոնտրոլերների հետ: Դրանք կարող են օգտագործվել պարամետրերը ճշգրտելու, ընտրացանկերում նավարկելու, էկրանին օբյեկտներ տեղափոխելու և ցանկացած տեսակի արժեքներ սահմանելու համար: Դրանք սովորական փոխարինիչներ են պոտենցիոմետրերի համար, քանի որ դրանք կարող են ավելի ճշգրիտ և անվերջ պտտվել, դրանք միաժամանակ ավելացնում կամ նվազեցնում են մեկ դիսկրետ արժեք և հաճախ ինտեգրվում ընտրության տեսակի գործառույթների համար դրդվող անջատիչով: Նրանք գալիս են բոլոր ձևերի և չափերի, բայց ամենացածր գների միջակայքը դժվար է ինտերֆեյսի մեջ դնել, ինչպես բացատրվում է ստորև:
Կան անհամար հոդվածներ Rotary կոդավորիչների աշխատանքային մանրամասների և օգտագործման ռեժիմների մասին, ինչպես նաև բազմաթիվ նմուշների կոդեր և գրադարաններ, թե ինչպես օգտագործել դրանք: Միակ խնդիրն այն է, որ դրանցից ոչ մեկը 100% ճշգրիտ չի աշխատում չինական պտտվող մոդուլների ամենացածր գների միջակայքում:
Քայլ 1. Պտտվող կոդավորիչներ ներսում
![Պտտվող կոդավորիչներ ներսում Պտտվող կոդավորիչներ ներսում](https://i.howwhatproduce.com/images/005/image-12873-11-j.webp)
![Պտտվող կոդավորիչներ ներսում Պտտվող կոդավորիչներ ներսում](https://i.howwhatproduce.com/images/005/image-12873-12-j.webp)
![Պտտվող կոդավորիչներ ներսում Պտտվող կոդավորիչներ ներսում](https://i.howwhatproduce.com/images/005/image-12873-13-j.webp)
Կոդավորիչի պտտվող հատվածն ունի երեք կապում (և ևս երկուսը `անջատիչի անջատիչ մասի համար): Մեկը ընդհանուր հիմք է (սև GND), մյուս երկուսը ՝ բռնակ պտտվող ուղղությամբ ուղղությունը որոշելու համար (դրանք հաճախ անվանում են կապույտ CLK և կարմիր DT): Սրանք երկուսն էլ կցված են միկրոկառավարիչի PULLUP մուտքագրման քորոցին ՝ բարձր մակարդակը դարձնելով իրենց կանխադրված ընթերցումը: Երբ կոճակը շրջվում է առաջ (կամ ժամացույցի սլաքի ուղղությամբ), սկզբում կապույտ CLK- ն ընկնում է LOW մակարդակի, այնուհետև հետևում է կարմիր DT- ին: Շրջվելով ՝ կապույտ CLK- ն վերադառնում է HIGH, այնուհետև, երբ սովորական GND կարկատանը թողնում է կապի երկու կապում, կարմիր DT- ն նույնպես վերադառնում է HIGH: Այսպիսով լրացնելով մեկ լրիվ տիզ FWD (կամ ժամացույցի սլաքի ուղղությամբ): Նույնը գնում է BWD- ի հակառակ ուղղությամբ (կամ ժամացույցի սլաքի հակառակ ուղղությամբ), բայց այժմ կարմիրը առաջինն է ընկնում, իսկ կապույտը բարձրանում է վերջին, ինչպես ցույց է տրված համապատասխանաբար երկու մակարդակի պատկերներում:
Քայլ 2. Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում
![Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում](https://i.howwhatproduce.com/images/005/image-12873-14-j.webp)
![Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում](https://i.howwhatproduce.com/images/005/image-12873-15-j.webp)
![Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում Թշվառություն, որը շատերի համար իսկական ցավ է պատճառում](https://i.howwhatproduce.com/images/005/image-12873-16-j.webp)
Arduino- ի հոբբիստների համար սովորական խնդիր է, որ Rotary- ի էժան կոդավորող մոդուլներն արտացոլում են ելքային մակարդակների լրացուցիչ փոփոխություններ `առաջացնելով ուղղությունների հաշվարկի լրացուցիչ և սխալ ընթերցումներ: Սա կանխում է անթերի հաշվարկը և անհնար է դարձնում այս մոդուլների ինտեգրումը ճշգրիտ պտտվող նախագծերի մեջ: Այս լրացուցիչ ցատկումները առաջանում են կապի մեխերի վրա կարկատանների մեխանիկական շարժումներից, և նույնիսկ լրացուցիչ կոնդենսատորների կիրառումը չի կարող դրանք ամբողջությամբ վերացնել: Վերադարձները կարող են հայտնվել ցանկացած վայրում ՝ տիզերի ամբողջական ցիկլերում և պատկերված են պատկերների վրա իրական կյանքի սցենարներով:
Քայլ 3. Վերջավոր վիճակի մեքենայի (FSM) լուծում
![Սահմանափակ վիճակի մեքենայի (FSM) լուծում Սահմանափակ վիճակի մեքենայի (FSM) լուծում](https://i.howwhatproduce.com/images/005/image-12873-17-j.webp)
Պատկերը ցույց է տալիս երկու կապում (կապույտ CLK և կարմիր DT) մակարդակի հնարավոր փոփոխությունների ամբողջական վիճակի ամբողջականությունը ՝ երկուսն էլ ճիշտ և կեղծ վերադարձի դեպքում: Այս պետական մեքենայի հիման վրա կարելի է ծրագրավորել ամբողջական լուծում, որը միշտ աշխատում է 100% ճշգրիտ: Քանի որ այս լուծման մեջ զտման հետաձգումներ անհրաժեշտ չեն, այն նաև հնարավորինս արագ է: Քորոցների վիճակի տարածությունն աշխատանքային ռեժիմից առանձնացնելու մեկ այլ առավելություն այն է, որ կարելի է կիրառել ինչպես հարցման, այնպես էլ ընդհատման եղանակներ `իր ցանկությամբ: Հարցումը կամ ընդհատումները կարող են հայտնաբերել կապերի մակարդակի փոփոխությունները, և առանձին ռեժիմը կհաշվարկի նոր վիճակը `հիմնվելով ընթացիկ վիճակի և մակարդակի փոփոխությունների իրական իրադարձությունների վրա:
Քայլ 4: Arduino կոդ
![Arduino կոդ Arduino կոդ](https://i.howwhatproduce.com/images/005/image-12873-18-j.webp)
Ստորև բերված ծածկագիրը հաշվում է սերիական մոնիտորի FWD և BWD տիզերը և միավորում է անջատիչի անջատիչ գործառույթը:
// Պիտեր urgուրգեյ 2019-04-10
// Պտույտի կապում քարտեզագրված Arduino նավահանգիստներին
#սահմանել SW 21 #սահմանել CLK 22 #սահմանել DT 23
// Պտտվողի կողմից կարգավորվող հաշվիչի ընթացիկ և նախորդ արժեքը
int curVal = 0; int prevVal = 0;
// FSM- ի յոթ վիճակ (վերջնական վիճակի մեքենա)
#սահմանել IDLE_11 0 #սահմանել SCLK_01 1 #սահմանել SCLK_00 2 #սահմանել SCLK_10 3 #սահմանել SDT_10 4 #սահմանել SDT_00 5 #սահմանել SDT_01 6 int state = IDLE_11;
void setup () {
Serial.begin (250000); Serial.println («Սկսել …»); // Մակարդակը HIGH կլինի կանխադրված բոլոր pinMode (SW, INPUT_PULLUP) համար; pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // Ե՛վ CLK- ն, և՛ DT- ն բոլոր մակարդակի փոփոխությունների դեպքում առաջացնում են ընդհատումներ attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
դատարկ շրջան () {
// Որոշակի պտտվող կոդավորիչների մեջ ներառված կամընտիր անջատիչի կառավարում, եթե (digitalRead (SW) == LOW) {Serial.println ("Սեղմված"); իսկ (! digitalRead (SW)); } // Հաշվիչի արժեքի ցանկացած փոփոխություն ցուցադրվում է Serial Monitor- ում if (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// Պետական մեքենայի անցումներ CLK մակարդակի փոփոխությունների համար
void rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; այլապես եթե (վիճակ == SCLK_10) վիճակ = SCLK_00; այլապես, եթե (վիճակ == SDT_10) վիճակ = SDT_00; } else {if (վիճակ == SCLK_01) վիճակ = IDLE_11; այլապես եթե (վիճակ == SCLK_00) վիճակ = SCLK_10; այլապես եթե (վիճակ == SDT_00) վիճակ = SDT_10; այլապես եթե (վիճակ == SDT_01) {վիճակ = IDLE_11; curVal--; }}}
// Պետական մեքենայի անցումներ DT մակարդակի փոփոխությունների համար
void rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; այլապես եթե (վիճակ == SDT_01) վիճակ = SDT_00; այլապես եթե (վիճակ == SCLK_01) վիճակ = SCLK_00; } else {if (վիճակ == SDT_10) վիճակ = IDLE_11; այլապես, եթե (վիճակ == SDT_00) վիճակ = SDT_01; այլապես եթե (վիճակ == SCLK_00) վիճակ = SCLK_01; այլապես եթե (վիճակ == SCLK_10) {վիճակ = IDLE_11; curVal ++; }}}
Քայլ 5. Անթերի ինտեգրում
![](https://i.ytimg.com/vi/NgMvAgHcgyE/hqdefault.jpg)
Կից տեսանյութում կարող եք ստուգել, որ FSM լուծումն աշխատում է ճշգրիտ և արագ նույնիսկ ցածր տիրույթի պտտվող կոդավորիչների դեպքում ՝ տարբեր պարբերական ցատկման էֆեկտներով:
Խորհուրդ ենք տալիս:
Լույսի աղտոտման լուծում - Արտեմիս. 14 քայլ
![Լույսի աղտոտման լուծում - Արտեմիս. 14 քայլ Լույսի աղտոտման լուծում - Արտեմիս. 14 քայլ](https://i.howwhatproduce.com/images/002/image-4385-15-j.webp)
Լույսի աղտոտման լուծում - Արտեմիս. Լույսի աղտոտվածությունը մի բան է, որն ազդում է բոլորիս վրա ամբողջ աշխարհում: Էլեկտրական լամպի գյուտից ի վեր լույսը շատ ավելի հայտնի է դարձել և հատուկ օգտագործվել է այնպիսի մեծ քաղաքներում, ինչպիսիք են Նյու Յորքը և Չիկագոն: Այս ամբողջ լույսը կարող է ազդել
Trշմարտության աղյուսակների լուծում. 10 քայլ
![Trշմարտության աղյուսակների լուծում. 10 քայլ Trշմարտության աղյուսակների լուծում. 10 քայլ](https://i.howwhatproduce.com/images/005/image-13234-j.webp)
Solշմարտության աղյուսակների լուծում. Truthշմարտության աղյուսակը խնդրի բոլոր արդյունքները պատկերացնելու միջոց է: Այս հրահանգների հավաքածուն նախատեսված է այն մարդկանց համար, ովքեր սկսում են առանձին մաթեմատիկա: Մենք այսօր պարապելու ենք այս հրահանգներին հատուկ խնդրի օրինակով: Դու
RAM տեխնոլոգիաներ և խնդիրների լուծում. 6 քայլ
![RAM տեխնոլոգիաներ և խնդիրների լուծում. 6 քայլ RAM տեխնոլոգիաներ և խնդիրների լուծում. 6 քայլ](https://i.howwhatproduce.com/images/011/image-30540-j.webp)
RAM տեխնոլոգիաներ և խնդիրների լուծում. Պատահական մուտքի հիշողությունը (RAM) շատ արագ հիշողության ձև է, որն օգտագործվում է համակարգիչների կողմից ՝ տեղեկատվությանը արագ մուտք գործելու համար: RAM- ը շատ ավելի արագ է, քան կոշտ սկավառակները կամ պինդ վիճակի կրիչները, սակայն այն շատ ավելի թանկ է և չի կարող տվյալներ պահել առանց մշտական հզորության: Ինչպես դու
IOT լուծում հեծանիվը կիսելու համար. 6 քայլ
![IOT լուծում հեծանիվը կիսելու համար. 6 քայլ IOT լուծում հեծանիվը կիսելու համար. 6 քայլ](https://i.howwhatproduce.com/images/004/image-9810-6-j.webp)
IOT լուծում հեծանիվի փոխանակման համար. Այս օրերի հեծանիվը շատ տարածված է Չինաստանում: Շուկայում կան հեծանիվների փոխանակման ավելի քան 10 ապրանքանիշեր, իսկ “ mobike ” ամենահայտնին է, այն ունի ավելի քան 100 միլիոն գրանցված օգտվող և տարածվել է այլ քաղաքներում
Մատչելի տեսլականի լուծում ռոբոտի բազկով ՝ հիմնված Arduino- ի վրա. 19 քայլ (նկարներով)
![Մատչելի տեսլականի լուծում ռոբոտի բազկով ՝ հիմնված Arduino- ի վրա. 19 քայլ (նկարներով) Մատչելի տեսլականի լուծում ռոբոտի բազկով ՝ հիմնված Arduino- ի վրա. 19 քայլ (նկարներով)](https://i.howwhatproduce.com/images/003/image-6590-19-j.webp)
Մատչելի տեսլականի լուծում ռոբոտի ձեռքով ՝ հիմնված Arduino- ի վրա. Երբ խոսում ենք մեքենայական տեսողության մասին, այն մեզ համար միշտ անհասանելի է թվում: Մինչ մենք պատրաստում էինք բաց աղբյուրի տեսողական ցուցադրում, որը շատ հեշտ կլիներ պատրաստել բոլորի համար: Այս տեսանյութում, OpenMV տեսախցիկով, անկախ նրանից, թե որտեղ է կարմիր խորանարդը, ռոբոտը