Orodha ya maudhui:
- Hatua ya 1: Kupanga
- Hatua ya 2: Mfano wa Nambari
- Hatua ya 3: Kesi
- Hatua ya 4: Matokeo na Maboresho Yanayowezekana
Video: Kidhibiti cha Mkato cha Mkononi (kwa Photoshop + Zaidi) [Arduino]: Hatua 4
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
Wakati wa mwisho niliunda pedi ndogo ya kudhibiti kutumia kwenye Photoshop. Ilifanya maajabu, na bado ninaitumia! Lakini pia ni mdogo, na vifungo vitano tu na saizi muhimu na piga opacity. Bado nilijikuta nikifikia kibodi sana…
Kwa hivyo nilianza kufanya kazi kwenye upitishaji unaofuata wa pedi ya kudhibiti, moja ikiwa na vifungo zaidi na utendaji. Kidhibiti kimoja cha kuwatawala wote.
Hii sio pedi hiyo ya kudhibiti. Lakini kwa njia inaweza kuwa bora.
Je! Ikiwa ungekuwa na njia ya mkato ya tani, lakini kwa kifurushi kizuri na kizito unaweza kushikilia kwa mkono wako wa bure wakati unachora bila kukatizwa? … Sawa, ya kutosha na infomercial.
Kidhibiti hiki kimepangwa kwa njia ambayo, ikiwa na vifungo 4 tu, inaweza kupangiliwa hadi njia za mkato 32 zinazowezekana! Kitufe cha nyongeza cha 5 kipo ili kuniruhusu nitumie funguo za kurekebisha katika mchanganyiko wowote, ambayo ni muhimu kwa programu nyingi (je! Uliwahi kujaribu mchanganyiko wa Alt-RMB katika PS? Ikiwa haujafanya hivyo, tafadhali fanya. Ni kuokoa maisha). Ninaelezea mfumo baadaye.
Ili kufanya yote haya utahitaji:
- 1 Microcontroller (nilitumia Adafruit ItsyBitsy 32u4 lakini yeyote anapaswa kufanya ilimradi ina chip ya atmega32u4)
- 1 adapta ndogo ya USB (data, sio nguvu tu)
- Vifungo 5 vya kushinikiza (nilitumia laini, kama hizi)
- Vipinzani vya 10k Ohm (1 kwa kila kitufe)
- Waya, ubao wa mkate, vifaa vya solder, nk.
- Kitu cha kutengeneza casing na (printa ya 3D, n.k.)
Huu ni mradi wa kiwango cha kati wa Arduino, na ninashauri kutazama mafunzo yangu ya zamani ili kuelewa vizuri kinachoendelea, kwani hii ni kurudia kwa mambo niliyoelezea hapo.
Ok, wacha tuanze!
Hatua ya 1: Kupanga
Huu ni mpango wa kimsingi niliouvuta wa mtawala. Mzunguko ni rahisi sana ukilinganisha na mradi wangu uliopita! Lakini tutaweza kufanya mengi zaidi na vifungo vichache ilivyonavyo, kwa nguvu ya mitambo ya pamoja!
Wazo nyuma ya mpango wa kudhibiti ni kwamba kila kitufe kinaweza kuwa bure, kushinikizwa na kutolewa, au kushinikizwa na kushikiliwa. Kubonyeza na kutoa ndio itakayowezesha njia ya mkato, wakati kushikilia vifungo kutatupa ufikiaji wa njia za mkato tofauti. Kwa hivyo ukibonyeza kitufe A tu, utaamilisha njia ya mkato A, lakini ikiwa unashikilia B wakati wa kubonyeza A, utapata njia ya mkato tofauti. Unaweza kushikilia hadi vifungo 3 mara moja wakati wa kubonyeza, kwa hivyo wakati utatumia mchanganyiko wa kimsingi, utaona ni mchanganyiko wangapi unaowezekana na mfumo huu!
Kitufe cha ziada cha tano kilisikia kama nyongeza ya asili, ikipewa umbo la mkono niliokuja nao. Niliamua kuitumia kupata funguo za kurekebisha katika picha. Njia inavyofanya kazi ni tofauti kidogo na vifungo vingine: wakati wowote kitufe cha kidole gumba kinaposhikiliwa, vigeuzi tu vitatumika. Hizi zitawasha wakati zinashikiliwa na nyingi zinaweza kushinikizwa. Kwa hivyo ikiwa kitufe A ni Shift, na kifungo B ni Ctrl, wakati unashikilia A na B itakuwa kama kubonyeza Shift na Ctrl, lakini kwa muda mrefu kama kifungo cha kidole kimeshikiliwa!
Ganda imeundwa kuwa ergonomic na ambidextrous. Nilijali sana kuifanya iwe sawa snogly ili kutumia kidole kidogo kisichoshe sana, na inapaswa kufanya kazi kwa wale walio na mikono mikubwa kuliko yangu pia.
Hatua ya 2: Mfano wa Nambari
Ni mazoezi mazuri kujaribu vifungo kwenye ubao wa mkate. Ni rahisi sana, unganisha tu vifungo na vipinga kama inavyoonyeshwa. Unaweza kuijaribu na nambari hapa (mbadala ya kiungo cha pastebin):
# pamoja
// tumia chaguo la vthisv kwa MacOS:
// char ctrlKey = KEY_LEFT_GUI;
// tumia chaguo la vthisv kwa Windows na Linux:
char ctrlKey = KEY_LEFT_CTRL; char shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT;
// Funguo za Kazi hapa
char Fn1Key = KEY_F2; char Fn2Key = KEY_F3; char Fn3Key = KEY_F4; char Fn4Key = KEY_F5;
pini za ujazo = {9, 10, 11, 12, 13}; // safu ya pini zote za kifungo
// Usikivu
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;
// Fungia muafaka
ucheleweshaji wa int = 0;
enum States {huru, imeshinikizwa, imeshikiliwa, imetolewa};
kitufe cha muundo {
pini; Nchi zinasema; wakati uliofanyika }; // kidole gumba, faharisi, katikati, pete, kidogo;
vifungo vya kifungo [BUTTON_NUM] = {};
kitufe cha initButton (int p) {
kifungo b; pinMode (p, INPUT); b.pin = p; b.state = States:: huru; b.timeHeld = 0; kurudi b; }
usanidi batili () {
// weka nambari yako ya usanidi hapa, kukimbia mara moja: Serial.begin (9600); Kinanda.anza ();
wakati (! Serial) {};
// Vifungo vya (int i = 0; i <(BUTTON_NUM); ++ i) {Serial.print ("seti ya kifungo"); Printa ya serial (i); Serial.print ("kwenye pini:"); Serial.println (pini ); // vifungo .pini = 1; vifungo = initButton (pini ); Serial.println (vifungo .pin); }
}
kusoma boolButton (int pin) {
// angalia na utengue vifungo ikiwa (digitalRead (pin) == HIGH) {kuchelewa (10); ikiwa (digitalRead (pin) == HIGH) {kurudi kweli; }} kurudi uwongo; }
int pintobin (int pin) {
ikiwa (pini == pini [0]) kurudi 1; ikiwa (pini == pini [1]) kurudi 10; ikiwa (pini == pini [2]) kurudi 100; ikiwa (pini == pini [3]) kurudi 1000; ikiwa (pini == pini [4]) rudisha 10000; kitufe} kitufe cha kusasisha hali (kifungo b)
vyombo vya habari vya bool = readButton (b.pin);
badilisha (b.state) {case States:: freed: b.timeHeld = 0; ikiwa (bonyeza) b.state = States:: taabu; kuvunja; kesi imesisitizwa: b.timeHeld + = 1; ikiwa (bonyeza) {if (b.timeHeld> (THRESH_1 / (1 + DELAY))) {b.state = States:: held; }} mwingine {// if (b.timeHeld
int getButtonStateCode (kifungo b)
{kurudi b.state * pintobin (b.pin); }
intCodeByButton (nambari ya ndani, faharisi ya int) {
int r1, r2, r3, r4, r5; int opStep = BUTTON_NUM - (faharisi 1 +);
// operesheni ya kwanza
ikiwa (opStep == 0) nambari ya kurudi / 10000; r1 = nambari% 10000;
ikiwa (opStep == 1)
kurudi r1 / 1000; r2 = r1% 1000; ikiwa (opStep == 2) r2/100; r3 = r2% 100; ikiwa (opStep == 3) kurudi r3 / 10; r4 = r3% 10; ikiwa (opStep == 4) kurudi r4 / 1; r5 = r4% 1; }
kamili batili (int pin) {
// Serial.print ("pembejeo"); // Serial.println (pini); kuchelewesha (THRESH_3); Kinanda.releaseAll (); }
batili doAction (nambari ya ndani) {
// Modifiers ikiwa (getCodeByButton (code, 0) == 2) {// Serial.println ("--- modifiers ----"); ikiwa (getCodeByButton (nambari, 1)> 0) {Keyboard.press (altKey); // Serial.println ("------- alt ---------"); } Kinanda nyingine.tufadhali (altKey); ikiwa (getCodeByButton (nambari, 2)> 0) {Keyboard.press (ctrlKey); // Serial.println ("-------- ctrl ----------"); } Kinanda nyingine.release (ctrlKey); ikiwa (getCodeByButton (nambari, 3)> 0) {Keyboard.press ("); } Kinanda nyingine. tafadhali ("); ikiwa (getCodeByButton (nambari, 4)> 0) {Keyboard.press (shiftKey); // Serial.println ("------ kuhama ------"); } Kinanda nyingine.tufadhali (shiftKey); } mwingine {
// fanya kazi
kubadili (nambari) {kesi 30: // --- | Kinanda cha brashi.press (shiftKey); Kinanda.print ('b'); waandishi kamili (nambari); kuvunja; kesi 300: // --- | Kinanda cha Eraser.press (shiftKey); Kinanda.print ('e'); waandishi kamili (nambari); kuvunja; kesi 3000: // --- | Kinanda cha Ndoo.press (shiftKey); Kinanda.print ('g'); waandishi kamili (nambari); kuvunja; kesi 30000: // --- | Kinanda ya Lasso.press (shiftKey); Kinanda.print ('l'); waandishi kamili (nambari); kuvunja; kesi 320: // - | o Tendua Keyboard.press (ctrlKey); Kinanda.print ('z'); waandishi kamili (nambari); kuvunja; kesi 3020: // - | -o Rudisha Kinanda.press (ctrlKey); Kinanda.print ('y'); waandishi kamili (nambari); kuvunja; kesi 30020: // | --o Historia Kinanda.press (shiftKey); Kinanda.print ('y'); waandishi kamili (nambari); kuvunja; kesi 230: // - o | Hifadhi Keyboard.press (ctrlKey); Kinanda.print ('s'); waandishi kamili (nambari); kuvunja; kesi 3200: // - | o- Kibodi ya haraka ya PNG.press (shiftKey); Kinanda.press (ctrlKey); Kinanda.print ('\' '); waandishi kamili (nambari); kuvunja; kesi 22230: // ooo | Fn1 Kinanda.press (Fn1Key); waandishi kamili (nambari); kuvunja; kesi 22320: // oo | o Fn2 Keyboard.press (Fn2Key); waandishi kamili (nambari); kuvunja; kesi 23220: // 0 | 00 Fn3 Kinanda.press (Fn3Key); waandishi kamili (nambari); kuvunja; kesi 32220: // | ooo Fn4 Keyboard.press (Fn4Key); waandishi kamili (nambari); kuvunja; }}} int f = 0; // ------------------ MTANDAO KUU -------------- {)
kifungo cha ndani Code = 0;
kwa (int i = 0; i <BUTTON_NUM; ++ i) {vifungo = buttonStateUpdate (vifungo ); kifungoCode + = getButtonStateCode (vifungo ); }
ikiwa (Nambari ya kifungo! = 0) {
Serial.print ("msimbo wa kifungo:"); Serial.println (kifungo cha kificho); }
doAction (kifungo cha kificho);
// weka nambari yako kuu hapa, kukimbia mara kwa mara: // for (int i = vifungo [0]; i <sizeof (vifungo) / sizeof (vifungo [0]) + vifungo [0]; ++ i) {/ / // ikiwa (somaButton (i)) {// doAction (i); //} //}
ikiwa (getCodeByButton (buttonCode, 0)! = 2)
Kinanda.releaseAll ();
kuchelewesha (kuchelewesha);
}
Hakuna mengi ya kusema juu ya mantiki kwani ni sawa na ile ya mtawala wangu wa mwisho, na tofauti mbili mashuhuri:
- Vifungo vimechakaa na mashine zao za serikali
- Mataifa yanajumuishwa pamoja ili kuunda nambari ambayo huamua hatua
Kanuni hiyo ni sawa na kuhama kidogo, lakini kwa sababu vifungo vina majimbo mengi na haziwezi tu kuwakilishwa na binary, huzidishwa na nguvu za kumi badala yake. Kisha ninaongeza vifungo vyote kuwa nambari moja, na kuipitisha kwenye taarifa ya kubadili (), ambapo niliweka nambari zote za mkato.
Kama unavyoona, sikuweka ramani kila mchanganyiko unaowezekana. Nimeongeza tu njia chache za mkato ninazozipenda, naachia wewe kujaza zingine jinsi unavyoona inafaa;)
Hatua ya 3: Kesi
Nilitumia printa ya 3D kwa casing. Kama unavyoona, muundo una kasoro kadhaa na ilibidi MacGyver njia ya kuifunga tu. Kwa hivyo sitakuwa nikituma faili ya mfano bado.
Vifungo vimechomwa moto kwenye "madawati" ili waweze kuweka kofia mahali. Pushbuttons laini ni nzuri sana kwa hiyo, kwa hivyo hakikisha kupata zingine ikiwa unapanga kutengeneza kesi sawa na yangu.
Pia, ninashauri kuongeza uzito kidogo ndani ya kesi hiyo, kwani ni nyepesi sana. Gramu za ziada zitaifanya kuishikilia kuwa ya asili zaidi.
Solder kila kitu kama inavyoonyeshwa na unganisha kebo ya usb, na kila kitu kinapaswa kutoshea (kwa msaada wa gundi)!
Hatua ya 4: Matokeo na Maboresho Yanayowezekana
Hapo unayo! Kidhibiti cha mkono ambacho unaweza kutumia kupata njia zako za mkato muhimu kwa mkono mmoja tu!
Inachukua kumbukumbu ya misuli kutumia, lakini ni sawa!
Kwa kweli sio kamili, na sasa hivi ninafikiria juu ya njia kadhaa za kuiboresha. Kando na kuboresha kitako na kuongeza njia za mkato, nadhani ningefurahi kuunga mkono matumizi anuwai na njia za mkato tofauti. Ninafikiria kuwa na mchanganyiko wa kitufe kubadili kati ya mipango ya kudhibiti, kama kubonyeza vifungo 4 kwa wakati mmoja kubadili kati ya maktaba ya mkato ya Photoshop hadi kwa mkanda mmoja uliotengenezwa kwa Maya.
Mawazo tu.
Asante kwa kusoma, hadi wakati mwingine!
Ilipendekeza:
Kidhibiti cha Kijijini cha Kivinjari cha Arduino (linux): Hatua 9 (na Picha)
Kidhibiti cha Kijijini cha Kivinjari cha Arduino (linux): Tuna watoto. Nawapenda kwa bits lakini wanaendelea kuficha rimoti kwa setilaiti na TV wanapoweka vituo vya watoto. Baada ya haya kutokea kila siku kwa miaka kadhaa, na baada ya mke wangu kipenzi kuniruhusu kuwa na
Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi: Hatua 6
Ingia kwa kasi ya juu ECG au Takwimu Nyingine, Kwa kuendelea kwa Zaidi ya Mwezi: Mradi huu ulibuniwa kusaidia timu ya utafiti wa matibabu ya chuo kikuu, ambaye alihitaji kuvaa ambayo inaweza kuingiza ishara 2 x ECG kwa sampuli 1000 / sec kila moja (sampuli 2K kwa sekunde) kuendelea kwa siku 30, ili kugundua arrhythmias. Mradi wa mradi
Kidhibiti cha Panorama cha Arduino cha Kupita Saa: Hatua 8 (na Picha)
Mdhibiti wa Panorama wa Muda-Kupungua kwa Arduino: Mdhibiti wa Panorama kwa Kamera za GoPro Mdhibiti atazungusha GoPro yako kwa pembe iliyowekwa kwa muda uliowekwa au atakuzungusha GoPro kwa mzunguko kamili kwa muda uliowekwa. Mradi huu unategemea msingi wa awali unaoweza kufundishwa na Tyler Winegarner Angalia
Zilizovunjika kwa Masikio kwa Jozi Yako Inayodhaminiwa zaidi kwa 99p na Soldering Rahisi: 3 Hatua
Sikio lililovunjika kwa Jozi Yako Inayodhaminiwa zaidi kwa 99p na Soldering Rahisi: Kuna miongozo michache ya kutengeneza plugs na inaongoza kwenye vifaa vya sauti vilivyovunjika lakini hizi zinakosa njia rahisi zaidi ya kuchukua nafasi ya risasi na moja kutoka kwa bei rahisi kutoka kwa ebay. Matengenezo ya vifaa vya masikio na kuziba ni ngumu na haiwezekani kuwa kama
Kifurushi cha Betri cha Kidhibiti cha Xbox cha Mdhibiti kinachoweza kulipwa (mradi katika Maendeleo): Hatua 3 (na Picha)
DIY Xbox One Mdhibiti Kifurushi cha Battery kinachoweza kuchajiwa (mradi katika Maendeleo): Kabla hatujaingia kwenye maelezo ningependa kushughulikia kichwa. Mradi huu unaendelea kwa sababu ya matokeo kadhaa baada ya kujaribu muundo wa kwanza. Hiyo ikisemwa ninaunda bodi mpya ili kubeba mabadiliko ambayo nitapita. Nilifunua