Բովանդակություն:
- Քայլ 1. Կառավարման վահանակի նախատիպավորում
- Քայլ 2: Սեղմեք կոճակները
- Քայլ 3: Պոտենցիոմետր
- Քայլ 4: Պտտվող կոդավորիչ
- Քայլ 5: Ամեն ինչ միասին դնել
- Քայլ 6: Կոդ + onstուցադրություն
Video: Mini Control Pad Photoshop- ի համար (Arduino) `6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Ահա ես ձեզ ցույց կտամ, թե ինչպես պատրաստել մի փոքրիկ գործիք, որը կօգնի ձեզ ավելի արագ աշխատել Photoshop- ում:
PS- ի համար հատուկ պատրաստված ստեղնաշարերը նոր չեն, բայց դրանք հենց այն չեն, ինչ ինձ պետք է: Որպես նկարիչ, Photoshop- ում իմ ժամանակի մեծ մասն անցնում է խոզանակի կարգավորումը կարգավորելու համար, և ես կարծում եմ, որ պարզ դյուրանցման կոճակները ինձ չեն տալիս իմ աշխատանքային հոսքին համապատասխանելու վերահսկողություն: Այսպիսով, ես որոշեցի պատրաստել իմ սեփական ստեղնաշարը, որը փոքր է, աննկատ և ունի հավաքիչներ, որոնք ինձ տալիս են այն անալոգային փոխազդեցությունը, որը ես միշտ ցանկացել եմ:
Գործողության եղանակը պարզ է. Որպեսզի միկրոկառավարիչը փոխազդեցվի Photoshop- ի հետ, մենք օգտվում ենք կանխադրված դյուրանցումներից: Տախտակով, որը համակարգիչը կարող է կարդալ որպես ստեղնաշար/մկնիկ, մեզ մնում է միայն օգտագործել կոդի մի քանի պարզ տող `համակարգչին ասելու համար, որ յուրաքանչյուր մուտքագրում կարդա որպես ստեղնաշարի համադրություն: Այժմ հետարկելու կոճակը ընդամենը մի կոճակ սեղմել է:
Եկեք սկսենք! Այս նախագծի համար ձեզ հարկավոր է.
- 1 Sparkfun ProMicro (կամ Arduino Leonardo, խորհուրդ չի տրվում)
- 1 միկրո USB ադապտեր
- 6 կոճակ (կամ ցանկացած թիվ, որը Ձեզ դուր է գալիս)
- 10k Ohm ռեզիստորներ (1 յուրաքանչյուր կոճակի համար)
- 1 պոտենցիոմետր
- 1 պտտվող կոդավորիչ
- մետաղալարեր, տախտակ, տախտակ, զոդ, վերնագրի կապում և այլն:
Այս նախագծի համար կարող եք օգտագործել Arduino Leonardo- ն, բայց ProMicro- ն շատ ավելի էժան այլընտրանք է, որն օգտագործում է նույն atmega32u4 չիպը, ունի ավելի շատ կապում և գալիս է շատ ավելի փոքր տեսքով ՝ այն կատարյալ դարձնելով ստեղնաշարի համար:
Arduino IDE- ում ProMicro- ն ծրագրավորելու համար գուցե անհրաժեշտ լինի նախ որոշ բաներ կարգավորել: Դրա մասին ավելին կարող եք կարդալ SparkFun- ի ուղեցույցում ՝
Եթե ձեր համակարգիչը դժվարանում է գտնել սարքը, համոզվեք, որ ձեր օգտագործած միկրո USB- ը միայն էներգիայի չէ և ապահովում է տվյալների փոխանցումը:
Սա իմ առաջին Arduino նախագիծն է և հարմար է սկսնակների համար:
Քայլ 1. Կառավարման վահանակի նախատիպավորում
Ես խորհուրդ եմ տալիս նախքան զոդման աշխատանքները սկսելը ստուգել ձեր ծրագիրը սեղանի վրա:
Այստեղ դուք կարող եք տեսնել իմ սխեմատիկ պատկերը:
1 -ին և 2 -րդ կոճակները կլինեն Undo և Redo, 3 -ից 5 -ը ՝ Brush, Eraser և Lasso գործիքների համար, 6 -ը ՝ արագ Save կոճակ: Կոդավորիչը և չափիչ սարքը համապատասխանաբար վերահսկում են Չափը և Անթափանցիկությունը:
Նկատի ունեցեք, որ ես ձախլիկ եմ և դասավորությունը նախագծել եմ այնպես, ինչպես ինձ համար առավել հարմար է օգտագործել: Տեսեք այն պահը, երբ դուք օգտագործում եք ձեր տախտակը որպես հնարավորություն մտածելու այն մասին, թե ինչ գործառույթներ կցանկանայիք ունենալ ձեր վերահսկիչը, ինչն է ձեզ ավելի լավ աշխատում և, ի վերջո, դրա պատրաստման համար լրացուցիչ մասերի կարիք կունենաք:
Քայլ 2: Սեղմեք կոճակները
Կոճակներն ամենապարզն են իրականացնելու համար: Եկեք նայենք ծածկագրին.
#ներառում
const int կոճակներ = {2, 3, 4, 5, 6, 7, 8, 9}; // բոլոր կոճակների կապումների զանգված char ctrlKey = KEY_LEFT_GUI; // օգտագործել այս տարբերակը Windows- ի և Linux- ի համար. // char ctrlKey = KEY_LEFT_CTRL; char shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT; void setup () {// տեղադրեք ձեր տեղադրման կոդը այստեղ ՝ մեկ անգամ գործարկելու համար. Serial.begin (9600); Keyboard.begin (); // Կոճակներ - անցեք զանգվածի միջով և ստուգեք սեղմումները (int i = կոճակներ [0]; i <(sizeof (կոճակներ)/sizeof (կոճակներ [0]))+կոճակներ [0]; ++ i) { pinMode (i, INPUT); }} boolean readButton (int pin) {// ստուգել և դուրս բերել կոճակները, եթե (digitalRead (pin) == HIGH) {հետաձգում (10); if (digitalRead (pin) == HIGH) {return true; }} վերադարձնել կեղծ; } void doAction (int pin) {// կատարել առաջադրանքների անջատիչ (pin) {// ---- դյուրանցումներ ---- // Հետարկել գործ 4: Keyboard.press (ctrlKey); Keyboard.print ('z'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; // Կրկնել գործը 5: Keyboard.press (ctrlKey); Keyboard.print ('y'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; // Խոզանակի պատյան 6: Keyboard.press ('b'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; // Ռետին պատյան 7: Keyboard.press ('e'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; // Lasso պատյան 8: Keyboard.press ('l'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; // Պահել գործ 9 -ը ՝ Keyboard.press (ctrlKey); Keyboard.print ('s'); Serial.print («մուտքագրում»); Serial.println (քորոց); ուշացում (200); Keyboard.releaseAll (); ընդմիջում; կանխադրված ՝ Keyboard.releaseAll (); ընդմիջում; }}
դատարկ շրջան () {
// տեղադրեք ձեր հիմնական կոդը այստեղ ՝ բազմիցս գործարկելու համար.
(int i = կոճակներ [0]; i <sizeof (կոճակներ)/sizeof (կոճակներ [0])+կոճակներ [0]; ++ i) {if (readButton (i)) {doAction (i); }} // Վերականգնել փոփոխիչների Keyboard.releaseAll ();
}
Նրանք բավականին պարզ են: Որպեսզի համակարգիչը ճանաչի կոճակը սեղմելը որպես ստեղն, մենք պարզապես օգտագործում ենք Keyboard.press () գործառույթը: Հետադարձելու դյուրանցումը (ctrl+z) ակտիվացնելու համար մենք պարզապես օգտագործում ենք Keyboard.press (ctrlKey) և այնուհետև Keyboard.press ('z'): Հիշեք, որ դուք պետք է ներառեք Keyboard.h և ստեղնաշարը նախաստորագրեք ՝ այս գործառույթներին հասնելու համար:
Մուտքային կապերը պահվում են զանգվածում, այնպես որ հեշտությամբ կարող եք դրանք շրջանցել loop () գործառույթում: C ++ ում զանգվածի երկարությունն ու զանգվածը մուտք գործելու մեկ հեշտ միջոց ՝ ամբողջ զանգվածի չափը բաժանելով զանգվածի տարրի վրա, գումարած մեկ տարր: Մենք շրջում ենք բոլոր կոճակները ՝ ստուգելու համար, թե արդյոք մեկը սեղմված է:
Ամեն ինչ կազմակերպված պահելու համար ես պահեցի իմ կոճակի բոլոր գործողությունները ֆունկցիայի անջատիչի հայտարարության մեջ, որն ընդունում է pin թիվը որպես արգումենտ:
Եթե ցանկանում եք, որ ձեր կոճակները տարբեր բաներ անեն, կամ ցանկանում եք ավելացնել ավելի շատ կոճակներ, պարզապես խմբագրեք doAction գործառույթի բովանդակությունը:
Քանի որ ֆիզիկական կոճակները աշխատում են, մենք պետք է դրանք հանել: Սա կանխելու համար է, որ ծրագիրը չկարդա ցանկացած անցանկալի սեղմում, որը առաջացել է սեղմման կոճակների գարնանայինությունից: Կան բազմաթիվ եղանակներ դա անելու համար, բայց ես ավելացրեցի պարզ readButton () գործառույթը, որը հոգ է տանում դրա մասին:
Պարզապես լարեք ձեր կոճակները մոտ 10k դիմադրիչներով, և դուք պետք է ոսկեգույն լինեք:
Քայլ 3: Պոտենցիոմետր
Այժմ անցեք կոշմաչափի վրա.
#ներառում
int հավաքեք 0 = 0; void setup () {// տեղադրեք ձեր տեղադրման կոդը այստեղ ՝ մեկ անգամ գործարկելու համար. Serial.begin (9600); Keyboard.begin (); // Հավաքում է dial0 = analogRead (0); dial0 = քարտեզ (հավաքեք 0, 0, 1023, 1, 20); } void dialAction (int dial, int newVal, int lastVal) {switch (հավաքեք) {// Opacity case 0: delay (200); եթե (newVal! = lastVal) {int տասնորդական = ((newVal*5)/10); int միավոր = ((newVal *5)% 10); if (newVal == 20) {Keyboard.write (48+0); Keyboard.write (48+0); Serial.println ("առավելագույն հավաքեք 1"); } else {decim = սահմանափակել (decim, 0, 9); միավոր = սահմանափակում (միավոր, 0, 9); Serial.println (newVal*2); Ստեղնաշար. Գրել (48+տասնորդական); Keyboard.write (48+միավոր); }} dial0 = newVal; ընդմիջում; կանխադրված `ընդմիջում; }} // ------------------ ՀԻՄՆԱԿԱՆ ԼՈPՅՍ ------------------------- անվավեր loop () {// տեղադրեք ձեր հիմնական կոդը այստեղ ՝ բազմիցս գործարկելու համար. // Անթափանցիկություն // հետաձգում (500); int val0 = analogRead (0); val0 = քարտեզ (val0, 0, 1023, 1, 20); //Serial.print ("dial0:"); //Serial.println(val0); եթե (val0! = dial0) {// Մի բան արա dialAction (0, val0, dial0); }}
Պոտմետրը հետևում է նույն տրամաբանությանը, բայց դա մի փոքր ավելի բարդ է:
Նախ եկեք նայենք, թե ինչպես ենք մենք ուզում, որ այն աշխատի. Photoshop- ն ունի որոշ հարմար դյուրանցումներ `խոզանակի անթափանցիկությունը փոխելու համար: Եթե սեղմում եք ցանկացած թվային ստեղն, անթափանցությունը կհավասարվի այդ թվին*10: Բայց եթե սեղմեք երկու թվեր, ապա երկրորդ համարը կկարդա որպես միավոր ՝ տալով ձեզ ավելի ճշգրիտ վերահսկողություն:
Այսպիսով, մենք ցանկանում ենք, որ մեր չափիչ սարքը տոկոսադրույքի տեսնի դրա պտույտը, բայց մենք չենք ուզում դա անընդհատ անել, քանի որ դա հիմարություն կլինի: Մենք ցանկանում ենք փոխել թափանցիկությունը միայն այն ժամանակ, երբ չափիչ սարքը պտտվում է: Այսպիսով, մենք պահում ենք լրացուցիչ արժեք, որը մենք համեմատում ենք analogRead () արժեքի հետ և միայն գործողությունների սկրիպտն ենք գործարկում, երբ տարբերություն կա:
Մեկ այլ խնդիր, որի հետ մենք բախվելու ենք, այն է, թե ինչպես ենք analogRead- ի վերադարձը դարձնում int որպես մուտք: Քանի որ int- ը տողի վերածելու ոչ մի հեշտ միջոց չկա, մենք ստիպված կլինենք օգտագործել int- ն ինքնին: Այնուամենայնիվ, եթե դուք պարզապես գրեք Keyboard.press (int), ապա կնկատեք, որ մուտքագրումը չի լինի այն, ինչ ցանկանում եք, և փոխարենը սեղմվելու է մեկ այլ ստեղն:
Դա պայմանավորված է նրանով, որ ձեր ստեղնաշարի ստեղները բոլորը ծածկագրված են որպես ամբողջ թվեր, որոնցից յուրաքանչյուրն ունի իր ինդեքսը: Թվային ստեղնը ճիշտ օգտագործելու համար դուք պետք է փնտրեք դրանց ցուցանիշը ASCII աղյուսակում ՝
Ինչպես տեսնում եք, թվային ստեղները սկսվում են ինդեքս 48 -ից: Այսպիսով, ճիշտ ստեղնը սեղմելու համար մեզ մնում է միայն հավաքել 48 -ի հավաքման արժեքը: Տասնորդական և միավորային արժեքները առանձին սեղմումներ են:
Ի վերջո, մեզ պետք է մի միջոց, որը թույլ չի տա, որ արժեքը հետ ու առաջ թռչի: Քանի որ, եթե փորձեք օգտագործել հավաքեք քարտեզով (val0, 0, 1023, 0, 100), ապա արդյունքները շատ ջղային կլինեն: Նմանապես, ինչպես մենք անջատեցինք կոճակները, մենք դա կուղղենք ՝ զոհաբերելով որոշակի ճշգրտություն: Ես գտա, որ այն քարտեզագրելը 1-20-ի վրա, այնուհետև փաստարկների արժեքը 5-ով բազմապատկելը ընդունելի փոխզիջում է:
Պոտենցիոմետրը միացնելու համար պարզապես միացրեք 5 Վ լարը, գրունտալարը և անալոգային մուտքային մետաղալարը, և որևէ խնդիր չպետք է լինի:
Funվարճալի փաստ. Եթե դուք օգտագործում եք այս դյուրանցումը, մինչ Lasso- ի նման գործիք ընտրված է, այն փոխարենը կփոխի Շերտի անթափանցիկությունը: Պետք է ուշադրություն դարձնել:
Քայլ 4: Պտտվող կոդավորիչ
Պտտվող կոդավորիչները մի փոքր նման են պոտենցիոմետրերի, բայց առանց սահմանափակման, թե որքան կարող են դրանք պտտվել: Անալոգային արժեքի փոխարեն մենք թվային կերպով կանդրադառնանք կոդավորիչի շրջադարձի ուղղությանը: Ես շատ չեմ մանրամասնի, թե ինչպես են դրանք աշխատում, բայց այն, ինչ դուք պետք է իմանաք, այն է, որ arduino- ի վրա օգտագործում է երկու մուտքագրում ՝ ասելու, թե որ ուղղությամբ է այն շրջվում: Պտտվող կոդավորիչը կարող է ավելի բարդ աշխատել, տարբեր կոդավորողների համար կարող են պահանջվել տարբեր կարգավորումներ: Ամեն ինչ ավելի հեշտ դարձնելու համար ես գնեցի մեկը PCB- ով, որոնք պատրաստ են կապվել կանացի կապում: Այժմ, կոդը.
#ներառում
// Պտտվող կոդավորիչ #սահմանել ելքը A 15 #սահմանել ելքը B 14 int հաշվիչ = 0; int a State; int aLastState; void setup () {// տեղադրեք ձեր տեղադրման կոդը այստեղ ՝ մեկ անգամ գործարկելու համար. // Rotary pinMode (outputA, INPUT); pinMode (outputB, INPUT); // Կարդում է ելքի սկզբնական վիճակը aAastState = digitalRead (outputA); } void rotaryAction (int dir) {if (dir> 0) {Keyboard.press (']'); } else {Keyboard.press ('['); } Keyboard.releaseAll (); } // ------------------ MAIN LOOP ------------------------- դատարկ հանգույց () {// տեղադրեք ձեր հիմնական կոդը այստեղ ՝ բազմիցս գործարկելու համար. // Չափ aState = digitalRead (outputA); եթե (aState! = aLastState) {if (digitalRead (outputB)! = aState) {// հաշվիչ ++; պտտվող գործողություն (1); } else {// հաշվիչ -; պտտվող գործողություն (-1); } //Serial.print("Position: "); //Serial.println (հաշվիչ); } aLastState = aState; }
Լռելյայն, Photoshop- ի] և [դյուրանցումները մեծացնում և նվազեցնում են խոզանակի չափը: Beforeիշտ ինչպես նախկինում, մենք ցանկանում ենք դրանք մուտքագրել որպես հիմնական սեղմիչներ: Կոդավորիչը մեկ պտույտ է ուղարկում մի շարք մուտքագրումներ (ինչը կախված է մոդելից), և մենք ցանկանում ենք մեծացնել/նվազեցնել խոզանակի չափը այս մուտքերից յուրաքանչյուրի համար, այնպես որ կարող եք իսկապես արագ կամ բարձրացնել հավաքիչը, բայց նաև կարողանալ դանդաղ վերահսկել այն մեծ ճշգրտությամբ:
Theիշտ այնպես, ինչպես potmeter- ի դեպքում, մենք ցանկանում ենք գործողությունը կատարել միայն այն ժամանակ, երբ հավաքիչը պտտվում է: Ի տարբերություն potmeter- ի, ինչպես նախկինում բացատրեցի, պտտվող կոդավորողն ունի երկու փոփոխական մուտք: Մենք նայում ենք, թե դրանցից որն է փոխվել `հաստատելու համար այն ուղղությունը, որով պտտվում է հավաքիչը:
Այնուհետեւ կախված ուղղությունից, մենք սեղմում ենք ճիշտ ստեղնը:
Քանի դեռ շփման խնդիրներ չունեք, այն պետք է աշխատի:
Քայլ 5: Ամեն ինչ միասին դնել
Այժմ անցեք զոդման: Նախ, մենք երկու անցք ենք փորում տախտակի մեջ ՝ երկու թվատախտակին տեղավորելու համար: մենք կպցնում ենք կոճակները և դրանց համապատասխան դիմադրողները: Ես բացեցի երկու լրացուցիչ փոքր անցք, որպեսզի թույլ տամ, որ մուտքային լարերը անցնեն վերևից, որպեսզի տարածք խնայեն ներքևում, բայց դա անհրաժեշտ չէ: Մուտքային լարերը շատ չեն, այնպես որ GND և 5V լարերը զուգահեռ են անցնում, բայց եթե խորամանկ եք զգում, գուցե ցանկանաք մատրիցա պատրաստել: Ես միկրոկառավարիչը միացրեցի մեկ այլ, ավելի փոքր տախտակի վրա, որը ներքևում տեղակայված էր կոդավորիչի և կավաչափ սարքի կողքին: Այժմ ես բոլոր լարերը կպցրեցի ProMicro- ին: Ստեղծագործ լինելու կարիք չկա, ես պարզապես պետք է հետևեի նույն սխեմային, ինչ գրատախտակին, բայց նման փոքր վայրում զոդելը հասկանալի է, որ կարող է հոգնեցուցիչ լինել: Ինձ նման մի՛ եղիր, օգտագործի՛ր մետաղալար և լավ զոդիչ:
Ի վերջո, գուցե ցանկանաք գեղեցիկ պատյան պատրաստել ձեր նոր Photoshop ընկերոջ համար: Մեկը իմից լավն է, համենայն դեպս:
Բայց եթե ցանկանում եք փորձել այն, օգտագործեք ստվարաթուղթ և ժապավեն և միացրեք ձեր միկրո USB- ը:
Քայլ 6: Կոդ + onstուցադրություն
Համոզվեք, որ փորձարկեք կառավարման տախտակի ծրագիրը, երբ դուք շարժվում եք նախագծում `անակնկալներից խուսափելու համար:
Ահա ամբողջական կոդը ՝
Անչափ շնորհակալ եմ կարդալու համար:
Խորհուրդ ենք տալիս:
[2020] IPhone- ի կամ IPad- ի և Micro: bit Game Pad հավելվածի օգտագործումը RC մեքենան կառավարելու համար. 23 քայլ
[2020] IPhone- ի կամ IPad- ի և Micro: bit Game Pad հավելվածի միջոցով RC ավտոմեքենան կառավարելու համար. Մտածե՞լ եք ձեր iPhone- ը կամ iPad- ը օգտագործել ձեր micro: bit- ը վերահսկելու համար: Գիտե՞ք Micro: bit Educational Foundation- ը տրամադրում է iOS հավելվածը Հավելվածների խանութ? Որոնել " միկրո: բիտ " App Store- ում և կարող եք անվճար ներբեռնել ծրագիրը: The
Ձեռքի դյուրանցման վերահսկիչ (Photoshop + - ի համար) [Arduino] ՝ 4 քայլ
Ձեռքի դյուրանցման վերահսկիչ (Photoshop + - ի համար) [Arduino]. Վերջին անգամ ես ստեղծեցի մի փոքրիկ կառավարման վահանակ `Photoshop- ում օգտագործելու համար: Այն հրաշքներ գործեց, և ես դեռ օգտագործում եմ այն: Բայց դա նաև բավականին սահմանափակ է `ընդամենը հինգ կոճակով և օգտակար չափի և անթափանցիկ թվանշաններով: Ես դեռ շարունակում էի շատ հասնել ստեղնաշարին … Այսպիսով
Օգտագործեք 1 անալոգային մուտքագրում Arduino- ի համար 6 կոճակի համար. 6 քայլ
Arduino- ի համար օգտագործեք 1 անալոգային մուտք 6 կոճակի համար. Վերջերս մտքովս անցավ, որ ես պետք է կարողանամ օգտագործել անալոգային մուտքերից մեկը `բազմաթիվ թվային մուտքեր բերելու համար: Ես արագ որոնեցի և գտա, թե որտեղ են մարդիկ
Պարտիզանական մարտկոցի սեփականատեր ձեր սեղանի համար / Arduino նախագծերի համար. 3 քայլ
Պարտիզանական մարտկոցի սեփականատեր ձեր սեղանի համար / Arduino նախագծերի համար. Ես փորձեր եմ կատարում DS1307- ի և Arduino- ի հետ, ես պետք է միջոց գտնեի CR1212 մարտկոցը միացնելու համար: Ես մտա իմ միակցիչների տուփի մեջ և չգտա ոչինչ, որը կարող էր օգնել: Հետո, eur ê ka! Ես ունեի լուսավորություն
Ուղեցույց L298 2Amp Motor Driver Shield- ի համար Arduino- ի համար. 6 քայլ
L298 2Amp Motor Driver Shield- ը Arduino- ի համար. Նկարագրություն L298 2Amp Motor Driver Shield- ը Arduino- ի համար հիմնված է L298 շարժիչի վարորդի ինտեգրալ սխեմայի վրա, լիարժեք կամուրջի շարժիչ: Այն կարող է վարել երկու առանձին 2A DC շարժիչներ կամ 1 2A քայլ շարժիչ: Շարժիչի արագությունը և ուղղությունները կարող են վերահսկվել առանձին