ዝርዝር ሁኔታ:

በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ] 4 ደረጃዎች
በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ] 4 ደረጃዎች

ቪዲዮ: በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ] 4 ደረጃዎች

ቪዲዮ: በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ] 4 ደረጃዎች
ቪዲዮ: ከወሲብ በፊት ይህን ከጠጣህ አለቀላት ! | ማለቂያ ለሌለው የወሲብ ብቃት | 2024, ሀምሌ
Anonim
በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ]
በእጅ የሚይዝ አቋራጭ መቆጣጠሪያ (ለ Photoshop + ተጨማሪ) [አርዱinoኖ]

ባለፈው ጊዜ በ Photoshop ውስጥ ለመጠቀም ትንሽ የቁጥጥር ሰሌዳ ፈጠርኩ። ተዓምራትን ሰርቷል ፣ እና አሁንም እጠቀማለሁ! ግን እሱ እንዲሁ ውስን ነው ፣ በአምስት አዝራሮች እና ጠቃሚ መጠን እና ግልጽነት መደወያዎች። አሁንም ለቁልፍ ሰሌዳው ብዙ መድረስ አገኘሁ…

ስለዚህ በመቆጣጠሪያ ፓድ በሚቀጥለው ድግግሞሽ ላይ መሥራት ጀመርኩ ፣ አንዱ መንገድ ብዙ አዝራሮች እና ተግባራዊነት። ሁሉንም ለመቆጣጠር አንድ የመቆጣጠሪያ ፓድ።

ያ የቁጥጥር ፓድ አይደለም። ግን በሆነ መንገድ የተሻለ ሊሆን ይችላል።

ብዙ ቶን አቋራጮች ቢኖራችሁስ ፣ ነገር ግን እጅግ በጣም በተንቆጠቆጠ እና ቀላል ክብደት ባለው ጥቅል ውስጥ ያለማቋረጥ በሚስሉበት ጊዜ በነፃ እጅዎ መያዝ ይችላሉ? … እሺ ፣ ከመረጃ ሰጪው ጋር በቂ።

ይህ ተቆጣጣሪ በ 4 አዝራሮች ብቻ እስከ 32 የሚደርሱ አቋራጮችን በካርታ ሊሰራ በሚችል መንገድ መርሃ ግብር ተይ isል! ተጨማሪው 5 ኛ አዝራር በማንኛውም ፕሮግራም ውስጥ የማሻሻያ ቁልፎችን እንድጠቀም ይፈቅድልኛል ፣ ይህም ለብዙ ፕሮግራሞች ጠቃሚ ነው (በ PS ውስጥ የ Alt-RMB ጥምርን ሞክረው ያውቃሉ? ካላደረጉ ፣ እባክዎን ያድርጉ። ሕይወት አድን ነው)። በኋላ ላይ ስርዓቱን እገልጻለሁ።

ይህንን ሁሉ ለማድረግ የሚከተሉትን ያስፈልግዎታል

  • 1 ማይክሮ መቆጣጠሪያ (እኔ Adafruit ItsyBitsy 32u4 ን እጠቀም ነበር ነገር ግን ማንኛውም atmega32u4 ቺፕ እስካለው ድረስ ማንም ማድረግ አለበት)
  • 1 ማይክሮ-ዩኤስቢ አስማሚ (ውሂብ ፣ ኃይል ብቻ አይደለም)
  • 5 የግፋ አዝራሮች (እንደ እነዚህ ያሉ ለስላሳዎችን እጠቀም ነበር)
  • 10k Ohm resistors (1 በአንድ አዝራር)
  • ሽቦዎች ፣ የዳቦ ሰሌዳ ፣ የሽያጭ ቁሳቁስ ፣ ወዘተ.
  • በ (3 ዲ አታሚ ፣ ወዘተ) መያዣን ለመሥራት አንድ ነገር

ይህ የመካከለኛ ደረጃ የአርዱዲኖ ፕሮጀክት ነው ፣ እና ምን እየተከናወነ እንዳለ በተሻለ ለመረዳት የቀድሞ ትምህርቴን ለመመልከት ሀሳብ አቀርባለሁ ፣ ምክንያቱም ይህ ብዙ እዚያ የገለፅኳቸውን ነገሮች መድገም ነው።

ደህና ፣ እንጀምር!

ደረጃ 1 ዕቅድ ማውጣት

እቅድ ማውጣት
እቅድ ማውጣት

ይህ እኔ ተቆጣጣሪውን የሳልኩበት መሰረታዊ መርሃግብር ነው። ከቀዳሚው ፕሮጀክት ጋር ሲያወዳድሩ ወረዳው በእውነት ቀላል ነው! ግን እሱ ባሉት ጥቂት አዝራሮች ፣ በተጣመሩ ማተሚያዎች ኃይል ብዙ ብዙ መሥራት እንችላለን!

ከመቆጣጠሪያ መርሃግብሩ በስተጀርባ ያለው ሀሳብ እያንዳንዱ ቁልፍ ነፃ ፣ ተጭኖ እና የተለቀቀ ወይም ተጭኖ የተያዘ ሊሆን ይችላል። መጫን እና መልቀቅ አቋራጩን በትክክል የሚያንቀሳቅሰው ነው ፣ ቁልፎችን መያዝ ለተለያዩ አቋራጮች መዳረሻ ይሰጠናል። ስለዚህ ሀ ቁልፍን ብቻ ጠቅ ካደረጉ ፣ አቋራጭ ሀን ያነቃቃሉ ፣ ግን ሀ ን ሲጫኑ ቢ ይያዙት ፣ የተለየ አቋራጭ ያገኛሉ። በመጫን ጊዜ በአንድ ጊዜ እስከ 3 አዝራሮችን መያዝ ይችላሉ ፣ ስለዚህ አንዳንድ መሠረታዊ አጣቃፊዎችን ሲተገብሩ ፣ ከዚህ ስርዓት ጋር ምን ያህል ጥምረት እንደሚቻል ያያሉ!

እኔ የመጣሁት የእጅ አምሳያ ቅርፅ ከተሰጠው ተጨማሪው አምስተኛው አዝራር እንደ ተፈጥሯዊ መደመር ተሰማው። በፎቶሾፕ ውስጥ የመቀየሪያ ቁልፎችን ለመድረስ እሱን ለመጠቀም ወሰንኩ። የሚሠራበት መንገድ ከሌሎቹ አዝራሮች በመጠኑ የተለየ ነው - የአውራ ጣት ቁልፍ በተያዘ ቁጥር አስተካካዮች ብቻ ጥቅም ላይ ይውላሉ። እነዚህ ሲይዙ ይንቀሳቀሳሉ እና ብዙ ሊጫኑ ይችላሉ። ስለዚህ አዝራር ሀ Shift ከሆነ ፣ እና አዝራር ቢ Ctrl ከሆነ ፣ A እና B ን ሲይዙ Shift እና Ctrl ን እንደ መጫን ይሆናል ፣ ግን የአውራ ጣት ቁልፍ እስከተያዘ ድረስ ብቻ!

ቅርፊቱ ሁለቱም ergonomic እና ambidextrous እንዲሆን የተነደፈ ነው። ትንሹን ጣት መጠቀም በጣም አድካሚ እንዳይሆን በጥሩ ሁኔታ እንዲገጣጠም ከፍተኛ ጥንቃቄ አድርጌ ነበር ፣ እና ከእኔ በላይ ለሆኑ እጆቻቸውም እንዲሁ ሊሠራ ይገባል።

ደረጃ 2: ፕሮቶታይፕ + ኮድ

ፕሮቶታይፕ + ኮድ
ፕሮቶታይፕ + ኮድ

በዳቦ ሰሌዳ ላይ ያሉትን አዝራሮች መሞከር ጥሩ ልምምድ ነው። እሱ በጣም ቀላል ነው ፣ ልክ እንደሚታየው አዝራሮቹን እና ተከላካዮችን ያገናኙ። እዚህ ከኮዱ ጋር ሊሞክሩት ይችላሉ (የፓስተርቢን አገናኝ አማራጭ)

#ያካትቱ

// ለ MacOS vthisv አማራጭን ይጠቀሙ-

// ቻር ctrlKey = KEY_LEFT_GUI;

// ለዊንዶውስ እና ሊኑክስ vthisv አማራጭን ይጠቀሙ

char ctrlKey = KEY_LEFT_CTRL; ቻር shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT;

// የተግባር ቁልፎች እዚህ

char Fn1Key = KEY_F2; char Fn2Key = KEY_F3; char Fn3Key = KEY_F4; char Fn4Key = KEY_F5;

const int pins = {9, 10, 11, 12, 13}; // የሁሉም የአዝራር ፒኖች ድርድር

// ትብነት

const int THRESH_0 = 10; const int THRESH_1 = 20; const int THRESH_2 = 25; const int THRESH_3 = 50; const int THRESH_4 = 100; const int THRESH_5 = 200;

const int BUTTON_NUM = 5;

// ክፈፎችን ያቀዘቅዙ

const int DELAY = 0;

enum States {ተፈትቷል ፣ ተጭኗል ፣ ተይዞ ፣ ተለቋል};

መዋቅራዊ አዝራር {

int ፒን; ግዛቶች ግዛት; int timeHeld; }; // አውራ ጣት ፣ መረጃ ጠቋሚ ፣ መሃል ፣ ቀለበት ፣ ትንሽ;

የአዝራር አዝራሮች [BUTTON_NUM] = {};

አዝራር initButton (int p) {

አዝራር ለ; pinMode (ገጽ ፣ ግቤት); b.pin = p; b.state = States:: የተፈታ; b.timeHeld = 0; መመለስ ለ; }

ባዶነት ማዋቀር () {

// አንዴ ለማሄድ የማዋቀሪያ ኮድዎን እዚህ ያስገቡ - Serial.begin (9600); የቁልፍ ሰሌዳ.ጀማሪ ();

ሳለ (! ተከታታይ) {};

// አዝራሮች ለ (int i = 0; i <(BUTTON_NUM); ++ i) {Serial.print ("set button"); Serial.print (i); Serial.print ("በፒን:"); Serial.println (ካስማዎች ); // አዝራሮች .pin = 1; አዝራሮች = initButton (ካስማዎች ); Serial.println (አዝራሮች .pin); }

}

bool readButton (int pin) {

// (digitalRead (ፒን) == ከፍተኛ) {መዘግየት (10) ከሆነ // ይፈትሹ እና ያርቁ። ከሆነ (digitalRead (pin) == HIGH) {እውነት ተመለስ ፤ }} ሐሰትን መመለስ ፤ }

int pintobin (int pin) {

ከሆነ (ፒን == ካስማዎች [0]) መመለስ 1; (ፒን == ካስማዎች [1]) ከተመለሱ 10; ከሆነ (ፒን == ፒኖች [2]) 100 ቢመለሱ ፤ ከሆነ (ፒን == ፒኖች [3]) 1000 ቢመለሱ; (ፒን == ካስማዎች [4]) ከተመለሰ 10000; } የአዝራር አዝራር StateUpdate (አዝራር ለ) {

bool press = readButton (b.pin);

መቀየሪያ (b.state) {የጉዳይ ግዛቶች:: ነፃ: b.timeHeld = 0; ከሆነ (ተጫን) b.state = States:: ተጭኖ; ሰበር; መያዣ ተጭኗል: b.timeHeld+= 1; ከሆነ (ይጫኑ) {ከሆነ (b.timeHeld> (THRESH_1/(1+መዘግየት))) {b.state = States:: ተይ;ል ፤ }} ሌላ {// ከሆነ (b.timeHeld

int getButtonStateCode (አዝራር ለ)

{ተመለስ b.state*pintobin (b.pin); }

int getCodeByButton (int ኮድ ፣ int ማውጫ) {

int r1 ፣ r2 ፣ r3 ፣ r4 ፣ r5; int opStep = BUTTON_NUM - (1+መረጃ ጠቋሚ);

// የመጀመሪያ ቀዶ ጥገና

ከሆነ (opStep == 0) የመመለሻ ኮድ/10000; r1 = ኮድ%10000;

ከሆነ (opStep == 1)

ተመላሽ r1/1000; r2 = r1%1000; ከሆነ (opStep == 2) መመለስ r2/100; r3 = r2%100; ከሆነ (opStep == 3) መመለስ r3/10; r4 = r3%10; ከሆነ (opStep == 4) መመለስ r4/1; r5 = r4%1; }

ባዶነት ተጠናቋል (int pin) {

// Serial.print ("ግቤት"); // Serial.println (ፒን); መዘግየት (THRESH_3); የቁልፍ ሰሌዳ። መልቀቅ ሁሉም (); }

ባዶ ተግባር (int code) {

// መቀየሪያዎች (getCodeByButton (ኮድ ፣ 0) == 2) {// Serial.println ("--- ቀያሪዎች ----"); ከሆነ (getCodeByButton (ኮድ ፣ 1)> 0) {Keyboard.press (altKey); // Serial.println ("------- alt ---------"); } ሌላ Keyboard.release (altKey); ከሆነ (getCodeByButton (ኮድ ፣ 2)> 0) {Keyboard.press (ctrlKey); // Serial.println ("-------- ctrl ----------"); } ሌላ Keyboard.release (ctrlKey); ከሆነ (getCodeByButton (ኮድ ፣ 3)> 0) {Keyboard.press (''); } ሌላ የቁልፍ ሰሌዳ። መልቀቅ (''); ከሆነ (getCodeByButton (ኮድ ፣ 4)> 0) {Keyboard.press (shiftKey); // Serial.println ("------ shift ------"); } ሌላ Keyboard.release (shiftKey); } ሌላ {

// ተግባሮችን ማከናወን

መቀየሪያ (ኮድ) {ጉዳይ 30: // --- | | ብሩሽ Keyboard.press (shiftKey); የቁልፍ ሰሌዳ.ሕትመት ('ለ'); completePress (ኮድ); ሰበር; ጉዳይ 300: // --- | የኢሬዘር ቁልፍ ሰሌዳ.ፕሬስ (shiftKey); የቁልፍ ሰሌዳ.ሕትመት ('e'); completePress (ኮድ); ሰበር; ጉዳይ 3000: // --- | ባልዲ ቁልፍ ሰሌዳ.ፕሬስ (shiftKey); የቁልፍ ሰሌዳ.ሕትመት ('g'); completePress (ኮድ); ሰበር; ጉዳይ 30000: // --- | የላስሶ ቁልፍ ሰሌዳ.ፕሬስ (shiftKey); የቁልፍ ሰሌዳ.ሕትመት ('l'); completePress (ኮድ); ሰበር; መያዣ 320: //-| o የቁልፍ ሰሌዳ.ፕሬስ (ctrlKey) ይቀልብሱ; የቁልፍ ሰሌዳ.ሕትመት ('z'); completePress (ኮድ); ሰበር; መያዣ 3020: //-| -o Redo Keyboard.press (ctrlKey); የቁልፍ ሰሌዳ.ሕትመት ('y'); completePress (ኮድ); ሰበር; መያዣ 30020: // | --o ታሪክ ቁልፍ ሰሌዳ.ፕሬስ (shiftKey); የቁልፍ ሰሌዳ.ሕትመት ('y'); completePress (ኮድ); ሰበር; ጉዳይ 230: //-o | Keyboard.press ን ያስቀምጡ (ctrlKey); የቁልፍ ሰሌዳ.ሕትመት ('ዎች'); completePress (ኮድ); ሰበር; መያዣ 3200: //- | o- ፈጣን-p.webp

int buttonCode = 0;

ለ (int i = 0; i <BUTTON_NUM; ++ i) {አዝራሮች = buttonStateUpdate (አዝራሮች ); buttonCode+= getButtonStateCode (አዝራሮች ); }

ከሆነ (አዝራር ኮድ! = 0) {

Serial.print ("የአዝራር ኮድ:"); Serial.println (አዝራር ኮድ); }

doAction (አዝራር ኮድ);

// በተደጋጋሚ ለማስኬድ ዋና ኮድዎን እዚህ ያስቀምጡ/// ለ (int i = አዝራሮች [0] ፤ i <sizeof (አዝራሮች)/sizeof (አዝራሮች [0])+አዝራሮች [0] ፤ ++ i) {/ / // ከሆነ (ያንብቡት አዝራር (i)) {// doAction (i); //} //}

ከሆነ (getCodeByButton (አዝራር ኮድ ፣ 0)! = 2)

የቁልፍ ሰሌዳ። መልቀቅ ሁሉም ();

መዘግየት (መዘግየት);

}

ሁለት ጉልህ ልዩነቶች ካሉበት የመጨረሻው ተቆጣጣሪዬ ጋር ስለሚመሳሰል ስለ አመክንዮ ብዙ የሚናገረው ነገር የለም።

  1. አዝራሮቹ በእራሳቸው የስቴት ማሽኖች የተገነቡ ናቸው
  2. ግዛቶቹ አንድ ላይ ተደምረው እርምጃውን የሚወስን ኮድ ይሠራሉ

መርሆው ከቢት-መቀያየር ጋር ተመሳሳይ ነው ፣ ግን ቁልፎቹ ብዙ ግዛቶች ስላሏቸው በቀላሉ በሁለትዮሽ ሊወከሉ ስለማይችሉ በምትኩ በአሥር ኃይሎች ተባዝተዋል። ከዚያ ሁሉንም የአዝራር ግዛቶች ወደ አንድ ቁጥር እጨምራለሁ እና ሁሉንም አቋራጮች ኮድ ባስቀመጥኩበት በ doAction () ማብሪያ መግለጫ ላይ አስተላልፋለሁ።

እንደሚመለከቱት ፣ እያንዳንዱን ጥምረት ጥምር አልያዝኩም። እኔ የምወዳቸውን አቋራጮች ጥቂቶችን ብቻ ጨመርኩ ፣ ቀሪውን እንዴት በተሻለ ሁኔታ እንደሚመለከቱት እንዲሞሉ ለእርስዎ እተወዋለሁ ፤)

ደረጃ 3 - መያዣ

መያዣው
መያዣው
መያዣው
መያዣው
መያዣው
መያዣው

ለካቢኔ የ 3 ዲ አታሚ እጠቀም ነበር። እንደሚመለከቱት ፣ ዲዛይኑ አንዳንድ ድክመቶች አሉት እና እሱን ለመዝጋት መንገድ ማክጊቨር ማድረግ ነበረብኝ። ስለዚህ የሞዴሉን ፋይል ገና አልለጠፍም።

ቁልፎቹ በቦታው እንዲቀመጡባቸው ቁልፎቹ በ “አግዳሚ ወንበሮች” ላይ ተጣብቀዋል። ለስላሳ የግፊት ቁልፎች በተለይ በዚያ ጥሩ ናቸው ፣ ስለዚህ ከእኔ ጋር ተመሳሳይ ጉዳይ ለመሥራት ካቀዱ የተወሰኑትን ማግኘቱን ያረጋግጡ።

እንዲሁም ፣ በጣም ቀላል ስለሆነ በጉዳዩ ውስጥ ትንሽ ክብደት እንዲጨምሩ ሀሳብ አቀርባለሁ። ተጨማሪ ግራምዎቹ እሱን መያዝ የበለጠ ተፈጥሯዊ ስሜት እንዲሰማው ያደርጋሉ።

እንደሚታየው ሁሉንም ነገር ያሽጡ እና የዩኤስቢ ገመዱን ያገናኙ ፣ እና ሁሉም ነገር በቦታው (በተወሰነ ሙጫ እገዛ) ተስማሚ መሆን አለበት!

ደረጃ 4: ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች

ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች
ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች
ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች
ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች
ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች
ውጤት እና ሊሆኑ የሚችሉ ማሻሻያዎች

እዚያ አለዎት! በአንድ እጅ ብቻ ሁሉንም አስፈላጊ አቋራጮችዎን ለመድረስ ሊጠቀሙበት የሚችሉት በእጅ የሚያዝ መቆጣጠሪያ!

ለመጠቀም አንዳንድ ጡንቻ-ትውስታን ይጠይቃል ፣ ግን በእውነቱ ሁለገብ ነው!

በእርግጥ ፍጹም አይደለም ፣ እና አሁን እሱን ለማሻሻል አንዳንድ መንገዶችን እያሰብኩ ነው። መከለያውን ከማሻሻል እና አቋራጮቹን ከማከል በተጨማሪ ፣ የተለያዩ መተግበሪያዎችን በተለያዩ አቋራጮች መደገፍ የሚስብ ይመስለኛል። በቁጥጥር መርሃግብሮች መካከል ለመቀያየር ፣ በማያ የተሰራ ወደ አንድ የፎቶሾፕ አቋራጭ ቤተ-መጽሐፍት መካከል ለመቀያየር በተመሳሳይ ጊዜ 4 አዝራሮችን በመጫን የአዝራር ጥምረት እንዲኖረኝ አስባለሁ።

ጥቂት ሀሳቦች ብቻ።

በማንበብዎ እናመሰግናለን ፣ እስከሚቀጥለው ጊዜ ድረስ!

የሚመከር: