Orodha ya maudhui:
- Hatua ya 1: Vifaa
- Hatua ya 2: Prototyping
- Hatua ya 3: Kukata Laser kwa Kesi
- Hatua ya 4: Kufunga vifungo vya Arcade
- Hatua ya 5: Weka Vifungo na Unganisha kwenye Bodi yako
- Hatua ya 6: Coding Hell
- Hatua ya 7: Kila kitu hufanya kazi
Video: Chomeka na Ucheze Vifungo vya Arcade: Hatua 7 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Hivi majuzi nilianza kutumia Arduino kutengeneza miradi yangu. Kama mbuni ninapenda kutengeneza mwingiliano wa kawaida wa michezo yangu / miradi ya maingiliano.
Shida moja niliyoipata kwa kuwa kutumia mawasiliano ya serial ni ngumu sana na inakabiliwa na shida na mende na nilitaka suluhisho la haraka na rahisi kuniruhusu nitumie vifungo vya nje kudhibiti michezo yangu.
Kama nilitaka kuziba na kucheza kifaa ambacho unaweza kutumia mara moja na kompyuta yoyote, nilinunua Arduino Leonardo. Inakaribia kufanana na Uno, lakini na tofauti chache. Tofauti kuu ambayo nitatumia kwa faida yangu kwa mradi huu ni uwezo wa kutenda kama kujificha. Kifaa cha kujificha, au kiolesura cha kibinadamu ni itifaki ya USB inayoruhusu kompyuta yako kutambua na kukubali pembejeo kutoka kwa kibodi na panya ya kompyuta bila kulazimisha kusanikisha madereva maalum kwa kila kifaa.
Kumbuka: unaweza pia kutumia Uno, ikiwa unasasisha firmware, kama inavyoonyeshwa hapa.
Hatua ya 1: Vifaa
Kwa mradi huu utahitaji:
1x Mdhibiti mdogo wa uwezo wa kujificha (kuna wachache kama Arduino micro, Kutokana na Leonardo, nitatumia Arduino Leonardo)
1x USB kwa kebo ya arduino (kwa Leonardo ni USB ndogo)
Vifungo vya 3x Arcade (nilinunua hizi)
1x mkate wa mkate usiouzwa
Vipinzani vya 3x 10k ohm
Vipinzani vya 3x 220 ohm
Waya za jumper
Kwa kweli unaweza kuongeza vifungo zaidi, au kuuza kila kitu kwenye ubao wa mkate ili kufanya mambo yawe ya kudumu zaidi.
Hatua ya 2: Prototyping
Kwa hivyo, kabla ya kununua vifungo vya uwanja ambao nilitaka kutumia nilijaribu hii kwa vifungo vya kawaida vya kushinikiza. Funga vifungo kwa njia ya kawaida, naamini nilitumia vipinzani vya 10K ohm.
Programu, shukrani kwa Leonardo, ni rahisi sana. Lazima ujumuishe maktaba ya Kinanda. Nilitumia mfano wastani wa Arduino "Ujumbe wa kibodi" kama msingi wa nambari yangu.
Sasa swali ni jinsi unavyotaka vifungo vyako vifanye kazi. Kimsingi una chaguo mbili, vitufe vya kifungo kimoja na mkondo wa herufi endapo utasukumwa. Inategemea mradi wako nini ungetaka.
Ikiwa unataka mfano mmoja wa kitu kutokea ikiwa kitufe kinabanwa, kama kuruka au kuzima / kuzima basi utachagua njia moja ya kushinikiza. Kwa njia hii unaangalia hali ya kitufe, iko juu au chini? Halafu unalinganisha na hali iliyopita, ilikuwa tayari juu au chini? Ikiwa kitufe kilichopita ni sawa na hali ya kifungo cha sasa hakuna kinachotokea. Lakini ikiwa hali ya kifungo inabadilika, kama vile bonyeza na kutolewa kifungo kuna kitu kinachotokea. Katika nambari yangu inaandika barua tu wakati kitufe kinasukumwa, sio wakati kinatolewa lakini unaweza kubadilisha hii.
# pamoja na "Kinanda.h"
kifungo cha int intLeft = A0; // pini ya kuingiza kwa kifungo cha kushinikiza
kifungo cha int intRight = A1; kifungo cha int intUp = A2;
int previousButtonStateLeft = JUU; // kwa kuangalia hali ya kifungo cha kushinikiza
int previousButtonStateRight = JUU; int previousButtonStateUp = JUU;
usanidi batili () {
// fanya kifungo cha kushinikiza Kitufe: pinMode (kifungoLeft, INPUT); pinMode (kifungoHaki, INPUT); pinMode (kifungoUp, INPUT); // kuanzisha udhibiti juu ya kibodi: Keyboard.begin (); }
kitanzi batili () {
// soma kitufe cha kushinikiza: int buttonStateLeft = digitalRead (buttonLeft); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateLeft! = previousButtonStateLeft) // na kwa sasa imeshinikizwa: && (buttonStateLeft == HIGH)) {// andika ujumbe Kinanda.print ("a"); } // // hifadhi hali ya kitufe cha sasa kwa kulinganisha wakati ujao: previousButtonStateLeft = buttonStateLeft;
// soma kifungo cha kushinikiza:
kifungo cha ndaniStateRight = dijitiSoma (kitufe cha kulia); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateRight! = previousButtonStateRight) // na kwa sasa imeshinikizwa: && (buttonStateRight == HIGH)) {// chapa ujumbe wa Kinanda.print ("w"); } // // hifadhi hali ya kifungo cha sasa kwa kulinganisha wakati ujao: previousButtonStateRight = buttonStateRight;
// soma kifungo cha kushinikiza:
kifungo cha ndaniStateUp = digitalRead (buttonUp); // ikiwa hali ya kifungo imebadilika, ikiwa ((buttonStateUp! = previousButtonStateUp) // na kwa sasa imeshinikizwa: && (buttonStateUp == HIGH)) {// andika ujumbe Keyboard.print ("d"); } // // hifadhi hali ya kitufe cha sasa kwa kulinganisha wakati ujao: previousButtonStateUp = buttonStateUp; }
Ikiwa unataka kitu kitokee kwa muda mrefu kama kitufe kinasukumwa, kama unavyotaka kwa harakati ya kushoto au kulia, acha tu iandike barua bila kuangalia hali ya kitufe kilichopita. Kumbuka kukumbuka ucheleweshaji mdogo ili kuizuia iwe wazimu na kukabiliana na vitufe vyovyote ambavyo vifungo vyako vinaweza kuwa navyo. Kuna njia nzuri zaidi za kutatua shida hii, lakini hii ni rahisi na haraka.
# pamoja na "Kinanda.h"
kifungo cha int intLeft = A0; // pini ya kuingiza kwa kifungo cha kushinikiza
kifungo cha int intRight = A1; kifungo cha int intUp = A2;
usanidi batili () {
// fanya kifungo cha kushinikiza Kitufe: pinMode (kifungoLeft, INPUT); pinMode (kifungoHaki, INPUT); pinMode (kifungoUp, INPUT); // kuanzisha udhibiti juu ya kibodi: Keyboard.begin (); }
kitanzi batili () {
// soma kitufe cha kushinikiza: int buttonStateLeft = digitalRead (buttonLeft); ikiwa (buttonStateLeft == HIGH) // ikiwa kitufe kinabanwa {// chapa ujumbe wa Kinanda.print ("a"); kuchelewesha (50); // Kuchelewa kwa kukwepa na kukuwezesha kupata kompyuta}
// soma kifungo cha kushinikiza:
kifungo cha ndaniStateRight = dijitiSoma (kitufe cha kulia); ikiwa (buttonStateRight == HIGH) // ikiwa kitufe kinabanwa {// chapa ujumbe wa Kinanda.print ("w"); kuchelewesha (50); // Kuchelewa kwa kurudi na kukuruhusu kupata kompyuta}
// soma kifungo cha kushinikiza:
kifungo cha ndaniStateUp = digitalRead (buttonUp); ikiwa (buttonStateUp == HIGH) // ikiwa kifungo kibonye {// chapa ujumbe Keyboard.print ("d"); kuchelewesha (50); // Kuchelewa kwa kukwepa na kukuwezesha kupata kompyuta}}}
Daima unaweza kutumia mchanganyiko wa njia zote mbili, kulingana na kile kinachofaa mahitaji yako.
Hatua ya 3: Kukata Laser kwa Kesi
Kwa kesi hiyo nilitumia 3 mm mdf, na kuingiza 2mm Plexiglas. Niliongeza kuingiza kama ninataka kuongeza taa za ndani ndani ya kesi hiyo baadaye ili kuifanya iwe nzuri na yenye kung'aa.
Niliingiza vipimo vyangu kwa makercase na kupakua faili ya svg. Niliifungua kwenye Illustrator na nikaongeza mashimo mahali nilipotaka. Ikiwa huna Illustrator unaweza kutumia Inkscape kwa hatua hii.
Huna haja ya kutumia mkataji wa laser kwa kweli, kwani hii ni sanduku rahisi na mashimo machache ndani yake. Inapaswa kuwa rahisi kutosha kuunda kwa kutumia zana za jadi za nguvu (au hata zana za mkono!) Mimi ni mvivu sana na nilikuwa na ufikiaji wa mkataji wa laser.
Hatua ya 4: Kufunga vifungo vya Arcade
Kitufe cha Arcade (au yangu angalau) kina sehemu tatu. Kitambaa cha plastiki, mmiliki wa LED (pamoja na LED ndani yake) na swichi ndogo. Kubadilisha ndogo ni kitufe halisi cha kitufe na ndio utahitaji kuungana na Arduino yako. Kuna vituo vitatu (biti za chuma ambazo hutoka nje, ambapo utaunganisha waya zako) kwenye swichi ndogo. Yule aliye juu (au chini, unachotaka) ni ardhi. Vituo vingine viwili ni Open Normal (NO) na Normal Closed (NC). HAKUNA maana kwamba ikiwa swichi imebanwa inafanya unganisho. NC inamaanisha kuwa ikiwa kitufe kinabanwa huvunja unganisho. Tutatumia HAPANA kwa mradi huu. Niliandika ardhi, HAPANA na NC kwenye swichi yangu ndogo kwenye picha.
Vifungo vyangu vimewashwa kwa hivyo niliuzia waya kwa mmiliki wa LED. Hakikisha kuweka rangi kwenye waya wako ili ujue ni upande upi ni anode na ni ipi cathode (pande nzuri na hasi za LED).
Niliuza pini za kichwa kwenye waya zangu, kuzifanya ziwe rahisi kutumia na ubao wa mkate usiouzwa. Niliuza waya kwa pini ya kichwa na kuweka joto kidogo neli kuzunguka ili kuwafanya wawe hodari zaidi.
Hatua ya 5: Weka Vifungo na Unganisha kwenye Bodi yako
Sasa ni wakati wa kuweka vifungo vyako vya arcade katika kesi yako. Ondoa pete ya kufuli kutoka kwenye kasha la plastiki na ubandike kupitia shimo kwenye kesi hiyo. Piga pete ya kufuli upande wa pili ili kupata kitufe mahali pake. Fimbo kwenye kishika LED na uipindue ili kuifunga iwe mahali. Tembeza kwenye swichi ndogo (kuna watu mashuhuri kidogo na mashimo ambayo yanalingana na kila mmoja kuishikilia).
Ili kuunganisha swichi kwenye ubao ondoa vifungo vya kushinikiza unaweza kuwa umeongeza au haujaongeza. Unganisha waya inayoongoza kutoka chini ya ubadilishaji mdogo kwenda chini ya Arduino na kontena (ambapo mguu wa kitufe cha kushinikiza ulikuwa). Unganisha waya inayoongoza kutoka NO ya kubadili ndogo hadi 5v ya Arduino.
Kwa waya za LED unganisha waya hasi chini na chanya kupitia kontena la 220OHM kwa 5v. Ukiwatia waya kama hii watakuwa kila wakati. Unaweza kuwaongeza kwenye nambari na uwape kuwasha na kuzima kwa usawazishaji na vifungo ikiwa unataka.
Hatua ya 6: Coding Hell
Kwa hivyo, sasa umeambatisha vitufe vyako vipya kwako nambari ya zamani na ghafla haifanyi kazi kama inavyostahili tena. Herufi zinaonekana mbili au tatu kwa wakati na haifanyi kazi kama inavyostahili na michezo rahisi ya HTML5. Karibu ujipunguze kuzimu.
Kwanza fanya vitu vya kwanza. Nambari tuliandika wakati wa kuiga? inafanya kazi vizuri na ni rahisi, lakini sio kifahari. Ikiwa unataka kuongeza vifungo zaidi lazima unakili na ubandike vijisehemu vya nambari na ubadilishe maadili yote ndani yao. Ukisahau mmoja wao unaingia kuzimu ya kurekebisha hitilafu. Gundua mandhari hapa? Kuandika ni kuzimu, lakini ni furaha sana, kutatua shida kuzimu.
Tunataka nambari fupi nzuri. Kwa hivyo tutabadilisha vitufe vyote vya kibinafsi kuwa safu. Kwa njia hii, ikiwa unataka kuongeza vifungo zaidi lazima ubadilishe tu kitufe, pini ambapo ziko na pato lao. Pia tunabadilisha pembejeo muhimu kuwa ASCII kwa sababu… inafanya kazi vizuri?
Sasa ikiwa uko kama mimi utaandika njia rahisi na rahisi ya kutumia vifungo na haitafanya kazi vizuri kama vile ungependa. Kwa hivyo unatengeneza matoleo mapya (kumbuka watoto, nyongeza za kuongeza!), Jaribu vitu tofauti, andika nambari ngumu zaidi ambayo bado haifanyi kazi vizuri na mwishowe urudi kwa nambari rahisi uliyoandika masaa kadhaa iliyopita NA uone kosa ndogo ambalo mara moja hutengeneza kila kitu.
Wacha nikuepushe na safari hiyo, hii hapa nambari ya kufanya kazi:
Kanusho: maandishi haya yaliandikwa baada ya masaa ya kuweka alama na kurekebisha hitilafu nambari rahisi sana. Tafadhali puuza ishara zozote za kuchanganyikiwa na uzingatia nambari ya kufanya kazi iliyochapishwa hapa chini;)
# pamoja na "Kinanda.h" #fafanua kitufeKiwango cha 3
Ink buttonPin = {
A0, A1, A2}; // Vifungo viko wapi? Barua ya barua = {97, 100, 119}; // Barua katika ASCII, hapa: a, d, w int buttonState [buttonAmount]; // Je! Kifungo kimesukuma au la?
usanidi batili () {
kwa (int i = 0; i <buttonAmount; i ++) {// mzunguko kupitia pinMode ya safu (buttonPin , INPUT); // weka pini zote kuingiza}}
kitanzi batili () {
kwa (int i = 0; i <buttonAmount; i ++) // mzunguko kupitia safu ya {buttonState = digitalRead (buttonPin ); // Je! Vifungo vinafanya nini? ikiwa (buttonState == HIGH) {// Ikiwa kitufe kinabanwa Keyboard.press (asciiLetter ); // tuma barua inayolingana} mwingine // ikiwa kitufe hakikubanwa {Kinanda.tafadhali (asciiLetter ); // toa barua}}
}
Hatua ya 7: Kila kitu hufanya kazi
Furahia kuziba kwako na ucheze mdhibiti wa kawaida!
Ikiwa ulipenda mafunzo haya, tafadhali fikiria kunipigia kura kwenye mashindano!
Ilipendekeza:
Vito vya Pendant vya Pendant vya Umeme wa jua vya jua: Hatua 11 (na Picha)
Vito vya Pendant vya Pendant vya Moyo wa jua: Hii inaweza kufundishwa ni kwa moyo unaotumiwa na jua na mwangaza wa nyekundu wa LED. Inapima 2 " na 1.25 ", pamoja na kichupo cha USB. Ina shimo moja kupitia juu ya ubao, na kufanya kunyongwa iwe rahisi. Vaa kama mkufu, vipuli, dhamana kwenye pini
Vichungi vya kupita vya juu na vya kati vya LED: Hatua 4
Vichungi vya kupita vya juu na vya kati vya LED: Tuliunda vichungi vya kupita vya juu na vya kati ili kusababisha LED kung'aa na kufifia kulingana na mzunguko uliowekwa kwenye mzunguko. Wakati masafa ya juu yamewekwa kwenye mzunguko, ni LED tu ya kijani itakayowaka. Wakati mzunguko umewekwa kwenye mzunguko i
Uingizaji wa Kugusa Uweza wa ESP32 Kutumia "Vifungo Vya Shimo la Metali" kwa Vifungo: Hatua 5 (na Picha)
Ingizo la Uwezo wa Kugusa la ESP32 Kutumia "Vipuli vya Hole ya Metali" kwa Vifungo: Kama nilikuwa nikikamilisha maamuzi ya muundo wa mradi ujao wa ESP32 WiFi Kit 32 unaohitaji uingizaji wa vitufe vitatu, shida moja inayoonekana ni kwamba WiFi Kit 32 haina kitufe kimoja cha mitambo, bado peke yake vifungo vitatu vya mitambo, f
VYOMBO VYA HABARI VYA BUUU VYA MABADILIKO VYA KIUME VYA 3D: Hatua 14 (zenye Picha)
DIY 3D iliyochapishwa wasemaji BLUETOOTH: Halo kila mtu, hii ni Maagizo yangu ya kwanza kabisa. Niliamua kuifanya iwe rahisi. Kwa hivyo katika mafunzo haya, nitawaonyesha nyinyi jinsi nilivyotengeneza spika hii rahisi na rahisi ya Bluetooth ambayo kila mtu angeweza kutengeneza kwa urahisi.Mwili wa spika ni 3D pr
2-4 Mchezaji Chomeka na Ucheze Raspberry Pi Arcade: Hatua 11
Piga Plagi ya Mchezaji wa 2-4 na Cheza Arcade ya Pi Raspberry: Chomeka na ucheze, sio muda tu kwa zile faraja za mchezo wa plastiki uliyonunua kwenye Walmart yako ya karibu. Hii kuziba na kucheza Arcade baraza la mawaziri lina kazi, inayotumiwa na Raspberry Pi 3 inayoendesha Retropie, mashine hii inajivunia uwezo kamili wa usanifu