Tartalomjegyzék:
- 1. lépés: A LED mátrix bekötése
- 2. lépés: LED mátrix elrendezés
- 3. lépés: A LED -mátrix kezelése
- 4. lépés: Az érintőpad felépítése
- 5. lépés: Az érintőpad - hogyan működik
- 6. lépés: Mindent össze kell rakni
- 7. lépés: Tic Tac Toe programozása
- 8. lépés: Megjegyzések és további fejlesztések
Videó: Arduino és Touchpad Tic Tac Toe: 8 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:44
Vagy gyakoroljon bemeneti és kimeneti multiplexelést, valamint bitekkel való munkát. És egy beadvány az Arduino versenyre.
Ez egy tic tac toe játék megvalósítása, amely 3x3 -as, kétszínű LED -es kijelzőt, egyszerű rezisztív érintőpadot és egy Arduino -t használ, hogy mindent összekapcsoljon. A működéshez nézze meg a videót: Amire a projekthez szükség van: Alkatrészek és fogyóeszközök Egy perforációs tábla (vagy szalaglap) Kilenc kétszínű LED, közös katód Kilenc azonos ellenállás, 100-220 ohmos tartományban Hat azonos ellenállás 10 khm - 500 khm tartomány Egyetlen pólusú, kettős dobáskapcsoló Egy csomó fejléc Egy csomó elektromos vezeték Egy kis négyzet alakú, átlátszó akril lap, ~ 1 mm vastag, 8 cm az oldalán Tiszta ragasztószalag Heatshrinks (opcionális) A fentiek mindegyike meglehetősen gyakori elemek, a teljes költség nem haladhatja meg a 20 USD -t. Eszközök egy Arduino beállítás (Arduino Duemilanove, Arduino IDE, számítógép, USB -kábel) megtalálható a https://www.arduino.cc oldalon. Tovább az építéssel!
1. lépés: A LED mátrix bekötése
Ahhoz, hogy a LED világítson, mindkét vezetékét csatlakoztatni kell. Ha mindegyik 18 LED (9 piros, 9 zöld) mindegyikére dedikálnánk egy pár tűt, gyorsan elfogynának a csapok az Arduino -n. A multiplexeléssel azonban az összes LED -et csak 9 érintkezővel tudjuk megszólítani! A LED -ek hármas oszlopokba vannak csoportosítva, katódjaik pedig hatos sorokba. Ha egy adott anódvonalat magasra, egy adott katódvonalat alacsonyra állítunk, és az összes többi anód- és katódvonalhoz magas impedanciával rendelkezünk, válassza ki, melyik LED -et szeretnénk felgyújtani, mivel csak egy lehetséges út vezethet az áramhoz. Például, a második ábrán a zöld anód 1 sor magasra állítása és az 1 -es katód alacsony szintjén a bal alsó zöld LED világít. Az aktuális útvonal ebben az esetben kék színnel jelenik meg. De mi van akkor, ha több LED -et szeretne világítani különböző vonalakon? Ennek eléréséhez a látás kitartását fogjuk használni. Ha nagyon gyorsan kiválasztja a LED -vonalpárokat, azt az illúziót kelti, hogy az összes kiválasztott LED egyszerre világít.
2. lépés: LED mátrix elrendezés
Az alábbi kapcsolási rajz azt mutatja, hogy a LED-ek hogyan vannak fizikailag bekötve (G1-G9: zöld LED-ek, R1-R9: piros LED-ek). Ez az ábra az egyetlen piros és zöld LED -ekre vonatkozik, ha kétszínű közös katód piros/zöld LED -eket használ, piros/zöld páronként csak egy katódláb van, amelyet be kell kötni. A piros és zöld anódvonalak a PWM csapokba kerülnek az Arduino -ból (3., 5., 6., 9., 10., 11. láb a Duemilanove -on), hogy a későbbiekben olyan effekteket kapjunk, mint az elhalványulás. A katódvonalak a 4., 7. és 8. tüskékbe kerülnek. A katód- és anódvezetékek mindegyike 100 ohmos ellenállással rendelkezik a védelem érdekében.
3. lépés: A LED -mátrix kezelése
A tic tac toe kódhoz a következő információkat kell tárolnunk a LED -ekről: - világít -e egy LED vagy sem - ha világít, akkor piros vagy zöld Az egyik módja ennek az állapot tárolása egy 9 cellás tömbben, három számjegy használatával az állapotot (0 = ki, 1 = piros, 2 = zöld). Minden alkalommal, amikor ellenőriznünk kell a LED állapotát, például annak ellenőrzésére, hogy van -e nyerési feltétel, át kell tekintenünk a tömbön. Ez egy működőképes módszer, de meglehetősen nehézkes. Egyszerűbb módszer lenne két kilenc bitből álló csoport használata. A kilenc bitből álló első csoport tárolja a LED-ek ki-be állapotát, a második kilenc bitből álló csoport pedig a színt. Ezután a LED -állapotok manipulálása egyszerűen bit -aritmetika és eltolás kérdése lesz. Itt egy működő példa. Tegyük fel, hogy grafikusan rajzoljuk meg a csíkcsíkunkat, és először használjuk az 1-eseket és a 0-kat az on-off állapot ábrázolásához (1 be van kapcsolva, 0 ki van kapcsolva): 000 000 = mátrix bal alsó LED világítással 100 100 010 = mátrix átlóval LED -ek világítanak 001 Ha felsoroljuk a cellákat a bal alsó sarokból, akkor a fenti ábrázolásokat bitek sorozataként írhatjuk fel. Az első esetben ez 100000000, a második esetben pedig 001010100 lenne. Ha ezeket bináris ábrázolásokra gondoljuk, akkor minden bit sorozat egyetlen számba sűríthető (az első esetben 256, 84 a második esetben). Tehát ahelyett, hogy tömböt használnánk a mátrix állapotának tárolására, csak egyetlen számot használhatunk! Hasonlóképpen, ugyanúgy ábrázolhatjuk a LED színét (1 piros, 0 zöld). Először tegyük fel, hogy az összes LED világít (tehát a be- és kikapcsolt állapotot 511 jelzi). Az alábbi mátrix ekkor a LED -ek színállapotát képviseli: 010 zöld, piros, zöld 101 piros, zöld, piros 010 zöld, piros, zöld Most, amikor a LED mátrixot megjelenítjük, csak át kell lépnünk az egyes biteken, először ki-be, majd színes állapotban. Tegyük fel például, hogy a ki- és bekapcsolt állapotunk 100100100, a színállapot pedig 010101010. Íme az algoritmusunk a LED-mátrix megvilágítására: 1. lépés. Adja hozzá a be-ki állapot bites bináris 1-es hozzáadását (azaz bit maszkolás). 2. lépés. Ha igaz, a LED világít. Most adja hozzá a színállapot bitenkénti hozzáadását bináris 1. lépéssel. 3. Ha igaz, világítson a piros LED -en. Ha ez hamis, világítson a zöld LED -en. 4. lépés: A be- és a színállapotot tolja el egy bittel jobbra (azaz biteltolással). 5. lépés Ismételje az 1-4. Lépéseket mindaddig, amíg mind a kilenc bit el nem olvasásra került. Ne feledje, hogy a mátrixot visszafelé töltjük - a 9. cellával kezdjük, majd visszalépünk az 1. cellához. A be- és színállapotok aláírt egész típusként (szóként) kerülnek tárolásra az aláírt egész típus helyett. Ennek oka az, hogy a biteltolódás során, ha nem vagyunk óvatosak, véletlenül megváltoztathatjuk a változó előjelét. A mellékelt kód a LED mátrix megvilágítására szolgál.
4. lépés: Az érintőpad felépítése
Az érintőpad vékony akril lapból készült, amely elég nagy ahhoz, hogy a LED -mátrixon átfedje. Ezután ragasztja le a sor- és oszlopvezetékeket az akrillapra, tiszta szalaggal. Az átlátszó szalagot szigetelő távtartóként is használják a vezetékek között, a kereszteződésekben. Ügyeljen arra, hogy tiszta szerszámokat használjon, nehogy az ujjzsír a szalag ragadós oldalára kerüljön. Az ujjlenyomat -foltok nem csak csúnyának tűnnek, de kevésbé tapadnak. A szalagok egyik végét vágja le, a másik végét pedig hosszabb huzalra forrasztja. Forrasztjon egy ellenállást a vezetékekkel összhangban, mielőtt a csatlakozókra forrasztana. Az itt használt ellenállások 674k, de minden 10k és 1M közötti értéknek megfelelőnek kell lennie. Az Arduino-hoz való csatlakozás a 6 analóg csap segítségével történik, a 14-16-os tűk a vezetékrács sorokhoz vannak csatlakoztatva, és a 17-19-es csatlakozók a az oszlopokat.
5. lépés: Az érintőpad - hogyan működik
Ahogy keresztléc multiplexert használtunk minimális csapokkal rendelkező LED -mátrix felállításához, hasonló keresztrúd -multiplexerrel is beállíthatjuk az érintésérzékelő tömböt, amelyet ezután a LED -ek aktiválására használhatunk. Ennek az érintőpadnak a koncepciója egyszerű. Lényegében huzalrács, három csupasz vezeték vezeti a sorokat, és három csupasz vezeték vezet a sorok feletti oszlopokban. Minden metszéspontban van egy kis négyzet szigetelés, amely megakadályozza a két vezeték érintését. A kereszteződést érintő ujj mindkét vezetékkel érintkezik, ami hatalmas, de véges ellenállást eredményez a két vezeték között. Ezért kicsi, de kimutatható áram folyhat az egyik vezetékről a másikra az ujján keresztül. Annak meghatározásához, hogy melyik metszéspontot nyomták le, a következő módszert alkalmazták: 1. lépés: Állítsa az összes oszlopvonalat OUTPUT LOW értékre. 2. lépés: Állítsa a sorokat INPUT értékre, a belső lehúzásokat aktiválva. 3. lépés: Vegyen analóg leolvasást minden soron, amíg az érték egy adott küszöb alá nem csökken. Ez megmondja, hogy melyik sorban van a nyomott metszéspont. 4. lépés: Ismételje meg az 1-3. Lépést, de most az oszlopokat bemenetként, a sorokat pedig kimenetekként. Ez megmondja, hogy melyik oszlop a nyomott metszéspont. A zajhatások minimalizálása érdekében számos leolvasást végeznek, majd átlagolják. Az átlagolt eredményt ezután egy küszöbértékhez hasonlítják. Mivel ez a módszer csak egy küszöbértéket vizsgál, nem alkalmas egyidejű nyomások észlelésére. Mivel azonban a tic tac toe sorrendben halad, elegendő egyetlen gombnyomás elolvasása. A csatolt vázlat az érintőpad működését szemlélteti. A LED -mátrixhoz hasonlóan biteket használnak a metszéspont megnyomására.
6. lépés: Mindent össze kell rakni
Most, hogy minden egyes alkatrész elkészült, itt az ideje, hogy mindegyiket összehozza. Töltse át a vezetékes rácsot a LED -mátrixon. Előfordulhat, hogy át kell rendeznie a LED -mátrixkódban lévő tűszámozást, hogy szinkronizálhassa a vezetékhálózat -érzékelővel. Rögzítse a huzalrácsot a helyére tetszőleges rögzítésekkel vagy ragasztókkal, és ragasszon egy szép játéktáblát. Adjon hozzá kapcsolót az Arduino 12. csapja és földje között. Ez a kapcsoló a 2 játékos és az 1 játékos mód közötti váltáshoz (szemben a mikrokontrollerrel).
7. lépés: Tic Tac Toe programozása
Mellékelve a játék kódja. Először bontsuk szét a tic tac toe játékot a két lépésben, két játékos módban: 1. lépés: Az A játékos kiválaszt egy kitöltetlen cellát egy kereszteződés megérintésével. 2. lépés: Az adott cella LED -je az A színnel világít. 3. lépés: Ellenőrizze, hogy az A játékos nyert -e. 4. lépés: A B játékos kitöltetlen cellát választ. 5. lépés: Az adott cella LED -je B színnel világít 6. lépés: Ellenőrizze, hogy a B játékos nyert-e. 7. lépés: Ismételje meg az 1-6. Lépést mindaddig, amíg nyerési feltétel nem lesz, vagy ha az összes cella nincs kitöltve.. Amíg a rácsérzékelő nem regisztrál nullától eltérő értéket, ez a ciklus folytatódik. Amikor egy metszéspontot megnyomnak, a Pressed változó tárolja a préselt cella pozícióját. Ellenőrizze, hogy nincs -e kitöltve a cella: Amikor a pozíció leolvasása megtörténik (Pressed változó), akkor összehasonlítjuk a cella aktuális állapotával (a GridOnOff változóban tárolva) bitenkénti hozzáadás használatával. Ha a Préselt cella nincs kitöltve, folytassa a LED felgyulladását, különben térjen vissza a cellák olvasásához. A színek átkapcsolása: Egy logikai változó, Turn, rögzíti, hogy kinek a köre van. A cella kiválasztásakor kiválasztott LED színét ez a változó határozza meg, amely minden cella kiválasztásakor váltakozik. Nyerési feltétel ellenőrzése: Csak 8 lehetséges nyerési feltétel létezik, és ezek szóváltozóként kerülnek tárolásra egy tömbben (winArray). Két bitenkénti összeadást használnak a játékosok kitöltött cellapozícióinak összehasonlítására a nyerési feltételekkel. Ha van meccs, akkor a program egy győzelmi rutint jelenít meg, amely után új játékot indít. Sorsolási feltétel ellenőrzése: Ha kilenc fordulatot rögzítettek, és még mindig nincs nyerési feltétel, akkor a játék döntetlen. A LED -ek ekkor kialszanak, és új játék indul. Átkapcsolás egy játékos módra: Ha a kapcsoló bekapcsolt helyzetben van, a program egy játékos módba lép, és az ember indul elõször. Az emberi játékos körének végén a program egyszerűen kiválaszt egy véletlenszerű cellát. Nyilvánvaló, hogy ez nem a legokosabb stratégia!
8. lépés: Megjegyzések és további fejlesztések
Itt egy videó, amely az egyjátékos módot mutatja, a program teljesen véletlenszerű mozdulatokat játszik le: Az itt látható program csak egy minimális, csupasz változat. Sok más dolog is elvégezhető ezzel: 1) A LED -ek egyszerre három kigyulladása Az aktuális kód egyszerre csak egy LED -et jelenít meg. Az itt bemutatott kábelezéssel azonban lehetőség van arra, hogy egy katódvonalhoz csatlakoztatott összes LED egyszerre világítson. Tehát, ahelyett, hogy mind a kilenc pozícióban kerékpározna, mindössze annyit kell tennie, hogy végigfut a három katódvonalon. 2) Megszakításokkal jelenítse meg a LED -eket pislákoló. A megszakítások használatával a LED -ek időzítése pontosan szabályozható, és simább megjelenítést eredményez. lábujj játékos. Remélem, annyira élvezte ezt az oktatóanyagot, mint amennyire jól éreztem magam rajta!
Ajánlott:
Arduino Touch Tic Tac Toe játék: 6 lépés (képekkel)
Arduino Touch Tic Tac Toe játék: Kedves barátaink, üdvözöljük egy újabb Arduino oktatóanyagban! Ebben a részletes bemutatóban egy Arduino Tic Tac Toe játékot fogunk felépíteni. Mint látható, érintőképernyőt használunk, és a számítógép ellen játszunk. Egy egyszerű játék, mint a Tic Tac Toe, az
Microbit Tic Tac Toe játék: 4 lépés (képekkel)
Microbit Tic Tac Toe Game: Ehhez a projekthez munkatársam - @descartez és én készítettünk egy fantasztikus tic tac toe játékot a mikrobites rádió funkcióinak felhasználásával. Ha még nem hallott a mikrobitekről, akkor ezek egy fantasztikus mikrokontroller, amelyet a gyerekek programozására tanítottak. Ők
3D4x játék: 3D 4x4x4 Tic-Tac-Toe: 5 lépés (képekkel)
3D4x Játék: 3D 4x4x4 Tic-Tac-Toe: Unod már, hogy ugyanazt a régi, unalmas, 2 dimenziós tic-tac-toe-t játszod ?? Nos, mi vagyunk a megoldás az Ön számára! Tic-tac-toe 3 dimenzióban !!! 2 játékos számára ebben a 4x4x4 kockában szerezzen be 4 LED -et egymás után (bármely irányba), és nyer! Megcsinálod. Játszol
Tic Tac Toe (3 sorban): 10 lépés (képekkel)
Tic Tac Toe (3 sorban): Ez a projekt a klasszikus Tic-Tac-Toe ceruza és amp; papír 2 játékos játék. Az áramkör szíve a Microchip PIC 16F627A mikrokontrollere. Mellékeltem egy letöltési linket egy PC -alaplap PDF -hez, valamint a HEX kódot
Tic Tac Toe a Visual Basicben: 3 lépés (képekkel)
Tic Tac Toe a Visual Basicben: A Tic Tac Toe az egyik legnépszerűbb time pass játék. Főleg osztálytermekben;). Ebben az utasításban ezt a játékot a PC -n fogjuk megtervezni a népszerű vizuális alap GUI programozási platform segítségével