Мазмұны:
- 1 -қадам: Басқару тақтасын прототиптеу
- 2 -қадам: түймелерді басыңыз
- 3 -қадам: потенциометр
- 4 -қадам: Айналмалы кодер
- 5 -қадам: Барлығын біріктіру
- 6 -қадам: Код + Демонстрация
Бейне: Photoshop үшін шағын басқару тақтасы (Arduino): 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Мен сізге 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 -қадам: Код + Демонстрация
Жобада күтпеген жағдайларды болдырмау үшін басқару тақтасының бағдарламасын міндетті түрде тексеріңіз!
Міне толық код:
Оқығаныңыз үшін көп рахмет!
Ұсынылған:
«Кез келген нәрсені» басқару үшін жарықдиодты RF қашықтан басқару пультінің орнын ауыстыру: 5 қадам
«Кез келген нәрсені» басқару үшін жарықдиодты диодты қашықтан басқару пультінің орнын ауыстыру!: Бұл жобада мен сізге қалаған нәрсені басқару үшін жарық диодты радиожиілік пультін қалай өзгерту керектігін көрсетемін. Бұл дегеніміз, біз RF қашықтан басқару пультінің берілу процесін егжей -тегжейлі қарастырамыз, жіберілген деректерді Arduino µC көмегімен оқимыз
IPad үшін қабырғаға бекіту үйді автоматтандырудың басқару тақтасы ретінде, экранды іске қосу үшін сервистік басқарылатын магнитті қолданады: 4 қадам (суреттермен)
IPad үшін қабырғаға бекіту үйді автоматтандырудың басқару тақтасы ретінде, экранды іске қосу үшін сервистік басқарылатын магнитті қолданады: Соңғы кездері мен үйдегі және оның айналасындағы заттарды автоматтандыруға көп уақыт жұмсадым. Мен Domoticz -ді үйдегі автоматтандыру қосымшасы ретінде қолданамын, толығырақ www.domoticz.com сайтынан қараңыз. Мен Domoticz туралы барлық ақпаратты көрсететін бақылау тақтасының қосымшасын іздеуде
ESP8266 RGB LED STRIP WIFI басқару - NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде - RGB LED STRIP смартфонды басқару: 4 қадам
ESP8266 RGB LED STRIP WIFI басқару | NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде | Смартфонды RGB LED STRIP басқару: Сәлеметсіздер ме, балалар, бұл оқулықта біз nodemcu немесе esp8266 -ды RGB жарықдиодты жолағын басқару үшін инфрақызыл қашықтан басқару құралы ретінде қолдануды үйренеміз, ал Nodemcu смартфон Wi -Fi арқылы басқарылады. Негізінде сіз RGB LED STRIP -ті смартфонмен басқара аласыз
Қосымша тақталары бар AVR шағын тақтасы: 7 қадам
Қосымша тақталары бар AVR шағын тақтасы: PIC 12f675 шағын протоборына ұқсас, бірақ ұзартылған және қосымша тақталармен. Attiny2313 қолдану
5В шағын тақтасы: 4 қадам
5V Breadboard Mini PSU: 5 вольтты тақтаны қуаттандыруға арналған шағын PSU. 9 В батареяға, 12 В немесе кез келген басқа тұрақты ток көзіне 8 -ден 18 вольтке дейін қосыңыз