Mündəricat:
- Addım 1: Planlaşdırma
- Addım 2: Prototip + Kod
- Addım 3: Korpus
- Addım 4: Nəticə və mümkün təkmilləşdirmələr
Video: Əl Qısayol Nəzarətçisi (Photoshop + Daha çox üçün) [Arduino]: 4 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Son dəfə Photoshop -da istifadə etmək üçün kiçik bir idarəetmə paneli yaratdım. Möcüzələr yaratdı və hələ də istifadə edirəm! Ancaq kifayət qədər məhduddur, yalnız beş düymə və faydalı ölçüsü və qeyri -şəffaf yığımları ilə. Hələ də klaviatura üçün çox uzandığımı gördüm …
Beləliklə, daha çox düymələri və funksionallığı olan idarəetmə panelinin növbəti iterasiyası üzərində işə başladım. Hamısını idarə etmək üçün bir nəzarət paneli.
Bu nəzarət paneli deyil. AMMA bir şəkildə daha yaxşı ola bilər.
Bir ton qısa yolunuz olsaydı, amma çox rahat və yüngül bir paketdə fasiləsiz çəkərkən sərbəst əlinizlə tuta bilərsiniz? … tamam, infomercial ilə kifayətləndim.
Bu nəzarətçi, yalnız 4 düymə ilə 32 mümkün qısayolla eşlenebilecek şekilde programlanmıştır! Əlavə 5-ci düymə, bir çox proqramlar üçün faydalı olan hər hansı bir kombinasiyada dəyişdirici düymələrdən istifadə etməyimə icazə vermək üçün mövcuddur (heç Alt-RMB kombinasiyasını PS-də sınamısınızmı? Əgər yoxsa, zəhmət olmasa edin. Bu bir xilaskardır). Sistemi daha sonra izah edəcəyəm.
Bütün bunları etmək üçün sizə lazım olacaq:
- 1 Mikro nəzarətçi (Adafruit ItsyBitsy 32u4 istifadə etdim, amma atmega32u4 çipi olduğu müddətdə hər kəs bunu etməlidir)
- 1 micro-USB adapteri (məlumat, yalnız güc üçün deyil)
- 5 düymə (belə yumşaq düymələrdən istifadə etdim)
- 10k Ohm rezistorlar (hər düyməyə 1 ədəd)
- Tellər, çörək taxtası, lehim materialı və s.
- Qutu hazırlamaq üçün bir şey (3D printer və s.)
Bu orta səviyyəli bir Arduino layihəsidir və baş verənləri daha yaxşı başa düşmək üçün keçmiş dərsimə baxmağı təklif edirəm, çünki bunların çoxu orada izah etdiyim şeylərin təkrarıdır.
Tamam, başlayaq!
Addım 1: Planlaşdırma
Bu nəzarətçinin çəkdiyim əsas bir sxemdir. Əvvəlki proyektimlə müqayisə etdiyiniz zaman dövrə çox sadədir! Ancaq bir neçə düymə ilə, kombinə edilmiş preslərin gücü ilə daha çox iş görə biləcəyik!
İdarəetmə sxeminin arxasındakı fikir, hər bir düymənin ya sərbəst, basılıb sərbəst buraxıla biləcəyi, ya da basılıb tutula biləcəyidir. Düymələri basıb saxlamaqla fərqli qısayollara daxil olacağıq. Yalnız A düyməsini basarsanız, A qısa yolunu aktivləşdirəcəksiniz, ancaq A düyməsini basarkən B düyməsini basıb saxlasanız fərqli bir qısa yol alacaqsınız. Basıldıqda eyni anda 3 düyməni basıb saxlaya bilərsiniz, buna görə də bir neçə əsas kombinatoriya tətbiq etdikdə bu sistemlə neçə kombinasiyanın mümkün olduğunu görəcəksiniz!
Əlavə beşinci düymə, gəldiyim əlin şəklini nəzərə alaraq təbii bir əlavə kimi hiss etdi. Photoshopdakı dəyişdirici düymələrə daxil olmaq üçün istifadə etmək qərarına gəldim. İşləmə üsulu digər düymələrdən bir qədər fərqlidir: baş barmaq düyməsini basıldıqda yalnız dəyişdiricilər istifadə olunacaq. Bunlar tutulduqda aktiv olacaq və birdən çox basıla bilər. Beləliklə, əgər A düyməsi Shift və B düyməsi Ctrl olarsa, A və B düymələrini basılı tutduğunuz zaman həm Shift, həm də Ctrl düymələrini basmış kimi olacaqsınız, ancaq baş barmaq düyməsini basıb saxlayın!
Qabıq həm erqonomik, həm də birmənalı olmayacaq şəkildə dizayn edilmişdir. Kiçik barmağımın çox yorucu olmaması üçün əllərimin məndən daha böyük olması üçün işləməsi üçün çox diqqətlə oturdum.
Addım 2: Prototip + Kod
Çörək taxtasındakı düymələri sınamaq yaxşı bir təcrübədir. Çox sadədir, düymələri və rezistorları göstərildiyi kimi bağlayın. Buradakı kodla sınaya bilərsiniz (pastebin link alternativi):
#daxil edin
// MacOS üçün vthisv seçimindən istifadə edin:
// char ctrlKey = KEY_LEFT_GUI;
// Windows və Linux üçün vthisv seçimindən istifadə edin:
char ctrlKey = KEY_LEFT_CTRL; char shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT;
// İş düymələri burada
char Fn1Key = KEY_F2; char Fn2Key = KEY_F3; char Fn3Key = KEY_F4; char Fn4Key = KEY_F5;
const int sancaqlar = {9, 10, 11, 12, 13}; // bütün düymə sancaqlarının bir sıra
// Həssaslıq
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;
// Çərçivələri dondur
const int DELAY = 0;
enum Dövlətlər {azad edilmiş, sıxılmış, saxlanılmış, azad edilmiş};
struktur düyməsi {
int pin; Dövlətlər dövləti; int timeHeld; }; // baş barmaq, indeks, orta, üzük, kiçik;
düymə düymələri [BUTTON_NUM] = {};
initButton düyməsi (int p) {
b düyməsi; pinMode (p, GİRİŞ); b.pin = p; b.dövlət = Dövlətlər:: azad edildi; b.timeHeld = 0; qayıt b; }
boş quraşdırma () {
// quraşdırma kodunuzu buraya qoyun, bir dəfə işləsin: Serial.begin (9600); Keyboard.begin ();
while (! Serial) {};
// (int i = 0; i <(BUTTON_NUM); ++ i) {Serial.print ("set button") üçün düymələr; Serial. çap (i); Serial.print ("pin:"); Serial.println (sancaqlar ); // düymələr . pin = 1; düymələr = initButton (sancaqlar ); Serial.println (düymələr . Pin); }
}
bool readButton (int pin) {
// yoxlamaq və çıxarmaq düymələri əgər (digitalRead (pin) == YÜKSEK) {gecikmə (10); if (digitalRead (pin) == YÜKSƏK) {true true; }} false qaytar; }
int pintobin (int pin) {
əgər (pin == sancaqlar [0]) 1 qaytar; əgər (pin == sancaqlar [1]) 10 qaytar; əgər (pin == sancaqlar [2]) 100 qaytarsa; if (pin == sancaqlar [3]) 1000 qaytar; if (pin == sancaqlar [4]) 10000 qaytar; } düymə düyməsiStateUpdate (düymə b) {
bool press = readButton (b.pin);
keçid (b.dövlət) {halda Ştatları:: azad: b.timeHeld = 0; əgər (basın) b.state = Ştatlar:: basıldı; fasilə; halda basıldı: b.timeHeld+= 1; əgər (basın) {if (b.timeHeld> (THRESH_1/(1+DELAY)))) {b.state = States:: keçirilib; }} başqa {// if (b.timeHeld
int getButtonStateCode (b düyməsi)
{qayıt b.dövlət*pintobin (b.pin); }
int getCodeByButton (int kodu, int indeksi) {
int r1, r2, r3, r4, r5; int opStep = BUTTON_NUM - (1+indeks);
// ilk əməliyyat
əgər (opStep == 0) qaytarma kodu/10000; r1 = kod%10000;
əgər (opStep == 1)
qaytarma r1/1000; r2 = r1%1000; əgər (opStep == 2) r2/100 qaytar; r3 = r2%100; əgər (opStep == 3) r3/10 qaytar; r4 = r3%10; əgər (opStep == 4) r4/1 qaytar; r5 = r4%1; }
void completePress (int pin) {
// Serial.print ("giriş"); // Serial.println (pin); gecikmə (THRESH_3); Keyboard.releaseAll (); }
void doAction (int kodu) {
// dəyişdiricilər əgər (getCodeByButton (kod, 0) == 2) {// Serial.println ("--- dəyişdiricilər ----"); if (getCodeByButton (kod, 1)> 0) {Keyboard.press (altKey); // Serial.println ("------- alt ---------"); } else Keyboard.release (altKey); if (getCodeByButton (kod, 2)> 0) {Keyboard.press (ctrlKey); // Serial.println ("-------- ctrl ----------"); } else Keyboard.release (ctrlKey); if (getCodeByButton (kod, 3)> 0) {Keyboard.press (''); } else Keyboard.release (''); if (getCodeByButton (kod, 4)> 0) {Keyboard.press (shiftKey); // Serial.println ("------ shift ------"); } başqa Keyboard.release (shiftKey); } başqa {
// tapşırıqları yerinə yetirmək
keçid (kod) {halda 30: // --- | Fırça Klaviaturası.press (shiftKey); Keyboard.print ('b'); tam basın (kod); fasilə; hal 300: // --- | Silgi Keyboard.press (shiftKey); Keyboard.print ('e'); tam basın (kod); fasilə; halda 3000: // --- | Bucket Keyboard.press (shiftKey); Keyboard.print ('g'); tam basın (kod); fasilə; halda 30000: // --- | Lasso Keyboard.press (shiftKey); Keyboard.print ('l'); tam basın (kod); fasilə; hal 320: //-| o Klaviaturanı Geri Al.press (ctrlKey); Keyboard.print ('z'); tam basın (kod); fasilə; halda 3020: //-| -o Klaviaturanı Yenidən Təyin Et.press (ctrlKey); Keyboard.print ('y'); tam basın (kod); fasilə; case 30020: // | --o Tarix Klaviaturası.press (shiftKey); Keyboard.print ('y'); tam basın (kod); fasilə; hal 230: //-o | Keyboard.press saxla (ctrlKey); Keyboard.print (lər); tam basın (kod); fasilə; halda 3200: //- | o- Sürətli-p.webp
int buttonCode = 0;
for (int i = 0; i <BUTTON_NUM; ++ i) {düymələri = buttonStateUpdate (düymələr ); buttonCode+= getButtonStateCode (düymələr ); }
əgər (buttonCode! = 0) {
Serial.print ("düymə kodu:"); Serial.println (buttonCode); }
doAction (buttonCode);
// əsas kodunuzu bura qoyun, təkrar işləsin: // for (int i = düymələr [0]; i <ölçüsü (düymələri)/ölçüsü (düymələri [0])+düymələri [0]; ++ i) {/ / // if (readButton (i)) {// doAction (i); //} //}
əgər (getCodeByButton (buttonCode, 0)! = 2)
Keyboard.releaseAll ();
gecikmə (gecikmə);
}
Məntiq haqqında demək üçün çox şey yoxdur, çünki sonuncu nəzarətçimə bənzəyir, iki fərqli fərqlə:
- Düymələr öz dövlət maşınları ilə qurulmuşdur
- Əyalətlər, hərəkəti təyin edən bir kod hazırlamaq üçün toplanır
Prinsip bit dəyişməsinə bənzəyir, lakin düymələr birdən çox vəziyyətə malik olduğundan və sadəcə ikili ilə təmsil oluna bilmədikləri üçün əvəzinə on qüvvə ilə vurulur. Sonra bütün düymələrin vəziyyətini tək bir rəqəmə əlavə edirəm və bütün qısa yolların kodunu qoyduğum doAction () keçid ifadəsinə ötürürəm.
Gördüyünüz kimi, bütün mümkün birləşmələri xəritəyə salmamışam. Sevdiyim qısa yollardan yalnız bir neçəsini əlavə etdim, qalanını ən uyğun gördüyünüz şəkildə doldurmağı sizə həvalə edirəm;)
Addım 3: Korpus
Qapaq üçün 3D printerdən istifadə etdim. Gördüyünüz kimi, dizaynın bəzi qüsurları var və onu bağlamaq üçün MacGyver -ə getməli oldum. Buna görə model faylını hələ yerləşdirməyəcəyəm.
Düymələr "skamyalara" isti şəkildə yapışdırılır ki, qapaqları yerində saxlasınlar. Yumşaq düymələr bu işdə xüsusilə yaxşıdır, buna görə də mənimki kimi bir iş düzəltməyi planlaşdırırsınızsa, onlardan bir neçəsini əldə etdiyinizə əmin olun.
Ayrıca, çox yüngül olduğu üçün qutunun içərisinə bir az ağırlıq əlavə etməyi təklif edirəm. Əlavə qramlar onu daha təbii hiss edəcək.
Hər şeyi göstərildiyi kimi lehimləyin və usb kabelini bağlayın və hər şey yerinə uyğun olmalıdır (bir az yapışqan istifadə edərək)!
Addım 4: Nəticə və mümkün təkmilləşdirmələr
Orada var! Yalnız bir əlinizlə bütün vacib qısa yollarınıza daxil olmaq üçün istifadə edə biləcəyiniz bir əl nəzarətçisi!
İstifadə etmək üçün bir az əzələ yaddaşı lazımdır, amma həqiqətən çox yönlüdür!
Əlbəttə ki, mükəmməl deyil və hazırda onu təkmilləşdirməyin bəzi yollarını düşünürəm. Qutunun təkmilləşdirilməsi və qısayolların əlavə edilməsi ilə yanaşı, fərqli qısayollarla birdən çox proqramı dəstəkləmək maraqlı olardı. Nəzarət sxemləri arasında keçid etmək üçün eyni anda 4 düyməyə basmaq kimi bir düymə birləşməsinə malik olmağı düşünürəm, Photoshop qısa yol kitabxanası arasında Maya üçün hazırlanmış bir dərnəyə keçmək.
Sadəcə bəzi fikirlər.
Növbəti dəfə oxuduğunuz üçün təşəkkürlər!
Tövsiyə:
Daha Az Yerdə Daha Fazla Marul Artırmaq Və ya Kosmosda Marul Yetiştirmek, (Az və ya çox) .: 10 Addım
Daha Az Məkanda Ya Daha Çox Marul Yetişdirmək … Kosmosda Marul yetişdirmək, (Az və ya çox) .: Bu, Instructables vasitəsilə təqdim olunan Yerin Ardınca Büyüyən, Yaradıcı Yarışmasına peşəkar bir təqdimatdır. Kosmik məhsul istehsalı üçün dizayn hazırladığım və ilk Təlimatlandırıcımı yerləşdirdiyim üçün daha həyəcanlı ola bilmədim. Başlamaq üçün yarışma bizdən xahiş etdi ki
Oynaq təzyiqinə həssas yastıqlar (rəqəmsal oyun meydançaları üçün - və daha çox): 11 addım (şəkillərlə)
Oynaq Basınç Həssas Yastiqciqlar (Rəqəmsal Oyun Sahələri üçün - və daha çoxu): Rəqəmsal oyuncaqlar və ya oyunlar yaratmaq üçün istifadə edilə bilən, təzyiqə həssas bir yastıq düzəltməyin yollarını göstərmək üçün bir təlimatdır. Böyük miqyaslı qüvvəyə həssas bir rezistor kimi istifadə edilə bilər və oynaq olsa da, daha ciddi layihələr üçün istifadə oluna bilər
Timelapse, Portretlər və daha çox şey üçün böyük LED "üzük" İşıq : 11 addım (şəkillərlə)
Timelapse, Portretlər və Daha çoxu üçün böyük LED "üzük" İşıq …: Bir neçə gün davam edən bir çox timelapse videosu çəkirəm, amma bağlama işıqlarının verdiyi qeyri -bərabər işığa nifrət edirəm - xüsusən də gecə. Böyük bir üzük işığı çox bahadır - buna görə əlimdə olan əşyalarla tək bir axşam özüm bir şey etmək qərarına gəldim
CheapGeek- Daha çox və ya daha çox çirkin bir monitor etmək : 5 addım
CheapGeek- Daha çox və ya daha çox çirkin bir monitor düzəlt … (necə baxdığınızdan asılı olaraq) evdə PC işi üçün istifadə etdiyim ehtiyat monitorum var idi. Monitorun qara olması lazım idi. Üstəlik əlimdəki hər şey qara rəngdədir
Kompüteriniz üçün daha çox güc. (İkinci PSU Güc Təchizatı): 3 addım
Kompüteriniz üçün daha çox güc. (İkinci PSU Güc Təchizatı): Bu təlimat, video kartınız (və ya yalnız bir 12V rayınız varsa, həm cpu, həm də video karta daha çox güc verə biləcəksə) sizə bir az sərbəstlik verməyi göstərəcək. Başlamazdan əvvəl bu, qurulan usta və qul deyil