Obsah:

Arduino a Touchpad Tic Tac Toe: 8 krokov (s obrázkami)
Arduino a Touchpad Tic Tac Toe: 8 krokov (s obrázkami)

Video: Arduino a Touchpad Tic Tac Toe: 8 krokov (s obrázkami)

Video: Arduino a Touchpad Tic Tac Toe: 8 krokov (s obrázkami)
Video: Arduino - Tic Tac Toe Game with Touchpad 2024, November
Anonim
Arduino a Touchpad Tic Tac Toe
Arduino a Touchpad Tic Tac Toe

Alebo cvičenie v multiplexovaní vstupov a výstupov a práca s bitmi. A príspevok do súťaže Arduino.

Jedná sa o implementáciu tic tac toe hry využívajúcej pole 3x3 dvojfarebných LED diód pre displej, jednoduchý odporový touchpad a Arduino na prepojenie všetkého. Ak chcete vidieť, ako to funguje, pozrite sa na video: Čo tento projekt vyžaduje: Diely a spotrebný materiál Jedna dosková doska (alebo pásová doska) Deväť dvojfarebných diód LED, spoločná katóda Deväť identických odporov, v rozsahu 100-220 ohmov Šesť rovnakých odporov, v Rozsah 10 kOhm - 500 kOhm Jeden jednopólový prepínač s dvojitým vrhaním Veľa kolíkov záhlavia Elektrický drôt Jeden malý štvorcový list priehľadného akrylátu s hrúbkou ~ 1 mm, na boku 8 cm Priehľadná lepiaca páska Tepelné zmršťovanie (voliteľné) Všetky vyššie uvedené sú celkom bežné položky, celkové náklady by nemali presiahnuť 20 USD. Nástroje Jedna konfigurácia Arduina (Arduino Duemilanove, Arduino IDE, počítač, kábel USB) Bežné elektrické nástroje (multimetr, spájkovacia pištoľ, nožnice na drôt, rezačka drôtu) Všetko, čo s Arduinom súvisí nájdete na https://www.arduino.cc. Pokračujte v stavaní!

Krok 1: Zapojenie matice LED

Zapojenie matice LED
Zapojenie matice LED
Zapojenie matice LED
Zapojenie matice LED

Aby LED dióda svietila, musia byť zapojené obidva jej vodiče. Ak by sme venovali pár pinov každej z 18 LED diód (9 červených, 9 zelených), rýchlo by nám došli piny na Arduine. Avšak s multiplexovaním budeme schopní riešiť všetky LED diódy iba s 9 kolíkmi! Za týmto účelom sú LED diódy zapojené priečnym spôsobom, ako je znázornené na prvom obrázku. LED diódy sú zoskupené v stĺpcoch po troch a ich katódy sú zoskupené v radoch po šesť. Nastavením konkrétnej anódovej linky vysoko a konkrétnej katódovej linky nízko a s vysokou impedanciou na všetkých ostatných anódových a katódových linkách môžeme vyberte, ktorá dióda LED sa má rozsvietiť, pretože existuje iba jedna možná cesta, ktorou môže prúd prechádzať. Napríklad na druhom obrázku, nastavením zelenej anódy 1 na vysoký riadok a na katódu 1 nízky, sa rozsvieti zelená LED v dolnej časti. Aktuálna cesta je v tomto prípade zobrazená modrou farbou. Ale čo keď chcete rozsvietiť viac ako jednu diódu LED na rôznych riadkoch? Na dosiahnutie tohto cieľa použijeme vytrvalosť vízie. Veľmi rýchly výber párov LED diód vytvára ilúziu, že všetky vybrané LED diódy svietia súčasne.

Krok 2: Rozloženie matice LED

Rozloženie matice LED
Rozloženie matice LED
Rozloženie matice LED
Rozloženie matice LED

Nasledujúca schéma zapojenia ukazuje, ako sú LED diódy fyzicky zapojené (G1-G9: zelené LED, R1-R9: červené LED). Tento diagram je pre jednotlivé červené a zelené LED diódy, ak používate dvojfarebné červené/zelené diódy LED so spoločnou katódou, na jeden pár červeno/zelených je len jedna katódová noha, ktorú musíte zapojiť. Červené a zelené anódové čiary prechádzajú do pinov PWM Arduina (piny 3, 5, 6, 9, 10, 11 na Duemilanove), aby sme neskôr mohli mať efekty ako vyblednutie. Katódové vedenia prechádzajú do kolíkov 4, 7 a 8. Každá katódová a anódová linka má na ochranu rezistory 100 ohmov.

Krok 3: Riešenie matice LED

Pokiaľ ide o kód tic tac toe, budeme musieť byť schopní uložiť nasledujúce informácie o diódach LED: - či LED dióda svieti alebo nie - ak svieti, či je červená alebo zelená Jedným zo spôsobov, ako to urobiť, je uložiť stav v 9-bunkovom poli pomocou troch číslic na vyjadrenie stavu (0 = vypnuté, 1 = červená zapnutá, 2 = zelená zapnutá). Zakaždým, keď potrebujeme skontrolovať stav diódy LED, napríklad aby sme zistili, či existuje podmienka výhry, musíme prejsť poľom. Je to funkčná metóda, ale je dosť neohrabaná. Efektívnejšou metódou by bolo použitie dvoch skupín po deviatich bitoch. Prvá skupina deviatich bitov ukladá stav vypnutia LED diód a druhá skupina deviatich bitov ukladá farbu. Potom sa manipulácia so stavmi LED stáva jednoducho otázkou aritmetiky a posunu. Tu je fungujúci príklad. Povedzme, že nakreslíme svoju mriežku tic tac toe graficky a najskôr pomocou 1 s a 0 s predstavíme stav zapnutia a vypnutia (1 je zapnuté, 0 je vypnuté): 000 000 = matica s dolnou ľavou diódou LED svieti 100 100 010 = matica s uhlopriečkou LED diódy svietia 001 Ak spočítame bunky zľava dole, vyššie uvedené znázornenia môžeme zapísať ako sériu bitov. V prvom prípade by to bolo 100000000 av druhom prípade by to bolo 001010100. Ak ich považujeme za binárne reprezentácie, potom každú sériu bitov možno kondenzovať do jedného čísla (256 v prvom prípade, 84 v druhom prípade). Takže namiesto použitia poľa na ukladanie stavu matice môžeme použiť iba jedno číslo! Podobne môžeme rovnakým spôsobom znázorniť farbu LED (1 je červená, 0 je zelená). Najprv predpokladajme, že všetky LED diódy svietia (takže stav zapnutia a vypnutia predstavuje 511). Nasledujúca matica potom bude predstavovať stav farby diód LED: 010 zelená, červená, zelená 101 červená, zelená, červená 010 zelená, červená, zelená Teraz, keď zobrazujeme maticu LED, musíme prechádzať každým z bitov, najskôr v zapnutom a vypnutom stave a potom vo farebnom stave. Povedzme napríklad, že náš stav zapnutia a vypnutia je 100100100 a stav farby 010101010. Tu je náš algoritmus na rozsvietenie matice LED: Krok 1. Vykonajte bitové pridanie stavu zapnutia a vypnutia pomocou binárnej 1 (tj. maskovanie). Krok 2. Ak je to pravda, LED dióda svieti. Teraz urobte bitové sčítanie stavu farby pomocou binárnej hodnoty 1. Krok 3. Ak je to pravda, rozsvieťte červenú diódu LED. Ak je to pravda, rozsvieťte zelenú LED diódu. Krok 4. Posuňte stav zapnutia a vypnutia o jeden bit doprava (tj. Posunutie bitov). Krok 5. Kroky 1 - 4 opakujte, kým sa neprečítajú všetkých deväť bitov. Všimnite si toho, že maticu vypĺňame spätne - začneme bunkou 9 a potom prejdeme späť do bunky 1. Štáty zapnutia a vypnutia a farby sú tiež uložené ako typ celého čísla bez znamienka (slovo). Je to preto, že ak nie sme opatrní pri bitovom radení, môžeme neúmyselne zmeniť znamienko premennej. V prílohe je kód na rozsvietenie matice LED.

Krok 4: Konštrukcia dotykového panelu

Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu
Konštrukcia dotykového panelu

Touchpad je vyrobený z tenkého akrylového plechu, ktorý je dostatočne veľký na to, aby prekryl maticu LED. Potom pomocou priehľadnej pásky prilepte drôty radu a stĺpca na akrylový list. Priehľadná páska sa používa aj ako izolačná vložka medzi drôtmi v priesečníkoch. Používajte čisté nástroje, aby sa mastnota z prstov nedostala na lepivú stranu pásky. Škvrny od odtlačkov prstov nielenže vyzerajú škaredo, ale tiež robia pásku menej lepivou. Odrežte jeden koniec každého z riadkov a druhý koniec spájkujte na dlhší drôt. Pred spájkovaním na konektory spájkujte odpor v rade s vodičmi. Tu používané odpory sú 674 k, ale akákoľvek hodnota medzi 10 k a 1 M by mala byť v poriadku. Pripojenia k Arduinu sa vykonávajú pomocou 6 analógových pinov, s kolíkmi 14-16 pripojenými k radom drôtenej mriežky a kolíkmi 17-19 stĺpce.

Krok 5: Touch Pad - ako funguje

Touch Pad - ako funguje
Touch Pad - ako funguje
Touch Pad - ako funguje
Touch Pad - ako funguje

Rovnako ako sme použili multiplexor s priečnikom na nastavenie matice LED s minimálnymi kolíkmi, môžeme použiť podobný multiplexor s priečnymi tyčami na nastavenie poľa dotykových senzorov, ktoré potom môžeme použiť na aktiváciu diód LED. Koncept tejto dotykovej podložky je jednoduchý. Je to v podstate drôtená mriežka s tromi holými drôtmi vedenými v radoch a tromi holými drôtmi vedenými v stĺpcoch nad radmi. V každom priesečníku je malý štvorček izolácie, ktorý zabraňuje dotyku dvoch vodičov. Prst dotýkajúci sa križovatky sa dotkne oboch vodičov, čo spôsobí obrovský, ale konečný odpor medzi týmito dvoma vodičmi. Preto je možné prúdiť z jedného drôtu na druhý cez prst malým prúdom, ale je možné ho detekovať. Na určenie, ktorá križovatka bola stlačená, bola použitá nasledujúca metóda: Krok 1: Nastavte všetky stĺpce na VÝSTUP NÍZKY. Krok 2: Nastavte riadky riadkov na VSTUP, s aktivovanými vnútornými sťahovaniami. Krok 3: Vykonajte analógové čítanie na každom riadku riadka, kým hodnota neklesne pod daný prah. To vám povie, v ktorom riadku je stlačená križovatka. Krok 4: Opakujte kroky 1-3, ale teraz so stĺpcami ako vstupmi a riadkami ako výstupmi. Toto vám povie, v ktorom stĺpci je stlačená križovatka. Aby sa minimalizovali efekty hluku, vykoná sa niekoľko meraní a potom sa spriemerujú. Priemerný výsledok sa potom porovná s prahovou hodnotou. Pretože táto metóda kontroluje iba prahovú hodnotu, nie je vhodná na detekciu súčasných stlačení. Pretože však tic tac toe pokračuje postupne, stačí prečítať jedno stlačenie. V prílohe je náčrt ilustrujúci fungovanie touchpadu. Rovnako ako v prípade matice LED, na znázornenie, ktorá križovatka bola stlačená, sa používajú bity.

Krok 6: Spojte všetko dohromady

Dať všetko dohromady
Dať všetko dohromady

Teraz, keď sú všetky jednotlivé súčiastky hotové, je načase ich všetky spojiť. Prekrývajte mriežku drôtu na matici LED. Na synchronizáciu so snímačom mriežky drôtu bude možno potrebné zmeniť poradie číslovania pinov v kóde LED matice. Zaistite drôtenú mriežku na mieste pomocou upevňovacích prvkov alebo lepidiel podľa vlastného výberu a prilepte na peknú hraciu dosku. Pridajte prepínač medzi kolíkom 12 a uzemnením Arduina. Tento prepínač má prepínať medzi režimom pre dvoch hráčov a režimom pre jedného hráča (oproti mikrokontroléru).

Krok 7: Programovanie Tic Tac Toe

V prílohe je kód hry. Poďme si najskôr rozložiť hru tic tac toe na jednotlivé kroky v režime pre dvoch hráčov: Krok 1: Hráč A vyberie nevyplnenú bunku dotykom na križovatku. Krok 2: LED dióda tejto bunky sa rozsvieti farbou A. Krok 3: Skontrolujte, či hráč A vyhral. Krok 4: Hráč B vyberie nevyplnenú bunku. Krok 5: LED dióda tejto bunky sa rozsvieti farbou B. Krok 6: Skontrolujte, či hráč B vyhral. Krok 7: Opakujte 1 až 6, kým nenastane podmienka výhry, alebo nie sú vyplnené všetky bunky. Čítanie buniek: Program sa pohybuje medzi čítaním mriežky a zobrazením matice LED.. Pokiaľ snímač mriežky nezaregistruje nenulovú hodnotu, bude táto slučka pokračovať. Keď je stlačená križovatka, stlačená premenná uloží polohu stlačenej bunky. Kontrola, či je bunka nevyplnená: Keď sa získa údaj o polohe (premenná stlačená), porovná sa s aktuálnym stavom bunky (uloženou v premennej GridOnOff) pomocou bitového sčítania. Ak je stlačená bunka nevyplnená, pokračujte rozsvietením diódy LED, inak sa vráťte k čítaniu buniek. Prepínanie farieb: Na zaznamenanie, kto je na rade, sa používa boolovská premenná Turn. Farba LED vybraná pri výbere bunky je určená touto premennou, ktorá sa strieda pri každom výbere bunky. Kontrola podmienky výhry: Existuje iba 8 možných podmienok výhry, ktoré sú uložené ako premenné slova v poli (winArray). Dva bitové prírastky sa používajú na porovnanie pozícií obsadených buniek hráča s podmienkami výhry. Ak dôjde k zhode, program zobrazí postup výhry, po ktorom začne novú hru. Kontrola stavu remízy: Keď je zaznamenaných deväť ťahov a stále nie je žiadna podmienka výhry, hra je remíza. LED diódy potom zhasnú a spustí sa nová hra. Prepnutie do režimu jedného hráča: Ak je prepínač v zapnutej polohe, program prejde do režimu jedného hráča, pričom ako prvý začne ľudský hráč. Na konci ťahu ľudského hráča program jednoducho vyberie náhodnú bunku. Očividne to nie je najchytrejšia stratégia!

Krok 8: Poznámky a ďalšie zlepšenia

Tu je video ukazujúce režim pre jedného hráča s programom hrajúcim úplne náhodné pohyby: Tu zobrazený program je iba minimálnou verziou holých kostí. S týmto sa dá robiť mnoho ďalších vecí: 1) Rozsvietenie LED diód naraz. Súčasný kód zobrazuje iba jednu LED diódu naraz. S tu zobrazeným zapojením je však možné rozsvietiť všetky LED diódy pripojené k jednej katódovej linke súčasne. Takže namiesto toho, aby ste prešli všetkými deviatimi polohami, stačí prejsť tromi katódovými líniami. 2) Na zobrazenie LED diód používajte prerušenia. V závislosti od rutiny LED displeja a množstva spracovania môžu diódy LED ukazovať určitý stupeň blikanie. Použitím prerušení je možné načasovanie diód LED ovládať presne a viedlo by k plynulejšiemu zobrazeniu. 3) Inteligentnejší počítačový prehrávač Súčasný kód zaberie iba niekoľko kb, takže o niečo viac zostane na implementácii inteligentnejšieho počítačového tic tac prstový prehrávač. Dúfam, že vás čítanie tohto návodu baví, rovnako ako som sa bavil na ňom pracovať!

Odporúča: