Sisukord:

Arduino ja puuteplaat Tic Tac Toe: 8 sammu (piltidega)
Arduino ja puuteplaat Tic Tac Toe: 8 sammu (piltidega)

Video: Arduino ja puuteplaat Tic Tac Toe: 8 sammu (piltidega)

Video: Arduino ja puuteplaat Tic Tac Toe: 8 sammu (piltidega)
Video: Все цифры и калькулятор на тачпаде в Ноутубке Asus ZenBook UX325EA 2024, November
Anonim
Arduino ja puuteplaat Tic Tac Toe
Arduino ja puuteplaat Tic Tac Toe

Või sisendi ja väljundi multipleksimise ning bittidega töötamise harjutus. Ja esitamine Arduino võistlusele.

See on teostus tikk -tac -toe -mängust, kasutades ekraani jaoks 3x3 kahevärvilist LED -i, lihtsat takistuslikku puuteplaati ja Arduino -d, et kõik kokku siduda. Selle toimimise vaatamiseks vaadake videot: Mida see projekt nõuab: osad ja kulumaterjalid Üks perf-plaat (või ribaplaat) Üheksa kahevärvilist LED-i, tavaline katood Üheksa identset takistit, vahemikus 100–220 oomi Kuus ühesugust takistit 10 khm - 500 khm vahemik Üks ühepooluseline kahekordse viske lüliti Hunnik päisepistikuid Hunnik elektrijuhtmeid Üks väike ruudukujuline läbipaistva akrüüli leht, paksus ~ 1 mm, küljel 8 cm Selge kleeplint Soojendajad on üsna tavalised esemed, mille kogumaksumus ei tohiks ületada 20 USA dollarit. Tööriistad Üks Arduino seadistus (Arduino Duemilanove, Arduino IDE, arvuti, USB -kaabel) Tavalised elektrilised tööriistad (multimeeter, jootmisjootmispüstol, traatlõiked, traadilõikur) Kõik, mis on seotud Arduinoga, võib olla leitud aadressilt https://www.arduino.cc. Ehitusega edasi!

Samm: LED -maatriksi ühendamine

LED -maatriksi ühendamine
LED -maatriksi ühendamine
LED -maatriksi ühendamine
LED -maatriksi ühendamine

LED -i süttimiseks peavad mõlemad juhtmed olema ühendatud. Kui peaksime igale 18 valgusdioodile (9 punast, 9 rohelist) pühendama paar tihvti, saaksime Arduino tihvtid kiiresti otsa. Kuid multipleksimise korral suudame kõiki LED -e käsitleda vaid 9 kontaktiga! Selleks on LED -id ühendatud risttalaga, nagu on näidatud esimesel joonisel. Valgusdioodid on rühmitatud kolmese veergu ja nende katoodid rühmitatakse kuuendasse ritta. Seades konkreetse anoodijoone kõrgeks ja konkreetse katoodijoone madalaks ning omades kõigi teiste anood- ja katoodiliinide suhtes suurt impedantsi valige, millist LED -i me tahame süttida, kuna voolul on ainult üks võimalik tee. Näiteks, kui teisel joonisel roheline anood 1 rida kõrge ja katood 1 rida madal, siis vasak vasak roheline LED süttib. Praegune tee on sel juhul näidatud sinisena. Aga mis siis, kui soovite erinevatel liinidel süüdata rohkem kui ühte LED -i? Selle saavutamiseks kasutame visiooni püsivust. Valides LED -liinide paarid väga kiiresti, loob see illusiooni, et kõik valitud LED -id põlevad korraga.

2. samm: LED -maatriksi paigutus

LED -maatriksi paigutus
LED -maatriksi paigutus
LED -maatriksi paigutus
LED -maatriksi paigutus

Allolev skeem näitab, kuidas LED-id on füüsiliselt ühendatud (G1-G9: rohelised LED-id, R1-R9: punased LED-id). See diagramm on mõeldud üksikute punaste ja roheliste LED -ide jaoks, kui kasutate kahevärvilisi tavalisi katoodpunaseid/rohelisi LED -e, on punase/rohelise paari kohta ainult üks katoodijalg, mille peate ühendama. Punased ja rohelised anoodijooned lähevad PWM -tihvtidesse Arduino (nööpnõelad 3, 5, 6, 9, 10, 11 Duemilanove'is), et meil oleks hiljem selliseid efekte nagu tuhmumine. Katoodiliinid lähevad tihvtidesse 4, 7 ja 8. Igal katoodil ja anoodiliinil on kaitseks 100 oomi takistid.

3. samm: LED -maatriksi käsitlemine

Takt -tae toe koodi jaoks peame suutma salvestada LED -ide kohta järgmist teavet: - kas LED süttib või mitte - kui põleb, kas see on punane või roheline Üks võimalus seda teha on oleku salvestamine 9-lahtrises massiivis, kasutades oleku tähistamiseks kolme numbrit (0 = väljas, 1 = punane, 2 = roheline). Iga kord, kui peame kontrollima LED -i olekuid, näiteks selleks, et kontrollida, kas on olemas võidutingimused, peame massiivi läbima. See on toimiv meetod, kuid üsna kohmakas. Lihtsam meetod oleks kasutada kahte üheksa bitist rühma. Esimene üheksa-bitine rühm salvestab LED-ide sisse-väljalülitatud oleku ja teine üheksa-bitine rühm salvestab värvi. Seejärel muutub LED -olekutega manipuleerimine lihtsalt natuke aritmeetikaks ja nihutamiseks. Siin on töötatud näide. Oletame, et joonistame graafiliselt oma ristlõigete võrgu ja kasutame esmalt sisselülitatud oleku kuvamiseks 1-sid ja 0-sid (1 on sisse lülitatud, 0 on välja lülitatud): 000 000 = maatriks, mille vasakpoolne LED-tuli põleb 100 100 010 = diagonaaliga maatriks LED -id põlevad 001 Kui loendame lahtrid vasakult altpoolt, saame ülaltoodud esitused kirjutada bittide seeriana. Esimesel juhul oleks see 100000000 ja teisel juhul 001010100. Kui mõelda neile kui binaarsetele esitustele, saab iga bittide seeria koondada üheks numbriks (esimesel juhul 256, 84 teisel juhul). Seega võime maatriksi oleku salvestamiseks massiivi asemel kasutada ainult ühte numbrit! Samamoodi võime LED -i värvi kujutada samamoodi (1 on punane, 0 on roheline). Oletame kõigepealt, et kõik valgusdioodid põlevad (seega kuvatakse sisselülitatud olekut 511). Allpool olev maatriks tähistab siis LED -ide värvuseisundit: 010 roheline, punane, roheline 101 punane, roheline, punane 010 roheline, punane, roheline Nüüd, kui LED -maatriksit kuvame, peame lihtsalt igast bitist läbi käima, esmalt sisse-välja ja seejärel värvilises olekus. Oletame näiteks, et meie sisse- ja väljalülitatud olek on 100100100 ja värvuseisund on 010101010. Siin on meie algoritm LED-maatriksi valgustamiseks: 1. samm. Lisage sisse-välja lülitatud olek binaarselt binaarse 1 (st bit maskeerimine). Samm 2. Kui see on tõsi, süttib LED. Lisage nüüd värvi olek bitti binaarselt 1. Samm 3. Kui see on tõsi, süttige punane LED. Kui see on vale, süttige roheline LED. Samm 4. Nihutage nii sisse-välja kui ka värvi olekut, üks bit paremale (st bittide nihutamine). Samm 5. Korrake samme 1–4, kuni kõik üheksa bitti on loetud. Pange tähele, et täidame maatriksi tagurpidi - alustame lahtriga 9, seejärel liigume tagasi lahtrisse 1. Samuti salvestatakse sisse -välja ja värvuseisundid allkirjata täisarvutüübi (sõna) asemel allkirjastatud täisarvu tüübi asemel. Selle põhjuseks on asjaolu, et bittide nihutamisel, kui me ei ole ettevaatlikud, võime kogemata muutuja märki muuta. Lisatud on kood LED -maatriksi valgustamiseks.

4. samm: puuteplaadi ehitamine

Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine
Puuteplaadi ehitamine

Puuteplaat on valmistatud õhukesest akrüülist, mis on piisavalt suur, et katta üle LED -maatriksi. Seejärel kleepige rea ja veeru juhtmed läbipaistva lindi abil akrüüllehele. Läbipaistvat linti kasutatakse ka juhtmete vahel ristlõikudel isoleeriva vahekaugusena. Kasutage kindlasti puhtaid tööriistu, et vältida sõrmerasva sattumist kleepuvale küljele. Sõrmejälgede plekid ei tundu mitte ainult koledad, vaid muudavad lindi vähem kleepuvaks. Lõika iga joone üks ots ära ja jootke teine ots pikemaks juhtmeks. Enne pistikute jootmist jootke takisti juhtmetega kooskõlas. Siin kasutatavad takistid on 674k, kuid mis tahes väärtus vahemikus 10k kuni 1M peaks olema korras. Ühendused Arduinoga tehakse kuue analoog-tihvtiga, tihvtid 14-16 on ühendatud traatvõrgu ridadega ja tihvtid 17-19 on ühendatud veerud.

Samm: puuteplaat - kuidas see toimib

Puuteplaat - kuidas see toimib
Puuteplaat - kuidas see toimib
Puuteplaat - kuidas see toimib
Puuteplaat - kuidas see toimib

Nii nagu kasutasime risttalaga multiplekserit minimaalsete tihvtidega LED -maatriksi seadistamiseks, saame puuteanduri massiivi seadistamiseks kasutada sarnast risttala multiplekserit, mida saame seejärel kasutada LED -ide aktiveerimiseks. Selle puuteplaadi kontseptsioon on lihtne. See on sisuliselt traatvõrk, kus kolm paljast juhet jooksevad ridades ja kolm paljast juhet veergudes ridade kohal. Igas ristumispunktis on väike isolatsiooniruut, mis takistab kahe juhtme kokkupuudet. Ristmikku puudutav sõrm puutub kokku mõlema juhtmega, mille tulemuseks on kahe juhtme vahel tohutu, kuid piiratud takistus. Väikese vooluga, kuid tuvastatavat voolu saab seetõttu juhtida ühest juhtmest teise sõrme kaudu. Selleks, et määrata, millist ristmikku vajutati, kasutati järgmist meetodit. 2. samm: seadke ridade read INPUT (sisend), aktiveerides sisemised tõmblused. 3. samm: võtke iga rea realt analoog, kuni väärtus langeb alla antud läve. See ütleb teile, millises reas on vajutatud ristmik. 4. samm: korrake samme 1-3, kuid nüüd veerud sisenditena ja read väljunditena. See ütleb teile, millises veerus on vajutatud ristmik. Müra mõju minimeerimiseks võetakse mitu näitu ja seejärel keskmistatakse. Seejärel võrreldakse keskmist tulemust lävega. Kuna see meetod kontrollib ainult läve, ei sobi see samaaegsete vajutuste tuvastamiseks. Kuna aga tikk -sõrmkäik liigub kordamööda, piisab ühe vajutuse lugemisest. Lisatud on visand, mis illustreerib puuteplaadi tööd. Nagu LED -maatriksi puhul, kasutatakse bitte, mis tähistavad ristmikku.

6. samm: pange kõik kokku

Kõike kokku pannes
Kõike kokku pannes

Nüüd, kui kõik üksikud komponendid on tehtud, on aeg need kõik kokku panna. Katke juhtmestik üle LED -maatriksil. Võimalik, et peate LED -maatrikskoodi tihvtide nummerdused ümber korraldama, et need sünkroonida traatvõrgu anduriga. Kinnitage traatvõrk omale sobivate kinnituste või liimidega ja kleepige kena mängulauale. Lisage lüliti Arduino tihvti 12 ja maapinna vahel. See lüliti on mõeldud kahe mängija režiimi ja ühe mängija režiimi vahel (võrreldes mikrokontrolleriga).

7. samm: Tic Tac Toe programmeerimine

Manusena on lisatud mängu kood. Jaotame esimesena kahe mängija režiimis tic tac toe mängu erinevatesse etappidesse. 1. samm: mängija A valib täitmata lahtri, puudutades ristmikku. 2. samm: selle lahtri LED süttib värviga A. 3. samm: kontrollige, kas mängija A on võitnud. 4. samm: mängija B valib täitmata lahtri. 5. samm: selle lahtri LED süttib värviga B 6. samm. Kontrollige, kas mängija B on võitnud. 7. samm: korrake 1–6, kuni võidutingimused on täidetud või kui kõik lahtrid on täidetud. Lahtrite lugemine: programm kordub ruudustiku lugemise ja LED-maatriksi kuvamise vahel. Niikaua kui võrguandur ei registreeri nullivälist väärtust, jätkub see tsükkel. Kui ristmikku vajutatakse, salvestab pressitud muutuja pressitud lahtri positsiooni. Lahtri täitmata jätmise kontrollimine: positsiooni lugemise (muutuja Pressitud) saamisel võrreldakse seda praeguse lahtri olekuga (salvestatud muutuja GridOnOff) kasutades bitilist lisamist. Kui pressitud lahter on täitmata, jätkake LED -i süttimist, vastasel juhul naaske lahtrite lugemise juurde. Värvide vahetamine: loogiline muutuja Turn võimaldab salvestada, kelle kord on. Lahtri valimisel valitud LED -i värvi määrab see muutuja, mis vaheldub iga lahtri valimisel. Võidutingimuse kontrollimine. Võimalikke võidutingimusi on ainult 8 ja need salvestatakse massiivis sõna muutujatena (winArray). Mängija täidetud lahtri positsioonide võrdlemiseks võidutingimustega kasutatakse kahte bitipõhist lisamist. Kui on matš, kuvab programm võidu rutiini, mille järel alustab uut mängu. Viigitingimuste kontrollimine: kui on registreeritud üheksa pööret ja võidutingimusi ei ole, on mäng viigiline. Seejärel tuled kustuvad ja alustatakse uut mängu. Ühele mängijale lülitumine: kui lüliti on sisse lülitatud, läheb programm ühe mängija režiimi, kusjuures inimene alustab kõigepealt. Inimängija käigu lõpus valib programm lihtsalt juhusliku lahtri. Ilmselgelt pole see kõige targem strateegia!

8. samm: märkused ja täiendused

Siin on video, mis näitab ühe mängija režiimi, kus programm mängib täiesti juhuslikke käike: Siin näidatud programm on vaid minimaalne, paljaste luudega versioon. Sellega saab teha palju muid asju: 1) LED -ide süttimine kolm korraga Praegune kood kuvab korraga ainult ühe LED -i. Kuid siin näidatud juhtmestiku abil on võimalik korraga süttida kõik LED -id, mis on ühendatud ühe katoodiliiniga. Niisiis, selle asemel, et jalgrattaga läbida kõik üheksa positsiooni, peate ainult kolm katoodijoont läbi sõitma. 2) Kasutage LED -ide kuvamiseks katkestusi virvendus. Katkestuste abil saab valgusdioodide ajastust täpselt juhtida ja see toob kaasa sujuvama kuvamise. 3) Nutikam arvutimängija Praegune kood võtab vaid mõne kb, jättes nutikama arvuti tic taci rakendamiseks natuke rohkem varbamängija. Loodan, et teile meeldis lugeda seda juhendit sama palju, kui mul oli selle kallal lõbus töötada!

Soovitan: