Orodha ya maudhui:

Arduino na Touchpad Tic Tac Toe: Hatua 8 (na Picha)
Arduino na Touchpad Tic Tac Toe: Hatua 8 (na Picha)

Video: Arduino na Touchpad Tic Tac Toe: Hatua 8 (na Picha)

Video: Arduino na Touchpad Tic Tac Toe: Hatua 8 (na Picha)
Video: Arduino - Tic Tac Toe Game with Touchpad 2024, Novemba
Anonim
Arduino na Touchpad Tic Tac Toe
Arduino na Touchpad Tic Tac Toe

Au, zoezi la kuingiza na kuongeza pato, na kufanya kazi na bits. Na uwasilishaji wa shindano la Arduino.

Huu ni utekelezaji wa mchezo wa kidole wa miguu ukitumia safu ya 3x3 ya LED za bicoloured kwa onyesho, pedi ya kugusa rahisi, na Arduino ya kufunga kila kitu pamoja. Ili kuona jinsi inavyofanya kazi, angalia video: Je! Mradi huu unahitaji nini: Vipengee na matumizi ya bodi moja ya manukato (au bodi ya kuvua) LEDs bicoloured tisa, cathode ya kawaida resistors tisa zinazofanana, katika safu ya 100-220 ohm resistors sita zinazofanana, katika 10kohm - 500kohm safu Moja moja, kubadili mara mbili Kundi la pini za kichwa Kundi la waya wa umeme Karatasi moja ndogo ya mraba ya akriliki ya uwazi, ~ 1 mm nene, 8 cm upande Futa mkanda wa kunasa Heatshrinks (hiari) Yote hapo juu ni vitu vya kawaida kabisa, gharama ya jumla haipaswi kuzidi USD $ 20. Kifaa kimoja cha kuanzisha Arduino (Arduino Duemilanove, Arduino IDE, kompyuta, kebo ya USB) Zana za kawaida za umeme (multimeter, bunduki ya solder, snips za waya, mkata waya) Kila kitu kinachohusiana na Arduino kinaweza kuwa kupatikana kwenye https://www.arduino.cc. Endelea na ujenzi!

Hatua ya 1: Wiring Up Matrix ya LED

Wiring Up Matrix ya LED
Wiring Up Matrix ya LED
Wiring Up Matrix ya LED
Wiring Up Matrix ya LED

Ili LED iwe nuru, miongozo yake yote lazima iunganishwe. Ikiwa tungetaka pini kwa kila moja ya taa za 18 (9 nyekundu, 9 kijani), tungepoteza haraka pini kwenye Arduino. Walakini, na multiplexing, tutaweza kushughulikia LED zote na pini 9 tu! Ili kufanya hivyo, taa za taa zimefungwa kwa njia ya msalaba, kama inavyoonyeshwa kwenye takwimu ya kwanza. Taa za LED zimewekwa katika safu za tatu, na cathode zao zimewekwa katika safu ya sita. Kwa kuweka laini fulani ya anode juu, na laini fulani ya cathode chini, na kuwa na impedance ya juu kwa anode zingine zote na mistari ya cathode, tunaweza chagua ni LED gani tunayotaka kuwaka, kwani kuna njia moja tu inayowezekana ambayo sasa inaweza kuchukua. Kwa mfano, katika kielelezo cha pili, kuweka anode ya kijani kibichi 1 juu, na cathode 1 chini, chini kushoto LED za kijani zinawaka.. Njia ya sasa katika kesi hii imeonyeshwa kwa samawati. Lakini vipi ikiwa unataka kuwasha taa zaidi ya moja kwenye mistari tofauti? Tutatumia uvumilivu wa maono kufanikisha hili. Kwa kuchagua jozi za mistari ya LED haraka sana, inatoa udanganyifu kwamba LED zote zilizochaguliwa zinawashwa kwa wakati mmoja.

Hatua ya 2: Mpangilio wa Matrix ya LED

Mpangilio wa Matrix ya LED
Mpangilio wa Matrix ya LED
Mpangilio wa Matrix ya LED
Mpangilio wa Matrix ya LED

Mchoro wa mzunguko hapa chini unaonyesha jinsi LED zina waya wa mwili (G1-G9: LED za kijani, R1-R9: LED nyekundu). Mchoro huu ni wa LED moja nyekundu na kijani, ikiwa unatumia taa za kawaida za cathode nyekundu / kijani, kuna mguu mmoja tu wa cathode kwa jozi nyekundu / kijani ambayo unapaswa waya. ya Arduino (pini 3, 5, 6, 9, 10, 11 kwenye Duemilanove), ili tuweze kuwa na athari kama kufifia baadaye. Mistari ya cathode huenda kwenye pini 4, 7 na 8. Kila mstari wa cathode na anode zina vipinga 100 ohm kwa ulinzi.

Hatua ya 3: Kushughulikia Matrix ya LED

Kwa nambari ya vidole vya miguu, tutahitaji kuwa na uwezo wa kuhifadhi habari zifuatazo juu ya LEDs: - ikiwa LED imewashwa au la - ikiwa imewashwa, ikiwa ni nyekundu au kijani Njia moja ya kufanya hivyo ni kuhifadhi hali katika safu ya seli 9, kwa kutumia tarakimu tatu kuwakilisha hali (0 = off, 1 = nyekundu, 2 = kijani juu). Kila wakati tunahitaji kuangalia hali za LED, kwa mfano, kuangalia ikiwa kuna hali ya kushinda, tutahitaji kuzunguka kwa safu. Hii ni njia inayoweza kutumika, lakini badala ya kufikiria. Njia iliyoboreshwa zaidi itakuwa kutumia vikundi viwili vya bits tisa. Kikundi cha kwanza cha bits tisa huhifadhi hali ya kuzima ya LED, na kikundi cha pili cha bits tisa huhifadhi rangi. Halafu, kudanganya majimbo ya LED inakuwa tu suala la hesabu kidogo na kuhama. Hapa kuna mfano uliofanya kazi. Wacha tuseme tunachora gridi yetu ya kidole cha kidole kwa picha, na tumia kwanza 1s na 0s kuwakilisha hali ya kuzima (1 imewashwa, 0 imezimwa): 000 000 = tumbo na chini kushoto LED imewashwa 100 100 010 = tumbo na diagonal LED zinawasha 001 Ikiwa tunahesabu seli kutoka chini kushoto, tunaweza kuandika vielelezo hapo juu kama safu ya bits. Katika kesi ya kwanza, hiyo itakuwa 100000000, na katika kesi ya pili, itakuwa 001010100. Ikiwa tutafikiria hizi kama viwakilishi vya binary, basi kila safu ya bits inaweza kubanwa kuwa nambari moja (256 katika kesi ya kwanza, 84 katika kesi ya pili). Kwa hivyo badala ya kutumia safu kuhifadhi hali ya tumbo, tunaweza kutumia nambari moja tu! Vivyo hivyo, tunaweza kuwakilisha rangi ya LED kwa njia ile ile (1 ni nyekundu, 0 ni kijani). Wacha kwanza tuchukue taa zote zinawashwa (kwa hivyo hali ya kuzima inawakilishwa na 511). Matrix hapa chini itawakilisha hali ya rangi ya LEDs: 010 kijani, nyekundu, kijani 101 nyekundu, kijani, nyekundu 010 kijani, nyekundu, kijani Sasa, wakati wa kuonyesha tumbo la LED, lazima tu tupitie kila bits, kwanza katika hali ya kuzima, na kisha katika hali ya rangi. Kwa mfano, hebu sema hali yetu ya kuwasha ni 100100100, na hali ya rangi ni 010101010. Hapa kuna algorithm yetu ya kuwasha taa ya LED: Hatua ya 1. Fanya uongeze kidogo wa hali ya kuzima na 1 ya densi (yaani kidogo kuficha). Hatua ya 2. Ikiwa ni kweli, LED imewashwa. Fanya sasa nyongeza kidogo ya hali ya rangi na binary 1. Hatua ya 3. Ikiwa ni kweli, weka taa nyekundu ya LED. Ikiwa ni uwongo, weka taa ya kijani kibichi. Hatua ya 4. Shift wote hali ya kuzima na hali ya rangi, kidogo moja kulia (yaani kuhama kidogo). Hatua ya 5. Rudia Hatua 1 hadi 4 mpaka vipande vyote tisa vimesomwa. Kumbuka kuwa tunajaza tumbo nyuma - tunaanza na seli 9, halafu rudi chini hadi kwenye kiini cha 1. Pia, hali za kuzima na rangi zinahifadhiwa kama aina ya nambari isiyosajiliwa (neno) badala ya aina ya nambari iliyosainiwa. Hiyo ni kwa sababu katika kuhama kidogo, ikiwa hatuko makini, tunaweza kubadilisha ishara ya ubadilishaji bila kujua. Imeambatanishwa na nambari ya kuwasha taa ya LED.

Hatua ya 4: Kuunda Pad ya Kugusa

Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa
Kuunda pedi ya kugusa

Kitambaa cha kugusa kimejengwa kutoka kwa karatasi nyembamba ya akriliki, kubwa ya kutosha kufunika juu ya tumbo la LED. Kisha, weka mkanda chini kwenye safu ya safu na waya kwenye karatasi ya akriliki, ukitumia mkanda wazi. Futa mkanda pia hutumiwa kama nafasi ya kuhami kati ya waya, kwenye makutano. Hakikisha unatumia zana safi, kuzuia mafuta ya kidole kuingia upande wa kunata wa mkanda. Madoa ya alama ya kidole hayanaonekana tu kuwa mabaya, lakini fanya mkanda usiwe na nata. Kuondoa mwisho mmoja wa kila mstari, na unganisha upande mwingine kwa waya mrefu. Solder resistor katika-line na waya, kabla ya kuunganishwa kwenye viunganisho. Vipinga vilivyotumika hapa ni 674k, lakini thamani yoyote kati ya 10k na 1M inapaswa kuwa sawa. Uunganisho kwa Arduino hufanywa kwa kutumia pini 6 za analog, na pini 14-16 zilizounganishwa na safu za gridi ya waya, na pini 17-19 imeunganishwa na nguzo.

Hatua ya 5: pedi ya kugusa - Jinsi inavyofanya kazi

Pad ya Kugusa - Jinsi Inavyofanya Kazi
Pad ya Kugusa - Jinsi Inavyofanya Kazi
Pad ya Kugusa - Jinsi Inavyofanya Kazi
Pad ya Kugusa - Jinsi Inavyofanya Kazi

Kama vile tulivyotumia mseto wa msalaba-mseto kuweka matrix ya LED na pini ndogo, tunaweza kutumia multiplexer sawa ya msalaba kuanzisha safu ya sensorer ya kugusa, ambayo tunaweza kutumia kuamsha LED. Wazo la pedi hii ya kugusa ni rahisi. Kimsingi ni gridi ya waya, na waya tatu wazi zinazoendesha safu, na waya tatu wazi zinazoendesha kwenye nguzo juu ya safu. Katika kila sehemu ya makutano kuna mraba mdogo wa insulation ambayo inazuia waya mbili kugusa. Kidole kinachogusa makutano kitawasiliana na waya zote mbili, na kusababisha upinzani mkubwa, lakini mdogo kati ya waya hizo mbili. Sasa ndogo, lakini inayoweza kugundulika, sasa inaweza kufanywa kutiririka kutoka kwa waya moja hadi nyingine, kupitia kidole. Kuamua ni makutano yapi yalibanwa, njia ifuatayo ilitumika: Hatua ya 1: Weka mistari yote ya safu kwa OUTPUT LOW. Hatua ya 2: Weka mistari ya safu kwa INPUT, na vichocheo vya ndani vimeamilishwa. Hatua ya 3: Chukua Analog iliyosomwa kwenye kila mstari wa safu hadi thamani itapungua chini ya kizingiti kilichopewa. Hii inakuambia ni safu gani ya makutano iliyobanwa ni Hatua ya 4: Rudia Hatua 1-3, lakini sasa na nguzo kama pembejeo na safu kama matokeo. Hii inakuambia ni nguzo ipi ambayo makutano yaliyoshinikizwa ni Ili kupunguza athari za kelele, idadi ya usomaji huchukuliwa na kisha wastani. Matokeo wastani hulinganishwa dhidi ya kizingiti. Kwa kuwa njia hii huangalia tu kizingiti, haifai kugundua mashinikizo ya wakati huo huo. Walakini, kwa kuwa kidole cha mguu kinaendelea kwa zamu, kusoma vyombo vya habari moja ni vya kutosha. Imeambatanishwa ni mchoro unaoonyesha jinsi touchpad inavyofanya kazi.

Hatua ya 6: Kuweka Kila kitu Pamoja

Kuweka Kila kitu Pamoja
Kuweka Kila kitu Pamoja

Sasa kwa kuwa vifaa vyote vimefanywa, ni wakati wa kuviweka pamoja. Kufunika gridi ya waya kwenye tumbo la LED. Huenda ukahitaji kupanga upya idadi ya pini kwenye nambari ya tumbo ya LED ili iweze kusawazishwa na sensa ya gridi ya waya. Salama gridi ya waya mahali na vifungo au viambatanisho vya chaguo lako, na ushike kwenye bodi nzuri ya kucheza. Ongeza swichi kati ya pini 12 na ardhi ya Arduino. Kubadili hii ni kugeuza kati ya hali ya kichezaji 2, na hali 1 ya kichezaji (dhidi ya mdhibiti mdogo).

Hatua ya 7: Kupanga Tic Tac Toe

Imeambatanishwa ni nambari ya mchezo. Wacha tuvunje mchezo wa kidole wa miguu katika hatua zake anuwai, katika hali mbili za kicheza: Hatua ya 1: Mchezaji A huchagua seli isiyojazwa kwa kugusa makutano. Hatua ya 2: LED ya seli hiyo inaangazia rangi A. Hatua ya 3: Angalia ikiwa Mchezaji A ameshinda Hatua ya 4: Mchezaji B anachagua seli isiyojazwa Hatua ya 5: LED ya seli hiyo inaangazia rangi B Hatua ya 6: Angalia ikiwa Mchezaji B ameshinda Hatua ya 7: Rudia 1-6 hadi kuwe na hali ya kushinda, au ikiwa seli zote zimejazwa. Kusoma seli: Programu inazunguka kati ya kusoma gridi na kuonyesha tumbo la LED.. Ilimradi sensor ya gridi haisajili thamani isiyo ya sifuri, kitanzi hiki kitaendelea. Wakati makutano yamebanwa, ubadilishaji uliobanwa huhifadhi nafasi ya seli iliyobanwa. Kuangalia ikiwa seli haijajazwa: Wakati usomaji wa nafasi unapatikana (kutofautishwa Kusisitiza), inalinganishwa dhidi ya hali ya seli ya sasa (iliyohifadhiwa kwenye GridOnOff inayobadilika) kutumia nyongeza kidogo. Ikiwa seli iliyobanwa haijajazwa, basi endelea kuwasha taa ya LED, vinginevyo rudi kusoma seli. Kubadilisha rangi: Tofauti ya boolean, Turn, hutumiwa kurekodi zamu ya nani. Rangi ya LED iliyochaguliwa wakati seli imechaguliwa imedhamiriwa na ubadilishaji huu, ambao hubadilika kila wakati seli inachaguliwa. Kuchunguza hali ya kushinda: Kuna hali 8 tu za kushinda, na hizi zinahifadhiwa kama vigeuzi vya neno katika safu (winArray). Nyongeza mbili kidogo hutumiwa kulinganisha nafasi za seli zilizojaa za mchezaji na hali za kushinda. Ikiwa kuna mechi, basi mpango unaonyesha utaratibu wa kushinda, baada ya hapo huanza mchezo mpya. Kuangalia hali ya sare: Wakati zamu tisa zimerekodiwa na bado hakuna hali ya kushinda, basi mchezo ni sare. LED zinafutwa na mchezo mpya umeanza. Kubadilisha hali moja ya kichezaji: Ikiwa swichi iko kwenye nafasi, programu inaingia katika hali ya mchezaji mmoja, na mchezaji wa kibinadamu anaanza kwanza. Mwisho wa zamu ya mchezaji wa kibinadamu, programu huchagua tu seli isiyo na mpangilio. Kwa wazi, huu sio mkakati mzuri zaidi!

Hatua ya 8: Hotuba na Maboresho Zaidi

Hapa video inayoonyesha modi moja ya kichezaji, na programu hiyo ikicheza hatua bila mpangilio: Programu iliyoonyeshwa hapa ni toleo la mifupa tupu tu. Vitu vingine vingi vinaweza kufanywa na hii: 1) Kuangaza taa za LED tatu kwa wakati Nambari ya sasa inaonyesha LED moja tu mara moja. Walakini, na wiring iliyoonyeshwa hapa, inawezekana kuwasha taa zote za LED zilizounganishwa na laini moja ya cathode kwa wakati mmoja. Kwa hivyo, badala ya kuendesha baiskeli kupitia nafasi zote tisa, unachohitaji kufanya ni kuzunguka kwa laini tatu za cathode. kuangaza. Kwa kutumia usumbufu, muda wa LED unaweza kudhibitiwa haswa na inaweza kusababisha onyesho laini. 3) Kicheza nambari ya kompyuta nambari inayofaa inachukua kb chache tu, ikiacha kidogo zaidi kwa utekelezaji wa kompyuta tac yenye busara Tumaini umefurahiya kusoma hii inayoweza kufundishwa kama vile nilifurahiya kuifanyia kazi!

Ilipendekeza: