Мазмұны:

Photoshop үшін шағын басқару тақтасы (Arduino): 6 қадам
Photoshop үшін шағын басқару тақтасы (Arduino): 6 қадам

Бейне: Photoshop үшін шағын басқару тақтасы (Arduino): 6 қадам

Бейне: Photoshop үшін шағын басқару тақтасы (Arduino): 6 қадам
Бейне: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Шілде
Anonim
Photoshop үшін шағын басқару тақтасы (Arduino)
Photoshop үшін шағын басқару тақтасы (Arduino)

Мен сізге Photoshop -те тез жұмыс жасауға көмектесетін кішкене құрал жасауды көрсетемін!

PS үшін арнайы жасалған пернетақталар жаңа емес, бірақ олар дәл маған қажет нәрсені ұсынбайды. Суретші ретінде Photoshop -та өткізетін уақытымның көп бөлігі қылқалам параметрін реттеуге жұмсалады, және менің ойымша, қарапайым пернелер тіркесімі жұмыс процесіне сәйкес келуге бақылауды бермейді. Мен өз пернетақтамды жасауды шештім, ол кішкентай, еш кедергісіз және мен әрқашан қалайтын аналогтық өзара әрекеттесуді қамтамасыз ететін терулері бар.

Жұмыс әдісі қарапайым: микроконтроллердің Photoshop -пен өзара әрекеттесуі үшін біз әдепкі тіркесімдерді қолданамыз. Компьютер пернетақта/тінтуір ретінде оқи алатын тақтаның көмегімен біз компьютерге әр кірісті пернелерді басу арқылы оқу керектігін айту үшін қарапайым код жолдарын пайдалануымыз керек. Енді қайтару түймесі - батырманы басу ғана!

Бастайық! Бұл жоба үшін сізге қажет:

  • 1 Sparkfun ProMicro (немесе Arduino Leonardo, ұсынылмайды)
  • 1 микро USB адаптері
  • 6 түйме (немесе сізге ұнайтын кез келген нөмір)
  • 10 к Ом резисторы (әр түйме үшін 1)
  • 1 потенциометр
  • 1 айналмалы кодер
  • сымдар, нан тақтасы, перформат тақтасы, дәнекерлеу, тақырып түйреуіштері және т.б.

Сіз бұл жобаға Arduino Leonardo пайдалана аласыз, бірақ ProMicro - бұл әлдеқайда арзан балама, ол сол atmega32u4 чипін пайдаланады, түйреуіштері көп және әлдеқайда кішірек формада келеді, бұл оны пернетақта үшін өте ыңғайлы етеді.

Arduino IDE -де ProMicro бағдарламалау үшін сізге алдымен кейбір нәрселерді реттеу қажет болуы мүмкін. Сіз бұл туралы толығырақ SparkFun нұсқаулығынан оқи аласыз:

Егер компьютерде құрылғыны табуда қиындықтар туындаса, сіз қолданып жатқан микро-USB тек қуат көзіне қосылмағанына және деректерді жіберуді қолдайтынына көз жеткізіңіз.

Бұл менің Arduino -дегі алғашқы жобам және жаңадан бастаушыларға арналған.

1 -қадам: Басқару тақтасын прототиптеу

Басқару тақтасының прототипі
Басқару тақтасының прототипі

Дәнекерлеуді бастамас бұрын, бағдарламаңызды тақтада тексеруді ұсынамын.

Мұнда сіз менің схемамды көре аласыз.

1 және 2 түймелері Болдырмау және Қайталау болады, 3 -тен 5 -ке дейін щетка, Өшіргіш пен Лассо құралдарына арналған, 6 түймесі - тез сақтау түймесі. Кодер мен потметр сәйкесінше Өлшем мен мөлдірлікті басқарады.

Мен солақай екенімді және макетті өзіме ыңғайлы етіп жасағанын ескеріңіз. Сіздің контроллеріңізде қандай функциялар болуы керектігін, сіз үшін не жақсы жұмыс істейтінін және ақырында оны жасау үшін сізге қосымша бөлшектер қажет болатыны туралы ойлануға мүмкіндік ретінде сіздің тақтаны пайдаланған сәтті қараңыз.

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 <(өлшемі (түймелері)/өлшемі (түймелері [0]))+түймелері [0]; ++ i) {үшін басуларды тексеріңіз. pinMode (i, INPUT); }} логикалық readButton (int pin) {// түймелерін тексеру және шығару, егер (digitalRead (pin) == HIGH) {delay (10); if (digitalRead (pin) == HIGH) {true қайтару; }} false қайтару; } void doAction (int 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 (); үзіліс; // Лассо 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 (); үзіліс; }}

void loop () {

// бірнеше рет іске қосу үшін негізгі кодты осында қойыңыз:

for (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 ++ - де қол жеткізудің және массивтің ұзындығының бір элементі. Біз барлық түймелерді айналдырамыз, олардың басылғанын тексеру үшін.

Ұйымдастыру үшін мен түйменің барлық әрекеттерін пин нөмірін аргумент ретінде қабылдайтын коммутатор операторында сақтадым.

Егер сіз түймелеріңіздің әр түрлі әрекеттерді орындауын қаласаңыз немесе басқа түймелер қосқыңыз келсе, doAction функциясының мазмұнын өңдеңіз!

Физикалық түймелер қалай жұмыс істейтініне байланысты, оларды жою қажет болады. Бұл бағдарламаның батырмалардың серіппелі болуынан туындаған қажетсіз басуларды оқуға жол бермеу үшін. Мұны істеудің көптеген жолдары бар, бірақ мен бұл туралы ойлайтын қарапайым readButton () функциясын қостым.

Түймешіктеріңізді 10 к резистормен жалғаңыз, сонда сіз алтын болуыңыз керек!

3 -қадам: потенциометр

Потенциометр
Потенциометр

Енді потметрге:

#қосу

int dial0 = 0; void setup () {// бір рет іске қосу үшін орнату кодын осында қойыңыз: Serial.begin (9600); Keyboard.begin (); // Нөмір теру0 = analogRead (0); dial0 = карта (теру 0, 0, 1023, 1, 20); } void dialAction (int dial, int newVal, int lastVal) {қосқыш (теру) {// Ашықтық жағдайы 0: кешіктіру (200); if (newVal! = lastVal) {int decim = ((newVal*5)/10); int бірлігі = ((newVal *5)% 10); if (newVal == 20) {Keyboard.write (48+0); Keyboard.write (48+0); Serial.println («максималды теру 1»); } else {decim = constrain (decim, 0, 9); бірлік = шектеу (бірлік, 0, 9); Serial.println (newVal*2); Keyboard.write (48+decim); Keyboard.write (48+бірлік); }} теру = жаңа вал; үзіліс; әдепкі: үзіліс; }} // ------------------ MAIN LOOP ------------------------- жарамсыз loop () {// негізгі кодты осында қойыңыз, қайта -қайта іске қосыңыз: // Opacity // delay (500); int val0 = analogRead (0); val0 = карта (val0, 0, 1023, 1, 20); //Serial.print («dial0:»); //Serial.println(val0); if (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В сымды, жерге қосылған сымды және аналогты кіріс сымын жалғау жеткілікті, сонда ешқандай проблемалар болмауы керек.

Қызықты факт: егер сіз лассо сияқты құрал таңдалған кезде осы жарлықты қолдансаңыз, ол оның орнына қабаттың ашықтығын өзгертеді. Назар аударатын нәрсе.

4 -қадам: Айналмалы кодер

Айналмалы кодер
Айналмалы кодер

Айналмалы кодерлер потенциометрлерге ұқсайды, бірақ олардың айналу мүмкіндігінде шек жоқ. Аналогты мәннің орнына біз кодердің бұрылу бағытын сандық түрде қарастырамыз. Мен олардың қалай жұмыс істейтіні туралы егжей -тегжейлі айтпаймын, бірақ сіз білуіңіз керек, ол arduino -да қай бағытта бұрылғанын айту үшін екі кіріс түйреуішті қолданады. Айналмалы кодермен жұмыс істеу қиын болуы мүмкін, әр түрлі кодерлер әр түрлі қондыруды қажет етуі мүмкін. Жеңілдету үшін мен ПХД -мен сатып алдым, олар аналық түйреуіштермен байланыстыруға дайын. Енді код:

#қосу

// Айналмалы кодер #шығымды анықтаA 15 #анықтаушы шығысB 14 int counter = 0; int aState; int aLastState; void setup () {// бір рет іске қосу үшін орнату кодын осында қойыңыз: // Rotary pinMode (outputA, INPUT); pinMode (шығаруB, INPUT); // outputA aLastState = digitalRead (outputA) бастапқы күйін оқиды; } void rotaryAction (int dir) {if (dir> 0) {Keyboard.press (']'); } else {Keyboard.press ('['); } Keyboard.releaseAll (); } // ------------------ MAIN LOOP ------------------------- бос цикл () {// бірнеше рет іске қосу үшін негізгі кодты осында қойыңыз: // Size aState = digitalRead (outputA); if (aState! = aLastState) {if (digitalRead (outputB)! = aState) {// counter ++; rotaryAction (1); } else {// есептегіш -; rotaryAction (-1); } //Serial.print("Position: «); //Serial.println(есептегіш); } aLastState = aState; }

Әдепкі бойынша, Photoshop -тың] және [пернелер тіркесімі щетканың көлемін ұлғайтады және кішірейтеді. Бұрынғыдай, біз оларды пернелер тіркесімі ретінде енгізгіміз келеді. Кодер бір айналымға бірнеше кірісті жібереді (бұл модельге байланысты) және біз осы кірістердің әрқайсысы үшін щетканың мөлшерін көбейткіміз/кішірейткіміз келеді, осылайша сіз дискіні жоғары немесе төмен жылдам айналдыра аласыз, сонымен қатар оны өте дәлдікпен баяу басқарыңыз.

Потметр сияқты, біз тек теру бұрылған кезде әрекетті орындағымыз келеді. Потметрден айырмашылығы, мен бұрын түсіндіргенімдей, айналмалы кодердің екі ауыспалы кірісі бар. Біз теру бағытын анықтау үшін олардың қайсысы өзгергенін қарастырамыз.

Содан кейін бағытқа байланысты біз дұрыс пернені басамыз.

Егер сізде байланыс мәселесі болмаса, ол жұмыс істеуі керек.

5 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру

Енді дәнекерлеуге. Алдымен біз пернетақтаға екі саңылауға сәйкес келетін екі тесік бұрғылаймыз. біз түймелерді және олардың тиісті резисторларын дәнекерлейміз. Мен астындағы кеңістікті үнемдеу үшін кіріс сымдарының үстінен өтуі үшін екі қосымша ұсақ тесік бұрғыладым, бірақ бұл қажет емес. Кіріс сымы көп емес, сондықтан GND және 5V сымдары қатар жүреді, бірақ егер сіз өзіңізді айлакер сезінсеңіз, матрицаны жасағыңыз келуі мүмкін. Мен микроконтроллерді кодер мен потметрдің астында орналасатын, кішірек перфораторға дәнекерледім. Енді мен барлық сымдарды ProMicro -ге дәнекерлеймін. Шығармашылықпен айналысудың қажеті жоқ, мен тек тақтадағыдай схеманы ұстануым керек еді, бірақ мұндай кішкене жерде дәнекерлеу жалықтыратыны түсінікті. Мен сияқты болмаңыз, сымды тазартқышты және жақсы дәнекерлеуді қолданыңыз!

Ақырында, сіз Photoshop -тың жаңа досына жақсы жағдай жасағыңыз келуі мүмкін. Ең болмағанда менікінен бір жақсы!

Бірақ егер сіз оны сынап көргіңіз келсе, картон мен таспаны қолданып, микро-USB қосыңыз.

6 -қадам: Код + Демонстрация

Image
Image

Жобада күтпеген жағдайларды болдырмау үшін басқару тақтасының бағдарламасын міндетті түрде тексеріңіз!

Міне толық код:

Оқығаныңыз үшін көп рахмет!

Ұсынылған: