Stap 4: De Code
U zult een Micro-goochelaar (maakt niet uit welke versie) en de microM-bibliotheek die kan worden gedownload vanaf hier: https://sites.google.com/site/daguproducts/home/arduino-libraries
Desgewenst kunt u een andere Arduino board. U zult waarschijnlijk moeten een breadboard en jumper draden aansluiten een IR-ontvanger en de servo's. U kunt gebruik maken van Ken Shirriff multi-protocol IR bibliotheek die kan hier worden gevonden: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Zoals je kunt zien heb ik mijn code opgesplitst in logische secties en leg ze in verschillende tabbladen. Dit maakt het veel gemakkelijker om uw code te bewerken.
[TicTacToe] dit eerste tabblad is uw belangrijkste code. Het heeft uw Setup -functie waar alle uw initialisatie wordt gedaan en de loop -functie, waar het spel wordt gespeeld. De loop -functie bestaat uit 3 delen.
- Modusselectie - het programma zoekt naar alle nieuwe IR-opdrachten en modi indien nodig wordt gewijzigd.
- Spelers bewegen - wanneer is het jouw beurt deze sectie kunt u uw verhuizing te maken.
- Robots bewegen - afhankelijk van het niveau van moeilijkheid, verschillende strategieën zijn die hier zijn geselecteerd.
Nadat een zet is het aangebracht wordt op de seriële monitor weergegeven. De robot controleert vervolgens als een meer beweegt kunnen worden gemaakt en iedereen heeft gewonnen.
[IOpins.h] dit tabblad is u bedradingsschema. Als u de naam wilt wijzigen is die pin een servo aangesloten ga dan gewoon het pin-nummer hier Als de IR is ontvanger bevestigd aan de D4 niet voorkomt.
[Constants.h] dit tabblad bevat constanten die worden gebruikt binnen het programma. IR-ontvangers codes en vooraf ingestelde waarden voor de grijper en pins mechanisme servo's zijn die hier zijn gedefinieerd. Als u robot anders zijn naar de mijne zullen zal u wilt veranderen van deze waarden aan. Alle waarden zijn in µS voor gebruik met de opdracht writeMicroseconds() .
[Kalibreren] deze functie wordt gebruikt om te leren van de robot waar elke positie op het bord is. In eerste instantie alle posities zijn gelijk aan beide arm servo's wordt in de middenpositie. Als u de arm leren, worden nieuwe posities opgeslagen in de processors EEPROM dus dat zelfs als de stroom is uitgeschakeld op de robot zal niet vergeten wat je geleerd dat het.
[eepromFunctions] wanneer het programma eerst de EEPROM loopt wordt gelezen, zodat de robot de standpunten van de Raad van bestuur weet. Wanneer u de robot kalibreert worden de nieuwe posities naar de EEPROM geschreven, zodat wanneer de stroom is uitgeschakeld de robot niet de posities vergeten zal.
[DisplayGrid] het spel wordt weergegeven op de seriële monitor voor foutopsporing en verstrekken u voor toneelstuk Tic Tac Toe tegen de tovenaar van de Micro met behulp van slechts een afstandsbediening. De robot is alleen nodig om uw vrienden en familie te imponeren en maken het spel leuker om te spelen. 0 vertegenwoordigt een lege positie. De robots ballen worden aangeduid met een 1. Je ballen worden vertegenwoordigd door een 2.
[MoveArm] zoals de naam doet vermoeden, deze functie wordt de arm van de ene positie verplaatst op het bord naar de andere. mijn code breekt onderweg in kleine stappen zodat de arm langzaam en vloeiend beweegt. Grotere bewegingen zijn onderverdeeld in meer stappen zodat alle bewegingen met ongeveer dezelfde snelheid gebeuren.
[CheckForWin] nadat elk verplaatst het bestuur wordt gecontroleerd om te zien of er een winnaar. Alle rijen, kolommen en diagonalen worden gecontroleerd op 3 van de zelfde.
[ClearBoard] aan het eind van het spel aan robot verzamelt alle ballen en zet ze terug in hun parachute. De robot is afhankelijk van geheugen om te bepalen als de bal tot de speler of de robot behoort en de bal terug naar de juiste parachute. De pin-mechanisme verhoogt de ballen hoog genoeg is voor de grijper om ze te verzamelen en vervolgens verlaagt de ballen weer zodat de arm zich vrij kan bewegen.
[RandomMove] op het eenvoudigste niveau, alle van de bewegingen van de robots zijn willekeurig. Deze modus is bedoeld voor het onderwijzen van kinderen het spel voor de eerste keer. Een willekeurige beweging wordt ook gebruikt door de robot wanneer andere strategieën mislukken. Om te plezierig spel minder predicable (meer), wanneer het dat de robots schakelen om een spel te starten zal de robot beginnen met een willekeurige beweging.
[BlockPlayer] deze functie wordt gebruikt door de robot om te kijken van uw bewegingen en bepalen of u ongeveer om te winnen. Als de robot wordt gedetecteerd hebt u twee ballen in een lijn met de derde positie vrij dan het zal de bal in de vrije positie te blokkeren u plaats. Deze functie wordt niet gebruikt in de eenvoudigste niveau die is bestemd voor het onderwijzen van kinderen-hoe te spelen.
[MakeLine] deze functie is vergelijkbaar met [BlockPlayer], behalve dat het wordt gebruikt door de robot om 3 op een rij. Deze functie wordt niet gebruikt in de gemakkelijkste niveaus.
[SecondMove] als een spel van Tic Tac Toe hoeft niet veel beweegt, de tweede stap is vaak waar uw strategie zal meespelen. De robot gebruikt dit in het moeilijkste niveau om te proberen en jou verslaan. Ik geef toe, dit deel van de code zou kunnen worden verbeterd. Ik ben niet goed in strategie spelletjes.