Stap 9: Programmeren van de wandeling
Wandelen naar voren
Als u vermogen tot het uitvoeren van de code die slechts één servo schommels Arduino (Zie de vorige sectie van de "Moving the Servo"), zal het beginnen schommelen op de voorste of achterste poten. Wandelen vereist naar voren coördinatie tussen zowel voorzijde als achterste poten. Wanneer de servo's op hetzelfde tempo, maar in tegengestelde richtingen verplaatst, begint de robot te lopen. Hier is wat code waardoor de robot vooruit lopen:
Laten we eens een blik op de code:
1. Dit is de middenpositie voor de servo's. Negentig graden is precies helft van 180 mogelijk graden voor rotatie.
2. maximale positie het rechter voorpand been zullen oplopen.
3. maximale positie de linker voorste been zullen oplopen. 4. de maximale standpunt het recht achterste been zal buigen aan. 5. maximale positie het achterste linkerbeen zal buigen aan.
6. de moveForward-functie draait de servo's eerste aan tegengestelde richtingen. De variabelen in de voorgaande regels ingesteld hoe ver zal elk van de servo's draaien. Voordat we weer in een andere richting, zullen we de servo's om te draaien naar een vooraf gedefinieerde middelpunt voor een korte spanwijdte van tijd. Dit zorgt ervoor dat de servo's niet beginnen drijven synchroon. We terugkeren naar het middelpunt aan het einde van elke stap de wandeling meer elegante en efficiënt te maken.
7. roept de moveForward functie herhaaldelijk binnen de lus, waardoor onze robot zet een stap vooruit. De daaropvolgende vertraging bepaalt hoe lang de robot moet wachten alvorens de volgende stap. Het verwijderen van de vertraging is het equivalent van het hebben van de robot zo snel als het kan lopen.
// walkerForward.pde - Two servo walker. Forward.<br>// (c) Kimmo Karvinen & Tero Karvinen <a href="http://BotBook.com" rel="nofollow"> http://BotBook.com </a> // updated - Joe Saavedra, 2010 #include Servo frontServo; Servo rearServo; int centerPos = 90; 1 int frontRightUp = 72; 2 int frontLeftUp = 108; 3 int backRightForward = 75; 4 int backLeftForward = 105;5 void moveForward() 6 { frontServo.write(frontRightUp); <p>rearServo.write(backLeftForward);<br>delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); frontServo.write(frontLeftUp); rearServo.write(backRightForward); delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); } void setup() { frontServo.attach(2); rearServo.attach(3); } void loop() { moveForward(); 7 delay(150); //time between each step taken, speed of walk }</p>