Tartalomjegyzék:

Arduino és Touchpad Tic Tac Toe: 8 lépés (képekkel)
Arduino és Touchpad Tic Tac Toe: 8 lépés (képekkel)

Videó: Arduino és Touchpad Tic Tac Toe: 8 lépés (képekkel)

Videó: Arduino és Touchpad Tic Tac Toe: 8 lépés (képekkel)
Videó: Сервомотор управления с нажимом 2 кнопки с Arduino 2024, Szeptember
Anonim
Arduino és Touchpad Tic Tac Toe
Arduino és Touchpad Tic Tac Toe

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

A LED mátrix bekötése
A LED mátrix bekötése
A LED mátrix bekötése
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

LED mátrix elrendezés
LED mátrix elrendezés
LED mátrix elrendezé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 felépítése
Az érintőpad felépítése
Az érintőpad felépítése
Az érintőpad felépítése
Az érintőpad felépítése
Az érintőpad felépítése
Az érintőpad felépítése
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

Az érintőpad - Hogyan működik?
Az érintőpad - Hogyan működik?
Az érintőpad - Hogyan működik?
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

Mindent összerakni
Mindent összerakni

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: