INHOUDSOPGAWE:

Arduino en Touchpad Tic Tac Toe: 8 stappe (met foto's)
Arduino en Touchpad Tic Tac Toe: 8 stappe (met foto's)

Video: Arduino en Touchpad Tic Tac Toe: 8 stappe (met foto's)

Video: Arduino en Touchpad Tic Tac Toe: 8 stappe (met foto's)
Video: Arduino - Tic Tac Toe Game with Touchpad 2024, September
Anonim
Arduino en Touchpad Tic Tac Toe
Arduino en Touchpad Tic Tac Toe

Of 'n oefening in multiplexing van invoer en uitvoer, en werk met stukkies. En 'n voorlegging vir die Arduino -wedstryd.

Dit is 'n implementering van 'n tic tac toe -spel met 'n 3x3 -reeks tweekleurige LED's vir 'n skerm, 'n eenvoudige weerstandige raakvlak en 'n Arduino om alles aan mekaar vas te bind. Om te sien hoe dit werk, kyk na die video: Wat hierdie projek benodig: Onderdele en verbruiksgoedere Een perf board (of strip board) Nege tweekleurige LED's, gewone katode Nege identiese weerstande, in die 100-220 ohm reeks Ses identiese weerstande, in die 10kohm - 500kohm reeks Een enkele paal, dubbel gooi skakelaar 'n Klomp koppenne 'n Klomp elektriese draad Een klein vierkantige deursigtige akriel, ~ 1 mm dik, 8 cm aan die kant. Dit is redelik algemene items, die totale koste mag nie meer as USD $ 20 wees nie. Gereedskap Een Arduino -opstelling (Arduino Duemilanove, Arduino IDE, rekenaar, USB -kabel) Gewone elektriese gereedskap (multimeter, soldeersoldeergeweer, draadknipsels, draadsnyer) Alles wat met Arduino verband hou, kan wees gevind by https://www.arduino.cc. Gaan voort met die bouwerk!

Stap 1: Bedraad die LED -matriks

Bedrading van die LED -matriks
Bedrading van die LED -matriks
Bedrading van die LED -matriks
Bedrading van die LED -matriks

Om 'n LED te laat brand, moet albei sy leidings verbind word. As ons 'n paar penne aan elk van die 18 LED's (9 rooi, 9 groen) sou toewy, sou ons vinnig die penne op die Arduino opraak. Met multiplexing sal ons egter al die LED's met slegs 9 penne kan aanspreek! Die LED's is gegroepeer in kolomme van drie, en hul katodes is gegroepeer in rye van sesse. Deur 'n spesifieke anodelyn hoog en 'n spesifieke katodelyn laag te stel en 'n hoë impedansie op al die ander anode- en katodelyne te hê, kan ons kies watter LED ons wil laat brand, aangesien daar slegs een moontlike pad is wat die stroom kan neem.. Die huidige pad in hierdie geval word in blou getoon, maar wat as u meer as een LED op verskillende lyne wil verlig? Ons sal volharding van visie gebruik om dit te bereik. Deur pare LED -lyne baie vinnig te kies, gee dit die illusie dat al die geselekteerde LED's gelyktydig brand.

Stap 2: LED Matrix -uitleg

LED Matrix -uitleg
LED Matrix -uitleg
LED Matrix -uitleg
LED Matrix -uitleg

Die onderstaande kringdiagram toon hoe die LED's fisies aangesluit is (G1-G9: groen LED's, R1-R9: rooi LED's). Hierdie diagram is vir enkelrooi en groen LED's, as u rooi/groen LED's met 'n gewone katode gebruik, is daar slegs een katodebeen per rooi/groen paar. Die rooi en groen anodelyne gaan in die PWM -penne van die Arduino (penne 3, 5, 6, 9, 10, 11 op die Duemilanove), sodat ons effekte kan hê soos om later te vervaag. Die katodelyne gaan in penne 4, 7 en 8. Elke katode- en anodelyn het 100 ohm weerstande vir beskerming.

Stap 3: Spreek die LED Matrix aan

Vir die tic tac toe -kode moet ons die volgende inligting oor die LED's kan stoor: - of 'n LED brand of nie - as dit rooi of groen is, 'n manier om dit te doen is om die staat te stoor in 'n 9-sel skikking, met drie syfers om die toestand voor te stel (0 = af, 1 = rooi aan, 2 = groen aan). Elke keer as ons die toestande van die LED moet nagaan, byvoorbeeld om te kyk of daar 'n wenvoorwaarde is, moet ons deur die skikking fietsry. Dit is 'n werkbare metode, maar taamlik onhandig. 'N Meer vaartbelynde metode sou wees om twee groepe van nege bisse te gebruik. Die eerste groep van nege bisse stoor die aan-af-status van die LED's, en die tweede groep van nege bisse stoor die kleur. Dan word die manipulering van die LED -toestande eenvoudig 'n kwessie van bietjie rekenkundig en verskuif. Hier is 'n werkende voorbeeld. Kom ons sê ons teken ons tic-tac toe-rooster grafies en gebruik eers 1s en 0s om die aan-af-status voor te stel (1 is aan, 0 is af): 000 000 = matriks met links onder LED LED 100 100 010 = matriks met diagonaal LED's brand 001 As ons die selle links onder opsom, kan ons die voorstellings hierbo as 'n reeks stukkies skryf. In die eerste geval sou dit 100000000 wees, en in die tweede geval sou dit 001010100 wees. As ons dit as binêre voorstellings beskou, kan elke reeks stukkies saamgevat word tot 'n enkele getal (256 in die eerste geval, 84 in die tweede geval). Dus, in plaas van om 'n skikking te gebruik om die toestand van die matriks te stoor, kan ons net 'n enkele nommer gebruik! Net so kan ons die kleur van die LED op dieselfde manier voorstel (1 is rooi, 0 is groen). Kom ons neem eers aan dat al die LED's brand (dus word die aan-af-status deur 511 voorgestel). Die onderstaande matriks sal dan die kleurtoestand van die LED's voorstel: 010 groen, rooi, groen 101 rooi, groen, rooi 010 groen, rooi, groen. As ons die LED -matriks vertoon, hoef ons net deur elk van die stukkies te blaai, eers in die aan-af toestand, en dan in die kleur toestand. Byvoorbeeld, laat ons sê ons aan-af-toestand is 100100100, en die kleurtoestand is 010101010. Hier is ons algoritme om die LED-matriks te verlig: Stap 1. Doen 'n stukkie byvoeging van die aan-af-toestand met 'n binêre 1 (dws bit maskering). Stap 2. As dit waar is, brand die LED. Doen nou 'n bietjie byvoeging van die kleurtoestand met 'n binêre 1. Stap 3. As dit waar is, lig die rooi LED op. As dit onwaar is, lig die groen LED op. Stap 4. Skuif beide die aan-af toestand en kleurtoestand, een bietjie na regs (dws bit verskuiwing). Stap 5. Herhaal stap 1 - 4 totdat al nege bisse gelees is. Let daarop dat ons die matriks agteruit vul - ons begin met sel 9 en gaan dan terug na sel 1. Die aan -af- en kleurtoestande word ook gestoor as 'n ongetekende heelgetal (woord) in plaas van 'n getekende heelgetal. Dit is omdat ons as ons nie versigtig is nie, die teken van die veranderlike per ongeluk kan verander as ons nie versigtig is nie. Aangeheg is die kode vir die verligting van die LED -matriks.

Stap 4: Bou die raakvlak

Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak
Die bou van die raakvlak

Die raakvlak is gemaak van 'n vel dun akriel, groot genoeg om oor die LED -matriks te lê. Plak dan die ry- en kolomdrade vas op die akrielblad met duidelike band. Duidelike band word ook gebruik as die isolerende afstandhouer tussen die drade, by die kruisings. Gebruik skoon gereedskap om te verhoed dat vingervet aan die kleefkant van die band kom. Vingerafdrukke lyk nie net lelik nie, maar maak die band minder taai. Sny die een kant van elk van die lyne af en soldeer die ander kant aan 'n langer draad. Soldeer 'n weerstand in lyn met die drade, voordat u aan verbindings soldeer. Die weerstande wat hier gebruik word, is 674k, maar enige waarde tussen 10k en 1M behoort goed te wees. Die verbindings met die Arduino word gemaak met behulp van die 6 analoog penne, met penne 14-16 aan die rye van die draadroosters en penne 17-19 gekoppel aan die kolomme.

Stap 5: Die raakvlak - hoe dit werk

Die raakvlak - hoe dit werk
Die raakvlak - hoe dit werk
Die raakvlak - hoe dit werk
Die raakvlak - hoe dit werk

Net soos ons 'n dwarsbalk -multiplexer gebruik het om 'n LED -matriks met minimale penne op te stel, kan ons 'n soortgelyke dwarsbalk -multiplexer gebruik om 'n raaksensor -skikking op te stel, wat ons dan kan gebruik om die LED's te aktiveer. Die konsep vir hierdie raakvlak is eenvoudig. Dit is in wese 'n draadrooster, met drie kaal drade wat in rye loop, en drie kaal drade wat in kolomme bokant die rye loop. By elke kruispunt is 'n klein vierkant isolasie wat verhoed dat die twee drade raak. 'N Vinger wat die kruising raak, sal met albei drade in aanraking kom, wat 'n groot, maar eindige weerstand tussen die twee drade tot gevolg sal hê. 'N Klein, maar waarneembare stroom kan dus via die vinger van die een draad na die ander vloei. Om te bepaal watter kruising ingedruk is, is die volgende metode gebruik: Stap 1: Stel al die kolomlyne op UITGANG LAAG. Stap 2: Stel die rylyne op INPUT, met die interne pullups geaktiveer Stap 3: Neem 'n analoog lesing op elke rylyn totdat die waarde onder 'n gegewe drempel val. Dit vertel jou in watter ry die ingedrukte kruising is. Stap 4: Herhaal stap 1-3, maar nou met die kolomme as insette en die rye as uitsette. Dit vertel jou watter kolom die gekruiste kruising is. Om die gevolge van geraas te verminder, word 'n aantal metings geneem en dan gemiddeld. Die gemiddelde resultaat word dan met 'n drumpel vergelyk. Aangesien hierdie metode net teen 'n drempel kontroleer, is dit nie geskik om gelyktydige perse op te spoor nie. Aangesien tic tac toe om die beurt verloop, is die lees van 'n enkele druk egter voldoende. 'N Skets wat aangeheg is, illustreer.

Stap 6: Alles saamvoeg

Alles aanmekaar sit
Alles aanmekaar sit

Noudat al die individuele komponente klaar is, is dit tyd om alles bymekaar te sit. Bedek die draadrooster op die LED -matriks. Miskien moet u die speldnommers in die LED -matrikskode herrangskik om dit met die draadroostersensor gesinchroniseer te kry. Bevestig die draadrooster met bevestigings of kleefmiddels van u keuse, en plak op 'n lekker speelbord. Voeg 'n skakelaar tussen pen 12 en grond van die Arduino. Hierdie skakelaar wissel tussen 2 -speler -modus en 1 -speler -modus (teenoor die mikrobeheerder).

Stap 7: Programmering van Tic Tac Toe

Aangeheg is die kode vir die spel. Kom ons breek eers die tic tac toe -spel in sy verskillende stappe af, in die modus vir twee spelers: Stap 1: Speler A kies 'n ongevulde sel deur 'n kruising aan te raak. Stap 2: Die LED vir daardie sel brand met die kleur A. Stap 3: Kyk of speler A gewen het. Stap 4: Speler B kies 'n ongevulde sel. Stap 5: Die LED vir daardie sel brand met kleur B. Stap 6: Kontroleer of Speler B gewen het. Stap 7: Herhaal 1-6 totdat daar 'n wenvoorwaarde is, of al die selle gevul is. Lees die selle: Die program loop tussen die lees van die rooster en die vertoning van die LED-matriks. Solank die roostersensor nie 'n waarde van nul registreer nie, sal hierdie lus voortgaan. As 'n kruising ingedruk word, stoor die gedrukte veranderlike die posisie van die ingedrukte sel. Kontroleer of die sel nie gevul is nie: Wanneer 'n posstandlesing verkry word (veranderlike ingedruk), word dit vergelyk met die huidige selstatus (gestoor in die veranderlike GridOnOff) met behulp van 'n bietjie wysheid. As die ingedrukte sel nie gevul is nie, gaan dan voort met die aansteek van die LED, anders gaan u terug na die lees van die selle. Deur die kleure te tik: 'n Booleaanse veranderlike, Turn, word gebruik om aan te teken wie se beurt dit is. Die LED -kleur wat gekies word wanneer 'n sel gekies word, word bepaal deur hierdie veranderlike, wat elke keer as 'n sel gekies word, afwissel.). Twee bitvisse byvoegings word gebruik om 'n speler se gevulde posisies met die wenvoorwaardes te vergelyk. As daar 'n wedstryd is, vertoon die program 'n wenroetine, waarna dit 'n nuwe wedstryd begin. Of kyk of daar gelykop is: as daar nege draaie aangeteken is en daar nog nie 'n wenvoorwaarde is nie, dan is die wedstryd gelykop. Die LED's word dan vervaag en 'n nuwe speletjie word begin. Skakel oor na een speler -modus: as die skakelaar in die aan -posisie is, gaan die program in een speler -modus, met die menslike speler wat eers begin. Aan die einde van die beurt van die menslike speler kies die program eenvoudig 'n ewekansige sel. Dit is duidelik dat dit nie die slimste strategie is nie!

Stap 8: Opmerkings en verdere verbeterings

Hier is 'n video wat die een -speler -modus wys, met die program wat heeltemal willekeurige bewegings speel: Die program wat hier getoon word, is slegs 'n minimale weergawe van kaalbene. Hiermee kan u baie ander dinge doen: 1) Verlig LED's drie op 'n slag Die huidige kode vertoon slegs een LED tegelyk. Met die bedrading wat hier getoon word, is dit egter moontlik om alle LED's gelyktydig aan een katodelyn aan te steek. Dus, in plaas daarvan om deur al die nege posisies te ry, hoef u slegs deur die drie katodelyne te fiets. flikkerende. Deur onderbrekings te gebruik, kan die tydsberekening van die LED's presies beheer word en sal dit lei tot 'n gladder vertoning. toe -speler. Hoop dat u dit net so geniet het om te lees as wat ek dit geniet het!

Aanbeveel: