Autonomus vägg följande hinder att undvika Arduino Rescue Bot (6 / 7 steg)
Steg 6: Koden
Jag började med det första logiska steget, jag laddade upp programmet PING exempel som är inbyggd i arduino språket och provat den ute. Jag ändrade då det för att läsa 7 pingar var vi med. Detta blev Ping testprogrammet nedan, som var använd mer sistnämnd att säkerställa rätt anslutningar och vid utveckling av vissa delar av den viktigaste koden.
Nästa steg var ett enkelt test av Sabertooth. Detta var första gången som jag någonsin använt en innan, så jag skrev ett litet program som bara körde framåt, sedan tillbaka, sedan vände åt, sedan höger. Det är ett enkelt program, men återigen mycket användbar. Vi slutade upp återuppbygga och omkoppling roboten flera gånger och efter varje gång vi skulle köra detta enkla program för vi hade korrekt ansluten motorerna.
Nästa program skrevs med en tidig mock upp av vår robot från en skrot stycke aluminium, ett par servomotorer, ping och kartong (jag tejpade pingar till papp att montera dem), kan du se en bild på vår lilla junk bot nedan. Det var kastas tillsammans i ungefär en timme men tjänat sitt syfte. Jag började med att läsa höger sensorerna. Roboten skulle driva så länge värdena som sensorn var samma (kvadraten på väggen) och det skulle driva en motor snabbare sedan den andra om värdena som var olika. Detta korrigeras någon drift som skulle inträffa. Detta är mycket viktigt, även om du kör 2 motorer med samma hastighet de alltid vänder inte i exakt samma takt, särskilt om de vänder i motsatta riktningar.
När denna kod arbetade började jag att övervaka främre högra sensorn för att se om det gick någonsin dramatiskt steg, skulle detta bara ske om roboten nådde kanten av en vägg. Efter en 90 graders sväng det skulle fortfarande få se långa avstånd till sidovägg som kan vara ett problem, även om det köra framåt från skulle det det bli förvirrad när den första sensorn slå nästa väggen, så en speciell algoritm skrevs att använda de andra sensorerna till kvadrat upp mot en annan vägg och driva fram tills båda sida sensorerna läser väggen igen. Jag har senare lagt i några fler undantag att komma runt ingången till varje rum och en kontroll av de främre sensorerna för inuti hörnen.
Jag är säker på att de flesta människor som läser detta gör så att de vill lära sig hur man gör ett hinder att undvika robot, detta var ett mycket ändamål byggt robot, och vissa delar av koden som används under vår tävling skulle vara till någon nytta för de flesta av er, så jag beslöt att ge 2 avskalade versioner. Jag vet hur irriterande det kan vara att hitta exempelkoden som gör exakt vad du behöver, då måste gå igenom och radera hälften av vad du behöver. De är fortfarande funktionell som hinder undvika robotar förutom att jag tagit bort de delar som kommunicerar med kameran och Speakjet skölden. Detta är faktiskt den kod som användes under vår "Engineering dag" demo av roboten så 7 segmenterar skärmar slumpmässigt generera nya nummer när den når en inre hörn. Vi byggde en liten rektangulär kurs (vår test kurs hade delats efter tävlingen) för händelsen och trodde det skulle vara trevligt för att visa att uppdatera då och då så vi det att slumpmässigt generera nummer. I den kala minsta versionen, jag också ta bort en hel del kod som användes för att hålla reda på varje rum och Visa till 7segment visar.