Բովանդակություն:
Video: Arduino և Thumbwheel անջատիչներ `9 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս հոդվածում մենք ուսումնասիրում ենք հրում/բութ անիվների անջատիչների օգտագործումը մեր Arduino համակարգերով: Ահա PMD Way- ի աղբյուրներից մի քանի օրինակ:
Քայլ 1:
Անտեղյակ մարդկանց համար յուրաքանչյուր անջատիչ մեկ ուղղահայաց հատված է, և դրանք կարող են միացվել իրար ՝ ձևավորելով տարբեր չափսեր: Theրոյից մինչև ինը թվանշաններից կարող եք ընտրել կոճակները: Կան այլընտրանքներ, որոնք ունեն անիվ, որը կարող եք շարժել ձեր բութ մատով ՝ մեծացման/նվազման կոճակների փոխարեն:
Նախքան շքեղ օգտագործողի ինտերֆեյսը, այս անջատիչները բավականին տարածված մեթոդներ էին թվային տվյալների մուտքագրման համար: Այնուամենայնիվ, դրանք դեռ հասանելի են այսօր, ուստի եկեք տեսնենք, թե ինչպես են դրանք աշխատում և ինչպես կարող ենք դրանք օգտագործել: Անջատիչի արժեքը հասանելի է դառնում երկուական ծածկագրված տասնորդական կամ ուղիղ տասնորդականի միջոցով: Մտածեք անջատիչի հետևի հատվածը BCD տեսքով:
Քայլ 2:
Մենք ձախ կողմում ունենք ընդհանուր, այնուհետև ՝ 1, 2, 4 և 8. կոնտակտներ: ԲԱՐՁՐ վիճակ: Օրինակ, եթե ընտրեք 3 -ը, 1 և 2 կոնտակտները կլինեն ընդհանուր լարման դեպքում: Zeroրոյից ինը արժեքները կարող են որպես այդպիսին ներկայացված լինել աղյուսակում:
Քայլ 3:
Մինչ այժմ դուք պետք է գիտակցեք, որ հեշտ կլինի կարդալ անջատիչի արժեքը - և ճիշտ եք, այդպես է: Մենք կարող ենք 5V- ը միացնել սովորականին, ելքերը ՝ մեր Arduino տախտակների թվային մուտքային կապերին, այնուհետև օգտագործել digitalRead () -ը ՝ յուրաքանչյուր ելքի արժեքը որոշելու համար: Էսքիզում մենք օգտագործում ենք որոշ հիմնական մաթեմատիկա ՝ BCD արժեքը տասնորդական թվին փոխարկելու համար: Այսպիսով, եկեք դա անենք հիմա:
Սարքավորման տեսանկյունից մենք պետք է հաշվի առնենք ևս մեկ բան. Մղիչով անջատիչն էլեկտրականորեն իրեն պահում է այնպես, ինչպես սովորաբար բացված չորս կոճակները: Սա նշանակում է, որ մենք պետք է օգտագործենք քաշվող դիմադրիչներ `բարձր և ցածր վիճակների հստակ տարբերություն ունենալու համար: Այսպիսով, մեկ անջատիչի սխեմատիկ պատկերը վերևում է:
Քայլ 4:
Այժմ պարզ խնդիր է 1, 2, 4 և 8 պիտակավորված ելքերը միացնել (օրինակ) 8, 9, 10 և 11. թվային կապումներին (5V) միացնել «C» անջատիչին, իսկ GND- ին ՝ … GND- ին: Հաջորդը, մենք պետք է ունենանք ուրվագիծ, որը կարող է կարդալ մուտքերը և BCD- ի ելքը վերածել տասնորդականի: Հաշվի առեք հետևյալ ուրվագիծը.
/ * Օգտագործում է SAA1064 թվային ցուցադրման վահան https://www.gravitech.us/7segmentshield.html Օգտագործում է սերիական մոնիտոր, եթե չունեք SAA1064 վահանը */ #ներառել «Wire.h» #սահմանել q1 8 #սահմանել q2 9 # սահմանել q4 10 #սահմանել q8 11 void setup () {Serial.begin (9600); Wire.begin (); // միանալ i2c ավտոբուսին (հասցեն ՝ ըստ ցանկության հիմնական) ուշացում (500); pinMode (q1, Մուտք); // thumbwheel '1' pinMode (q2, INPUT); // thumbwheel '2' pinMode (q4, INPUT); // thumbwheel '4' pinMode (q8, INPUT); // thumbwheel '8'} void dispSAA1064 (int Count) // ուղարկում է «Count» ամբողջ թիվը Gravitech SAA1064 վահանին {const int lookup [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; int Հազարավոր, հարյուրավոր, տասնյակ, բազա; Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); Wire.endTransmission (); Wire.beginTransmission (0x38); Wire.write (1); Հազարավոր = Հաշվել/1000; Հարյուրավոր = (Հաշվարկ- (Հազարավոր*1000))/100; Տասնյակ = (Հաշվել-((Հազարավոր*1000)+(Հարյուրավոր*100)))/10; Հիմք = Հաշվիչ-((Հազարավոր*1000)+(Հարյուրավոր*100)+(Տասնյակ*10)); Wire.write (որոնում [Հիմք]); Wire.write (փնտրել [տասնյակ]); Wire.write (որոնում [Հարյուրավոր]); Wire.write (որոնում [Հազարավոր]); Wire.endTransmission (); ուշացում (10); } int readSwitch () {int ընդհանուր = 0; if (digitalRead (q1) == HIGH) {ընդհանուր+= 1; } if (digitalRead (q2) == HIGH) {ընդհանուր+= 2; } if (digitalRead (q4) == HIGH) {ընդհանուր+= 4; } if (digitalRead (q8) == HIGH) {ընդհանուր+= 8; } վերադարձի ընդհանուր; } void loop () {dispSAA1064 (readSwitch ()); // անջատիչի արժեքը ուղարկում է վահանի ցուցադրման Serial.println (readSwitch ()); // ուղարկում է անջատիչի արժեքը սերիական մոնիտորի տուփին}
ReadSwitch () գործառույթը բանալին է: Այն հաշվարկում է անջատիչի արժեքը `ավելացնելով յուրաքանչյուր անջատիչի ելքային թվային պատկերը և արդյունքում վերադարձնում է ընդհանուրը: Այս օրինակի համար մենք օգտագործեցինք թվային ցուցադրման վահան, որը վերահսկվում է NXP SAA1064- ի կողմից:
Քայլ 5:
ReadSwitch () գործառույթը բանալին է: Այն հաշվարկում է անջատիչի արժեքը `ավելացնելով յուրաքանչյուր անջատիչի ելքային թվային պատկերը և արդյունքում վերադարձնում է ընդհանուրը: Այս օրինակի համար մենք օգտագործեցինք թվային ցուցադրման վահան, որը վերահսկվում է NXP SAA1064- ի կողմից:
Եթե չունեք մեկը, ապա դա նորմալ է. Արդյունքները ուղարկվում են նաև սերիական մոնիտոր: Այժմ, եկեք տեսնենք այն գործողության մեջ տեսանյութում:
Քայլ 6:
Դե, դա շատ նման չէ, բայց եթե թվային մուտքագրման կարիք ունեք, դա շատ ֆիզիկական տարածք է խնայում և առաջարկում է մուտքի ճշգրիտ մեթոդ:
Այսպիսով, դուք ունեք այն: Դուք իրականում կօգտագործե՞ք դրանք նախագծում: Մեկ նիշի համար `այո: Չորսի՞ համար: Հավանաբար ոչ, գուցե ավելի հեշտ կլիներ օգտագործել 12 նիշանոց ստեղնաշար: Գաղափար կա…
Քայլ 7: Բազմաթիվ անջատիչներ
Այժմ մենք կքննարկենք, թե ինչպես կարդալ չորս թվանշան և գործընթացում չկորցնել այդ բոլոր թվային կապանքները: Փոխարենը, մենք կօգտագործենք Microchip MCP23017 16-բիթանոց նավահանգստի ընդլայնիչ IC, որը հաղորդակցվում է I2C ավտոբուսի միջոցով: Այն ունի տասնվեց թվային մուտքային/ելքային կապ, որոնք մենք կարող ենք օգտագործել յուրաքանչյուր անջատիչի կարգավիճակը կարդալու համար:
Նախքան առաջ շարժվելը, խնդրում ենք նկատի ունենալ, որ այս հոդվածի համար անհրաժեշտ են ենթադրյալ գիտելիքներ ՝ I2C ավտոբուսը (մասեր մեկ և երկրորդ) և MCP23017: Սկզբում մենք նկարագրելու ենք ապարատային միացումները, այնուհետև Arduino էսքիզը: Հիշեցրեք մեկ անջատիչի օրինակի համար օգտագործված սխեմատիկան:
Երբ անջատիչն անմիջապես միացված էր Arduino- ին, մենք կարդում էինք յուրաքանչյուր կապի կարգավիճակը `անջատիչի արժեքը որոշելու համար: Մենք դա նորից կանենք ՝ ավելի մեծ մասշտաբով ՝ օգտագործելով MCP23017: Հաշվի առեք ճեղքման դիագրամը.
Քայլ 8:
Մենք ունենք 16 կապում, ինչը թույլ է տալիս միացնել չորս անջատիչ: Յուրաքանչյուր անջատիչի ընդհանուր միավորները դեռ միանում են 5 Վ-ին, և յուրաքանչյուր անջատիչ կոնտակտ դեռևս ունի 10k քաշվող դիմադրություն GND- ին: Այնուհետեւ մենք միացնում ենք թվանշանի 1, 2, 4, 8 կապում GPBA0 ~ 3; երկուսի թվանշանները ՝ 1, 2, 4, 8, GPA4 ~ 7; թվանշանի երեքը ՝ 1, 2, 4, 8 GPB0 ~ 3 -ին և չորս թվերը ՝ 1, 2, 4, 8 ՝ GPB4 ~ 7:
Հիմա ինչպե՞ս ենք կարդում անջատիչները: Այդ բոլոր լարերը կարող են ձեզ մտածել, որ դա դժվար է, բայց ուրվագիծը բավականին պարզ է: Երբ կարդում ենք GPBA- ի և B- ի արժեքը, յուրաքանչյուր բանկի համար վերադարձվում է մեկ բայթ, առաջինը `ամենաէական բիթով: Յուրաքանչյուր չորս բիթ կհամապատասխանի անջատիչի կարգավորմանը, որը միացված է համապատասխան I/O կապում: Օրինակ, եթե մենք խնդրենք տվյալները ինչպես IO բանկերի համար, այնպես էլ անջատիչները սահմանվում են 1 2 3 4 - A բանկը կվերադարձնի 0010 0001, իսկ B բանկը `0100 0011:
Մենք օգտագործում ենք որոշ bitshift գործողություններ ՝ յուրաքանչյուր չորս բիթը առանձին փոփոխականի բաժանելու համար, ինչը մեզ թողնում է յուրաքանչյուր նիշի արժեքը: Օրինակ, չորս անջատիչի արժեքը առանձնացնելու համար մենք բիթերը տեղափոխում ենք B >> 4. բանկից: Սա երեքի անջատիչի արժեքը դուրս է մղում, իսկ ձախ կողմում դատարկ բիթերը դառնում են զրո:
Երեքի անջատիչի արժեքը առանձնացնելու համար մենք օգտագործում ենք մի բիթով և - որը թողնում է երեքի անջատիչի արժեքը: Պատկերը ցույց է տալիս երկուական անջատիչի արժեքների խզումը. Այն ցույց է տալիս GPIOA և B բայթ արժեքների հումքը, այնուհետև յուրաքանչյուր նիշի երկուական արժեքը և տասնորդական արժեքը:
Քայլ 9:
Այսպիսով, եկեք տեսնենք ցուցադրման ուրվագիծը.
/ * Օրինակ 40a-Կարդացեք MCP23017- ի միջոցով չորս BW անջատիչներ, ցուցադրեք SAA1064/4-նիշանի 7-հատվածի LED էկրանով */// MCP23017 կապում է 15 ~ 17 դեպի GND, I2C ավտոբուսի հասցեն `0x20 // SAA1064 I2C ավտոբուսի հասցե 0x38 # ներառել «Wire.h» // լուսադիոդային նիշերի սահմանումների համար int թվեր [16] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113 }; բայթ GPIOA, GPIOB, dig1, dig2, dig3, dig4; void initSAA1064 () {// setup 0x38 Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); // 12mA ելք, ոչ մի թվանշան բացակայում է Wire.endTransmission (); } void setup () {Serial.begin (9600); Wire.begin (); // գործարկել I2C ավտոբուս initSAA1064 (); } void loop () {// կարդալ A բանկի մուտքերը Wire.beginTransmission (0x20); Wire.write (0x12); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (0x20, 1); GPIOA = Wire.read (); // այս բայթը պարունակում է 1 և 2 թվանշանների անջատիչի տվյալները // կարդալ B Wire.beginTransmission բանկի մուտքերը (0x20); Wire.write (0x13); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (0x20, 1); GPIOB = Wire.read (); // այս բայթը պարունակում է 3 և 4 թվանշանների անջատիչի տվյալները // հանեք յուրաքանչյուր անջատիչի արժեքը // dig1 LHS, dig4 RHS dig4 = GPIOB >> 4; dig3 = GPIOB & B00001111; dig2 = GPIOA >> 4; dig1 = GPIOA & B00001111; // ուղարկել GPIO- ի և առանձին անջատիչների տվյալները սերիական մոնիտորին // վրիպազերծման և շահերի համար Serial.print ("GPIOA ="); Serial.println (GPIOA, BIN); Serial.print ("GPIOB ="); Serial.println (GPIOB, BIN); Serial.println (); Serial.print ("թվանշան 1 ="); Serial.println (dig1, BIN); Serial.print ("թվանշան 2 ="); Serial.println (dig2, BIN); Serial.print ("թվանշան 3 ="); Serial.println (dig3, BIN); Serial.print ("թվանշան 4 ="); Serial.println (dig4, BIN); Serial.println (); Serial.print ("թվանշան 1 ="); Serial.println (dig1, DEC); Serial.print ("թվանշան 2 ="); Serial.println (dig2, DEC); Serial.print ("թվանշան 3 ="); Serial.println (dig3, DEC); Serial.print ("թվանշան 4 ="); Serial.println (dig4, DEC); Serial.println (); // ուղարկեք անջատիչի արժեքը LED էկրանին SAA1064 Wire.beginTransmission (0x38) միջոցով; Wire.write (1); Wire.write (թվանշաններ [dig4]); Wire.write (թվեր [dig3]); Wire.write (թվանշաններ [dig2]); Wire.write (թվեր [dig1]); Wire.endTransmission (); ուշացում (10); ուշացում (1000); }
Իսկ անհավատների համար … տեսաֆիլմերի ցուցադրում:
Այսպիսով, դուք ունեք այն: Չորս թվանշան մեկի փոխարեն, և I2C ավտոբուսի վրայով, որը պահպանում է Arduino թվային մուտքի/ելքի կապում: Օգտագործելով ութ MCP23017, դուք կարող եք կարդալ միանգամից 32 թվանշան: Funվարճացեք դա անելով:
Դուք կարող եք պատվիրել ինչպես BCD, այնպես էլ տասնորդական անջատիչներ տարբեր չափերի PMD Way- ից ՝ անվճար առաքում ամբողջ աշխարհում:
Այս գրառումը ձեզ է բերել pmdway.com- ը `ամեն ինչ արտադրողների և էլեկտրոնիկայի սիրահարների համար` անվճար առաքում ամբողջ աշխարհով:
Խորհուրդ ենք տալիս:
Arduino Piano կոճակով անջատիչներ `3 քայլ
Arduino Piano With Push Button Switches: Ստեղծեց ՝ Haotian YeOverview. Սա դաշնամուրի տախտակ է, որի վրա կա ութ կոճակ, որը թույլ է տալիս նվագել մեկ օկտավա (Do Re Mi Fa So La Si Do), և այս մեկ օկտավայի միջոցով կարող եք փորձել նվագել: որոշ երգեր, որոնք ձեզ դուր են գալիս: Այս նախագծի համար կան որոշ խոչընդոտներ
Ինչպես պատրաստել կողպեքի անվտանգության անջատիչներ K40 լազերային դանակի համար. 4 քայլ (նկարներով)
Ինչպես պատրաստել կողպեքի անվտանգության անջատիչներ K40 լազերային դանակի համար. ԿԱՐԵՎՈՐ Խմբագրում: Խնդրում ենք ձեր միակցիչները միացնել մեքենայի ցանցին: Փոխարենը միացրեք PU- ի PG կապում: Շուտով կկատարի ամբողջական թարմացում: -Թոնի 7/30-19Ո՞րն է ինտերնետում առաջին խորհուրդներից մեկը, երբ ձեր բոլորովին նորը, (մ
Ինչպես կառուցել ձեր սեփական անեմոմետրը ՝ օգտագործելով եղեգնյա անջատիչներ, Hall Effect ցուցիչ և որոշ գրություններ Nodemcu- ում - Մաս 2 - Softwareրագրակազմ. 5 քայլ (նկարներով)
Ինչպես կառուցել սեփական անեմոմետր ՝ օգտագործելով եղեգնյա անջատիչներ, Hall Effect ցուցիչ և որոշ գրություններ Nodemcu- ում - Մաս 2 - Softwareրագրային ապահովում. Ներածություն Սա առաջին գրառման շարունակությունն է. Nodemcu- ի վրա - Մաս 1 - Սարքավորումներ " - որտեղ ես ցույց եմ տալիս, թե ինչպես հավաքել քամու արագությունը և ուղղությունը չափող
Ինչպես կառուցել ձեր սեփական անեմոմետրը ՝ օգտագործելով եղեգնյա անջատիչներ, Hall Effect ցուցիչ և որոշ գրություններ Nodemcu- ի վրա: - Մաս 1 - Սարքաշար. 8 քայլ (նկարներով)
Ինչպես կառուցել ձեր սեփական անեմոմետրը ՝ օգտագործելով եղեգի անջատիչներ, Hall Effect ցուցիչ և որոշ գրություններ Nodemcu- ի վրա: - Մաս 1 - Սարքաշար. Ներածություն Քանի որ սկսեցի Arduino- ի և Maker Culture- ի ուսումնասիրություններից, ինձ դուր եկավ օգտակար սարքեր կառուցել ՝ օգտագործելով աղբի և ջարդոնի կտորներ, ինչպիսիք են շշերի կափարիչները, PVC- ի կտորները, խմիչքների բանկաները և այլն: Ես սիրում եմ երկրորդը տալ կյանք ցանկացած կտորի կամ կողակցի համար
Ռոբոտների պատյանների անջատիչներ `4 քայլ
Ռոբոտների պարիսպների անջատիչներ. Ինձ անհրաժեշտ է միացման հիմնական անջատիչ և երկու ակնթարթային անջատիչ `համակարգիչներն անջատելու համար: Ինձ պետք է նաև լամպով լիցքավորման լար `LED- ով` լիցքավորումը հաստատելու համար և և SMA միակցիչ `WIFI- ի համար: Այս բացօթյա ռոբոտի համար բոլորը պետք է անջրանցիկ լինեն