Sisällysluettelo:

Arduino ja kosketuslevy Tic Tac Toe: 8 vaihetta (kuvilla)
Arduino ja kosketuslevy Tic Tac Toe: 8 vaihetta (kuvilla)

Video: Arduino ja kosketuslevy Tic Tac Toe: 8 vaihetta (kuvilla)

Video: Arduino ja kosketuslevy Tic Tac Toe: 8 vaihetta (kuvilla)
Video: Все цифры и калькулятор на тачпаде в Ноутубке Asus ZenBook UX325EA 2024, Kesäkuu
Anonim
Arduino ja kosketuslevy Tic Tac Toe
Arduino ja kosketuslevy Tic Tac Toe

Tai harjoitus syöttö- ja lähtömultipleksoinnissa sekä bittien kanssa työskentelyssä. Ja lähetys Arduino -kilpailuun.

Tämä on toteutusta tikkipelistä, jossa käytetään 3x3 -sarjan kaksivärisiä LED -valoja näytölle, yksinkertaista resistiivistä kosketuslevyä ja Arduinoa kaiken yhdistämiseksi. Katso miten se toimii, katso video: Mitä tämä projekti vaatii: Osat ja kulutustarvikkeet Yksi peruskortti (tai nauhalevy) Yhdeksän kaksiväristä LEDiä, yhteinen katodi Yhdeksän samanlaista vastusta, 100-220 ohmin alueella Kuusi samanlaista vastusta 10 khm - 500 khm: n alue Yksi yksinapainen, kaksoiskytkin Kytkentä nastatappeja Joukko sähköjohtoja Yksi pieni neliöarkki läpinäkyvää akryyliä, paksuus ~ 1 mm, 8 cm sivulta Kirkas teippi Lämpökutistimet (valinnainen) Kaikki edellä mainitut ovat melko yleisiä esineitä, joiden kokonaiskustannukset eivät saa ylittää 20 dollaria. löytyy osoitteesta https://www.arduino.cc. Rakennuksen parissa!

Vaihe 1: LED -matriisin kytkeminen

LED -matriisin kytkentä
LED -matriisin kytkentä
LED -matriisin kytkentä
LED -matriisin kytkentä

Jotta LED -valo syttyy, sen molemmat johdot on kytkettävä. Jos omistaisimme nastan parin kullekin 18 LEDille (9 punaista, 9 vihreää), Arduinon nastat loppuisivat nopeasti. Multipleksoinnin avulla voimme kuitenkin käsitellä kaikkia LED -valoja vain yhdellä nastalla! LEDit on ryhmitelty kolmiosarakkeisiin, ja niiden katodit on ryhmitelty kuuden riville. valitse, minkä LED -valon haluamme syttyä, koska virta voi kulkea vain yhdellä mahdollisella reitillä.. Nykyinen polku näkyy tässä tapauksessa sinisenä, mutta entä jos haluat sytyttää useamman kuin yhden LEDin eri linjoilla? Käytämme vision pysyvyyttä tämän saavuttamiseksi. Valitsemalla LED -viivaparit erittäin nopeasti, saadaan aikaan illuusio siitä, että kaikki valitut LED -valot palavat samanaikaisesti.

Vaihe 2: LED -matriisin asettelu

LED -matriisin asettelu
LED -matriisin asettelu
LED -matriisin asettelu
LED -matriisin asettelu

Alla oleva piirikaavio osoittaa, kuinka LEDit on kytketty fyysisesti (G1-G9: vihreät LEDit, R1-R9: punaiset LEDit). Tämä kaavio koskee yksittäisiä punaisia ja vihreitä LED -valoja, jos käytät kaksivärisiä yhteisiä katodipunaisia/vihreitä LED -valoja, vain yksi katodijalka punaista/vihreää paria kohden on kytkettävä. Arduinosta (nastat 3, 5, 6, 9, 10, 11 Duemilanovessa), jotta voimme saada vaikutuksia, kuten häipymistä myöhemmin. Katodilinjat menevät nastoihin 4, 7 ja 8. Jokaisessa katodi- ja anodilinjassa on 100 ohmin vastukset suojaamiseksi.

Vaihe 3: LED -matriisin osoittaminen

Tiktikuvakoodia varten meidän on pystyttävä tallentamaan seuraavat tiedot LEDeistä: - palaako LED vai ei - jos palaa, onko se punainen tai vihreä Yksi tapa tehdä tämä on tallentaa tila 9-soluisessa taulukossa käyttäen kolmea numeroa edustamaan tilaa (0 = pois, 1 = punainen päällä, 2 = vihreä päällä). Aina kun meidän on tarkistettava LED -valojen tilat, esimerkiksi voitto -olosuhteiden tarkistamiseksi, meidän on selattava taulukon läpi. Tämä on toimiva menetelmä, mutta melko hankala. Virtaviivaisempi menetelmä olisi käyttää kahta yhdeksän bitin ryhmää. Ensimmäinen yhdeksän bitin ryhmä tallentaa LED-valojen on-off-tilan ja toinen yhdeksän bitin ryhmä tallentaa värin. Sitten LED -tilojen manipuloinnista tulee yksinkertaisesti bittien aritmeettinen ja siirtyvä asia. Tässä toimiva esimerkki. Oletetaan, että piirrämme tikkitarttaruudukon graafisesti ja käytä ensin 1s ja 0s ilmaisemaan on-off-tilaa (1 on päällä, 0 on pois päältä): 000 000 = matriisi, jossa vasen alareunan LED palaa 100100 010 = matriisi diagonaalilla LEDit palavat 001 Jos luetamme solut vasemmasta alakulmasta, voimme kirjoittaa yllä olevat esitykset bittisarjana. Ensimmäisessä tapauksessa se olisi 100000000 ja toisessa tapauksessa 001010100. Jos ajattelemme näitä binääriesityksinä, jokainen bittisarja voidaan tiivistää yhdeksi numeroksi (256 ensimmäisessä tapauksessa, 84 toisessa tapauksessa). Joten sen sijaan, että käyttäisimme matriisia matriisin tilan tallentamiseen, voimme käyttää vain yhtä numeroa! Vastaavasti voimme esittää LEDin värin samalla tavalla (1 on punainen, 0 on vihreä). Oletetaan ensin, että kaikki LEDit palavat (joten on-off-tilaa edustaa 511). Alla oleva matriisi edustaa sitten LED -valojen väritilaa: 010 vihreä, punainen, vihreä 101 punainen, vihreä, punainen 010 vihreä, punainen, vihreä Nyt, kun näytetään LED -matriisia, meidän täytyy vain selata jokaista bittiä, ensin on-off-tilassa ja sitten väritilassa. Oletetaan esimerkiksi, että meidän on-off-tilamme on 100100100 ja väritila on 010101010. Tässä on algoritmimme LED-matriisin sytyttämiseksi: Vaihe 1. Lisää bit-on-off-tila binäärisellä 1 (eli bitillä) naamiointi). Vaihe 2. Jos se on totta, LED palaa. Lisää nyt väritila bittinä binaariluvulla 1. Vaihe 3. Jos se on totta, sytytä punainen LED. Jos se on väärä, sytytä vihreä LED. Vaihe 4. Siirrä sekä on-off-tila että väritila yksi bitti oikealle (ts. Bitin siirto). Vaihe 5. Toista vaiheita 1 - 4, kunnes kaikki yhdeksän bittiä on luettu. Huomaa, että täytämme matriisin taaksepäin - aloitamme solusta 9 ja sitten takaisin soluun 1. Lisäksi päälle- ja väritila tallennetaan allekirjoittamattomana kokonaislukutyypinä (sanana) allekirjoitetun kokonaislukutyypin sijasta. Tämä johtuu siitä, että jos emme ole varovaisia bittisiirrossa, voimme vahingossa muuttaa muuttujan merkkiä. Liitteenä on koodi LED -matriisin sytyttämiseksi.

Vaihe 4: Kosketuslevyn rakentaminen

Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen
Kosketuslevyn rakentaminen

Kosketuslevy on valmistettu ohuesta akryylilevystä, joka on riittävän suuri päällekkäin LED -matriisin päälle. Teippaa sitten rivi- ja sarakejohdot akryylilevylle kirkkaalla teipillä. Läpinäkyvää teippiä käytetään myös eristävänä välikappaleena johtojen välissä risteyksissä. Käytä puhtaita työkaluja, jotta sormenrasvaa ei pääse teipin tahmealle puolelle. Sormenjälkitahrat eivät vain näytä rumailta, vaan tekevät nauhasta myös vähemmän tahmean. Juotosvastus juovien kanssa, ennen juottamista liittimiin. Tässä käytetyt vastukset ovat 674k, mutta minkä tahansa arvon välillä 10k ja 1M pitäisi olla kunnossa. Kytkennät Arduinoon tehdään käyttämällä 6 analogista nastaa, joissa nastat 14-16 on kytketty lankaverkkoriville ja nastat 17-19 sarakkeet.

Vaihe 5: Kosketuslevy - miten se toimii

Kosketuslevy - miten se toimii
Kosketuslevy - miten se toimii
Kosketuslevy - miten se toimii
Kosketuslevy - miten se toimii

Aivan kuten käytimme poikkipalkki -multiplekseria LED -matriisin asettamiseen minimaalisilla nastoilla, voimme käyttää samanlaista poikkipalkki -multiplekseriä kosketusanturiryhmän perustamiseen, jonka avulla voimme sitten aktivoida LEDit. Tämän kosketuslevyn idea on yksinkertainen. Se on lähinnä lankaverkko, jossa on kolme paljaa johtoa riveissä ja kolme paljaa johtoa sarakkeissa rivien yläpuolella. Jokaisessa leikkauspisteessä on pieni neliö eristettä, joka estää kahden johdon koskettamisen. Sormi, joka koskettaa risteystä, tulee kosketuksiin molempien johtojen kanssa, mikä johtaa valtavaan, mutta rajalliseen vastukseen kahden johtimen välillä. Pieni, mutta havaittavissa oleva virta voidaan siksi saada virtaamaan yhdestä johtimesta toiseen sormen kautta. Voit määrittää, mikä risteys on painettu, käyttämällä seuraavaa menetelmää: Vaihe 1: Aseta kaikki sarakeviivat OUTPUT LOW -asentoon. Vaihe 2: Aseta rivirivit INPUT -asentoon, kun sisäiset pullupit on aktivoitu Vaihe 3: Ota analoginen luku jokaiselta riviriviltä, kunnes arvo laskee tietyn kynnyksen alle. Vaihe 4: Toista vaiheet 1-3, mutta nyt sarakkeet syöttöinä ja rivit lähtöinä. Tämä kertoo, mihin sarakkeeseen painettu risteys kuuluu. Keskimääräistä tulosta verrataan kynnykseen, koska tämä menetelmä vain vertaa kynnystä, se ei sovellu samanaikaisten painallusten havaitsemiseen. Koska tikkutapa etenee vuorotellen, riittää vain yhden painalluksen lukeminen. Liitetty on luonnos, joka havainnollistaa kosketuslevyn toimintaa. Kuten LED -matriisin kohdalla, bittejä käytetään osoittamaan, mitä risteystä painettiin.

Vaihe 6: Kokoa kaikki yhteen

Kaikki yhteen
Kaikki yhteen

Nyt kun kaikki yksittäiset komponentit on tehty, on aika koota ne yhteen. Sinun on ehkä järjestettävä LED -matriisikoodin nastanumerot uudelleen, jotta se voidaan synkronoida lankaverkkotunnistimen kanssa. Kiinnitä lankaverkko paikoilleen valitsemillasi kiinnikkeillä tai liimoilla ja tartu kivaan pelilautaan. Tällä kytkimellä vaihdetaan kahden pelaajan ja yhden pelaajan välillä (verrattuna mikrokontrolleriin).

Vaihe 7: Tic Tac Toe -ohjelmointi

Ohessa on pelin koodi. Jakakaamme ensin tikkipeli eri vaiheisiin kahden pelaajan tilassa: Vaihe 1: Pelaaja A valitsee täyttämättömän solun koskettamalla risteystä. Vaihe 2: Tämän solun LED -valo palaa värillä A. Vaihe 3: Tarkista, onko pelaaja A voittanut Vaihe 4: Pelaaja B valitsee täyttämättömän solun Vaihe 5: Tämän solun LED -valo syttyy värillä B Vaihe 6: Tarkista, onko pelaaja B voittanut.. Tämä silmukka jatkuu niin kauan kuin ruudukkoanturi ei rekisteröi nollasta poikkeavaa arvoa. Kun risteystä painetaan, Pressed -muuttuja tallentaa painetun solun sijainnin. Tarkista, onko solu täynnä: Kun sijaintilukema saadaan (muuttuja Pressed), sitä verrataan solun nykyiseen tilaan (tallennettu muuttujalle GridOnOff) käyttämällä bittikohtaista lisäystä. Jos painettu solu ei ole täytetty, jatka LED -valon syttymistä ja palaa muuten solujen lukemiseen. Solun valinnassa valittu LED -väri määräytyy tämän muuttujan mukaan, joka vaihtuu joka kerta, kun solu valitaan.). Kaksi bittikohtaista lisäystä käytetään vertaamaan pelaajan täytettyjä soluasemia voitto -olosuhteisiin. Jos ottelu on olemassa, ohjelma näyttää voittorutiinin, jonka jälkeen se aloittaa uuden pelin. Tämän jälkeen LED -valot sammuvat ja uusi peli käynnistyy. Ihmisen pelaajan vuoron lopussa ohjelma yksinkertaisesti valitsee satunnaisen solun. On selvää, että tämä ei ole fiksuin strategia!

Vaihe 8: Huomautuksia ja lisäparannuksia

Tässä video, joka näyttää yhden pelaajan tilan, jossa ohjelma toistaa täysin satunnaisia liikkeitä: Tässä näkyvä ohjelma on vain minimaalinen, paljas luuversio. Tällä voidaan tehdä monia muita asioita: 1) LEDien sytyttäminen kolme kerrallaan Nykyinen koodi näyttää vain yhden LEDin kerralla. Tässä esitetyllä johdotuksella on kuitenkin mahdollista sytyttää kaikki katodilinjaan liitetyt LEDit samanaikaisesti. Joten sen sijaan, että pyöräisit läpi kaikki yhdeksän asemaa, sinun tarvitsee vain selata kolmea katodilinjaa. 2) Käytä keskeytyksiä LED -valojen näyttämiseen LED -näyttörutiinista ja käsittelyn määrästä riippuen LEDit voivat näyttää jonkin verran välkkyminen. Keskeytysten avulla LED -valojen ajoitusta voidaan ohjata tarkasti ja se johtaisi tasaisempaan näyttöön. Toivottavasti olet nauttinut tämän ohjeen lukemisesta yhtä paljon kuin minulla oli hauskaa työskennellä sen parissa!

Suositeltava: