Satura rādītājs:

Arduino un skārienpaliktnis Tic Tac Toe: 8 soļi (ar attēliem)
Arduino un skārienpaliktnis Tic Tac Toe: 8 soļi (ar attēliem)

Video: Arduino un skārienpaliktnis Tic Tac Toe: 8 soļi (ar attēliem)

Video: Arduino un skārienpaliktnis Tic Tac Toe: 8 soļi (ar attēliem)
Video: Ai robots taking over ping pong 👀 #shorts 2024, Septembris
Anonim
Arduino un skārienpaliktnis Tic Tac Toe
Arduino un skārienpaliktnis Tic Tac Toe

Vai arī ievades un izvades multipleksēšanas vingrinājums un darbs ar bitiem. Un iesniegums Arduino konkursam.

Šī ir tikumu tac toe spēle, kurā displejam tiek izmantots 3x3 divkrāsains LED displejs, vienkāršs pretestības skārienpaliktnis un Arduino, lai visu sasaistītu. Lai redzētu, kā tas darbojas, apskatiet videoklipu: Kas nepieciešams šim projektam: detaļas un palīgmateriāli Viena perfekta plāksne (vai sloksnes plāksne) Deviņas divkrāsainas gaismas diodes, kopējais katods Deviņi identiski rezistori 100–220 omu diapazonā Seši identiski rezistori 10–hm - 500 kHm diapazons Viens pols, dubultā metiena slēdzis Ķekars galvu tapas Elektrības vadu ķekars Viena neliela kvadrātveida caurspīdīga akrila loksne, ~ 1 mm bieza, 8 cm no sāniem Notīra līmlenti. ir diezgan izplatīti priekšmeti, kopējās izmaksas nedrīkst pārsniegt USD 20. Rīki One Arduino iestatīšana (Arduino Duemilanove, Arduino IDE, dators, USB kabelis) Parastie elektriskie instrumenti (multimetrs, lodēšanas lodēšanas pistole, stieples spraugas, stieples griezējs) Viss, kas saistīts ar Arduino, var būt atrodams vietnē https://www.arduino.cc. Turpiniet ar būvēšanu!

1. darbība: LED matricas savienošana

LED matricas savienošana
LED matricas savienošana
LED matricas savienošana
LED matricas savienošana

Lai gaismas diode iedegtos, abiem tā vadiem jābūt savienotiem. Ja mēs katrai no 18 gaismas diodēm (9 sarkanas, 9 zaļas) veltītu pāris tapas, Arduino tapas ātri beigtos. Tomēr, izmantojot multipleksēšanu, mēs varēsim adresēt visas gaismas diodes tikai ar 9 tapām! Lai to izdarītu, gaismas diodes ir savienotas ar šķērsstieni, kā parādīts pirmajā attēlā. Gaismas diodes ir sagrupētas trīs slejās, un to katodi ir sagrupēti sešu rindās. Iestatot noteiktu anoda līniju augstu un noteiktu katoda līniju zemu, un ar augstu pretestību pārējām anoda un katoda līnijām, mēs varam izvēlieties, kuru gaismas diodi mēs vēlamies iedegties, jo ir tikai viens iespējamais ceļš, ko var izmantot strāva. Piemēram, otrajā attēlā, iestatot zaļo anodu 1 rindu augstu un katoda 1 līniju zemu, iedegas apakšējā kreisā zaļā gaismas diode. Pašreizējais ceļš šajā gadījumā ir parādīts zilā krāsā. Bet ko darīt, ja vēlaties iedegt vairāk nekā vienu gaismas diodi dažādās līnijās? Lai to panāktu, mēs izmantosim redzes neatlaidību. Ļoti ātri izvēloties LED līniju pārus, tas rada ilūziju, ka visas izvēlētās gaismas diodes iedegas vienlaicīgi.

2. darbība: LED matricas izkārtojums

LED matricas izkārtojums
LED matricas izkārtojums
LED matricas izkārtojums
LED matricas izkārtojums

Zemāk redzamā shēma parāda, kā gaismas diodes ir fiziski savienotas (G1-G9: zaļas gaismas diodes, R1-R9: sarkanas gaismas diodes). Šī diagramma ir paredzēta atsevišķām sarkanām un zaļām gaismas diodēm, ja izmantojat divkrāsainas kopējās katoda sarkanās/zaļās gaismas diodes, katram sarkanajam/zaļajam pārim ir jāpievieno tikai viena katoda kāja. Sarkanās un zaļās anoda līnijas nonāk PWM tapās no Arduino (Duemilanove 3, 5, 6, 9, 10, 11 tapas), lai vēlāk varētu radīt tādus efektus kā izbalēšana. Katoda līnijas iet uz tapām 4, 7 un 8. Katrai katoda un anoda līnijai ir 100 omu rezistori aizsardzībai.

3. darbība: LED matricas risināšana

Lai iegūtu ticamāko kodu, mums jāspēj saglabāt šādu informāciju par gaismas diodēm: - vai gaismas diode ir iedegta vai ne - ja deg, vai tā ir sarkana vai zaļa. Viens veids, kā to izdarīt, ir saglabāt stāvokli 9 šūnu masīvā, izmantojot trīs ciparus, lai attēlotu stāvokli (0 = izslēgts, 1 = sarkans ieslēgts, 2 = zaļš ieslēgts). Katru reizi, kad mums jāpārbauda gaismas diodes stāvokļi, piemēram, lai pārbaudītu, vai pastāv uzvaras nosacījumi, mums ir jāpārvietojas masīvā. Šī ir praktiski izmantojama metode, taču diezgan neveikla. Racionalizētāka metode būtu izmantot divas deviņu bitu grupas. Pirmā deviņu bitu grupa saglabā gaismas diodes ieslēgšanas un izslēgšanas statusu, bet otrā deviņu bitu grupa saglabā krāsu. Tad manipulēšana ar LED stāvokļiem vienkārši kļūst par bitu aritmētiku un maiņu. Šeit ir nostrādāts piemērs. Pieņemsim, ka grafiski uzzīmējam savu līkumu tīklu un vispirms izmantojam 1 un 0, lai attēlotu ieslēgšanas-izslēgšanas statusu (1 ir ieslēgts, 0 ir izslēgts): 000 000 = matrica ar apakšējo kreiso gaismas diodi, kas iedegas 100 100 010 = matrica ar diagonāli Gaismas diodes iedegas 001 Ja mēs uzskaitām šūnas no apakšējās kreisās puses, iepriekš minētos attēlojumus varam uzrakstīt kā bitu sēriju. Pirmajā gadījumā tas būtu 100000000, bet otrajā gadījumā tas būtu 001010100. Ja mēs uzskatām, ka tie ir bināri attēlojumi, tad katru bitu sēriju var saīsināt vienā skaitlī (pirmajā gadījumā 256, 84 otrajā gadījumā). Tā vietā, lai matricas stāvokļa saglabāšanai izmantotu masīvu, mēs varam izmantot tikai vienu skaitli! Līdzīgi mēs varam attēlot LED krāsu tādā pašā veidā (1 ir sarkans, 0 ir zaļš). Vispirms pieņemsim, ka visas gaismas diodes ir iedegtas (tātad ieslēgtā-izslēgtā stāvokļa attēlojums ir 511). Tālāk redzamā matrica attēlo gaismas diodes krāsu stāvokli: 010 zaļa, sarkana, zaļa 101 sarkana, zaļa, sarkana 010 zaļa, sarkana, zaļa Tagad, parādot LED matricu, mums vienkārši jāapmeklē katrs no bitiem, vispirms ieslēgtā un izslēgtā stāvoklī un pēc tam krāsu stāvoklī. Piemēram, pieņemsim, ka mūsu ieslēgšanas-izslēgšanas stāvoklis ir 100100100 un krāsu stāvoklis ir 010101010. Šeit ir mūsu algoritms LED matricas iedegšanai: 1. darbība. maskēšana). 2. solis. Ja tā ir taisnība, gaismas diode iedegas. Tagad pievienojiet krāsu stāvokli binārā veidā ar bināro 1. solis. 3. Ja tā ir taisnība, iedegas sarkanā gaismas diode. Ja tā ir nepatiesa, iedegas zaļā gaismas diode. 4. solis. Pārslēdziet gan ieslēgšanas, gan krāsas stāvokli, vienu bitu pa labi (ti, bitu maiņu). 5. solis. Atkārtojiet 1. - 4. darbību, līdz visi deviņi biti ir nolasīti. Ņemiet vērā, ka mēs aizpildām matricu atpakaļ - mēs sākam ar šūnu 9, tad dodamies atpakaļ uz leju 1. šūnā. Turklāt ieslēgšanas un izslēgšanas un krāsu stāvokļi tiek saglabāti kā neparakstīts vesels skaitlis (vārds), nevis parakstīts vesels skaitlis. Tas ir tāpēc, ka bitu novirzīšanas gadījumā, ja neesam piesardzīgi, mēs nejauši varam mainīt mainīgā zīmi. Pievienots kods LED matricas iedegšanai.

4. darbība. Skārienpaliktņa izveide

Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana
Skārienpaliktņa veidošana

Skārienpaliktnis ir izgatavots no plānas akrila loksnes, kas ir pietiekami liela, lai pārklātu LED matricu. Pēc tam, izmantojot caurspīdīgu lenti, uzlīmējiet rindu un kolonnu vadus uz akrila loksnes. Caurspīdīgu lenti izmanto arī kā izolācijas starpliku starp vadiem krustojumos. Noteikti izmantojiet tīrus instrumentus, lai novērstu pirkstu tauku nokļūšanu uz lentes lipīgās puses. Pirkstu nospiedumu traipi ne tikai izskatās neglīti, bet arī padara lenti mazāk lipīgu. Nogrieziet katras līnijas vienu galu un otru galu pielodējiet pie garāka stieples. Lodējiet rezistoru vienā līnijā ar vadiem pirms lodēšanas uz savienotājiem. Šeit izmantotie rezistori ir 674k, bet jebkurai vērtībai no 10k līdz 1M jābūt piemērotai. Savienojumi ar Arduino tiek veikti, izmantojot 6 analogās tapas, ar tapām 14-16, kas savienotas ar stiepļu tīkla rindām, un tapas 17-19, kas savienotas ar kolonnas.

5. darbība: skārienpaliktnis - kā tas darbojas

Skārienpaliktnis - kā tas darbojas
Skārienpaliktnis - kā tas darbojas
Skārienpaliktnis - kā tas darbojas
Skārienpaliktnis - kā tas darbojas

Tāpat kā mēs izmantojām šķērsstieņa multipleksoru, lai iestatītu LED matricu ar minimālām tapām, mēs varam izmantot līdzīgu šķērsstieņa multipleksoru, lai iestatītu skārienjutīgo bloku, ko pēc tam varam izmantot, lai aktivizētu gaismas diodes. Šī skārienpaliktņa koncepcija ir vienkārša. Būtībā tas ir stiepļu režģis, kurā rindās ir trīs tukši vadi, bet kolonnās virs rindām - trīs tukši vadi. Katrā krustošanās vietā ir neliels izolācijas kvadrāts, kas neļauj diviem vadiem pieskarties. Pirksts, kas pieskaras krustojumam, saskarsies ar abiem vadiem, kā rezultātā starp abiem vadiem radīsies milzīga, bet ierobežota pretestība. Tāpēc caur pirkstu no vienas stieples uz otru var plūst neliela, bet nosakāma strāva. Lai noteiktu, kurš krustojums tika nospiests, tika izmantota šāda metode: 1. darbība: iestatiet visas kolonnu līnijas uz OUTPUT LOW. 2. solis: iestatiet rindu rindas uz INPUT, aktivizējot iekšējās pievilkšanas darbības. 3. solis: veiciet analogu nolasīšanu katrā rindas rindā, līdz vērtība nokrītas zem noteiktā sliekšņa. Tas norāda, kurā rindā atrodas nospiestais krustojums. 4. solis: atkārtojiet 1. – 3. Darbību, bet tagad ar kolonnām kā ieejām un rindām kā izejām. Tas norāda, kura kolonna ir nospiestais krustojums. Lai samazinātu trokšņa ietekmi, tiek veikti vairāki rādījumi un pēc tam aprēķināta vidējā vērtība. Pēc tam vidējo rezultātu salīdzina ar slieksni. Tā kā šī metode tikai pārbauda slieksni, tā nav piemērota vienlaicīgu spiedienu noteikšanai. Tomēr, tā kā ticamie tac toe virzās pēc kārtas, pietiek ar viena preses lasīšanu. Pievienota ir skice, kas ilustrē skārienpaliktņa darbību. Tāpat kā ar LED matricu, biti tiek izmantoti, lai attēlotu, kurš krustojums tika nospiests.

6. darbība: visu salieciet kopā

Visu salikt kopā
Visu salikt kopā

Tagad, kad visi atsevišķi komponenti ir izdarīti, ir pienācis laiks tos visus salikt kopā. Pārklājiet vadu režģi uz LED matricas. Lai sinhronizētu ar vadu tīkla sensoru, iespējams, būs jāpārkārto LED matricas koda numerācijas. Nostipriniet stiepļu režģi vietā ar jūsu izvēlētiem stiprinājumiem vai līmēm un pielīmējiet uz jauka spēles dēļa. Pievienojiet slēdzi starp 12. tapu un Arduino zemi. Šis slēdzis ir paredzēts, lai pārslēgtos starp 2 spēlētāju režīmu un 1 spēlētāja režīmu (salīdzinājumā ar mikrokontrolleru).

7. solis: Tic Tac Toe programmēšana

Pievienots spēles kods. Vispirms sadalīsim ticamāko spēli divos spēlētāju režīmos dažādos soļos: 1. darbība. Spēlētājs A izvēlas neaizpildītu šūnu, pieskaroties krustojumam. 2. solis: šīs šūnas gaismas diode iedegas ar krāsu A. 3. solis: pārbaudiet, vai spēlētājs A ir uzvarējis. 4. darbība: spēlētājs B izvēlas neaizpildītu šūnu. 5. darbība: šīs šūnas gaismas diode iedegas ar krāsu B 6. darbība. Pārbaudiet, vai spēlētājs B ir uzvarējis. 7. solis. Atkārtojiet 1–6, līdz pastāv uzvaras nosacījums vai visas šūnas ir aizpildītas. Šūnu lasīšana: programma tiek pārtraukta starp režģa lasīšanu un LED matricas parādīšanu. Kamēr režģa sensors nereģistrē vērtību, kas nav nulle, šī cilpa turpināsies. Nospiežot krustojumu, mainīgais presētais saglabā nospiestās šūnas stāvokli. Pārbaude, vai šūna nav aizpildīta: Kad tiek iegūts pozīcijas nolasījums (mainīgais nospiests), tas tiek salīdzināts ar pašreizējo šūnas statusu (saglabāts mainīgajā GridOnOff) izmantojot bitu papildinājumu. Ja nospiesta šūna nav aizpildīta, turpiniet iedegties gaismas diode, pretējā gadījumā atgriezieties pie šūnu lasīšanas. Krāsu pārslēgšana: Būla mainīgais, Pagrieziens, tiek izmantots, lai ierakstītu, kura kārta ir. Gaismas diodes krāsu, kas izvēlēta, kad tiek atlasīta šūna, nosaka šis mainīgais, kas mainās katru reizi, kad tiek izvēlēta šūna. Uzvaras nosacījuma pārbaude: Ir tikai 8 iespējamie uzvarēšanas nosacījumi, un tie tiek saglabāti kā vārdu mainīgie masīvā (winArray). Divi bitu papildinājumi tiek izmantoti, lai salīdzinātu spēlētāja aizpildītās šūnu pozīcijas ar uzvarēšanas nosacījumiem. Ja ir spēle, tad programma parāda uzvaras kārtību, pēc kuras tā sāk jaunu spēli. Neizšķirta stāvokļa pārbaude: Kad ir reģistrēti deviņi pagriezieni un joprojām nav uzvaru, spēle ir neizšķirta. Pēc tam gaismas diodes tiek izgaismotas un tiek sākta jauna spēle. Pārslēgšanās uz viena spēlētāja režīmu: ja slēdzis ir ieslēgtā pozīcijā, programma pāriet viena spēlētāja režīmā, vispirms sākot spēlētājam. Cilvēka spēlētāja kārtas beigās programma vienkārši izvēlas nejaušu šūnu. Acīmredzot šī nav gudrākā stratēģija!

8. darbība. Piezīmes un turpmākie uzlabojumi

Šeit ir video, kurā redzams viena spēlētāja režīms, programmai spēlējot pilnīgi nejaušas kustības: Šeit redzamā programma ir tikai minimāla, tukša kaulu versija. Ar to var paveikt daudzas citas lietas: 1) trīs reizes iedegas gaismas diodes Pašreizējais kods vienlaikus parāda tikai vienu gaismas diodi. Tomēr, izmantojot šeit redzamo vadu, ir iespējams vienlaikus iedegt visas gaismas diodes, kas savienotas ar vienu katoda līniju. Tātad, tā vietā, lai brauktu pa visām deviņām pozīcijām, viss, kas jums jādara, ir riteņot pa trim katoda līnijām. 2) Izmantojiet pārtraukumus, lai parādītu gaismas diodes Atkarībā no LED displeja rutīnas un apstrādes apjoma gaismas diodes var parādīt zināmu pakāpi mirgošana. Izmantojot pārtraukumus, gaismas diodes laiku var precīzi kontrolēt, un tas nodrošinās vienmērīgāku displeju. 3) Gudrāks datora atskaņotājs Pašreizējais kods aizņem tikai dažus kb, atstājot nedaudz vairāk viedāka datora tic tac ieviešanai pirkstu spēlētājs. Ceru, ka jums patika lasīt šo pamācību tik daudz, cik man bija jautri pie tā strādāt!

Ieteicams: