Stap 11: Achterwaarts draaien
Bewegen van de robot voorwaarts en achterwaarts is niet genoeg als we willen dat het vermijden van hindernissen. Het gewenste resultaat is voor de robot te detecteren het obstakel, zet in een andere richting en blijven lopen. Natuurlijk, het kan gewoon een back-up en zet daarna, maar de turn efficiënter zou zijn als de robot eerst een back-up naar rechts en dan die de robot kan draai aan het recht draait als het loopt achteruit als u het middelpunt van de servo en de drempelniveaus een beetje richting de rechterzijde wijzigt links. Dit verandert ook het evenwicht van de robot, die gemakkelijk kan leiden tot een van zijn voorpoten stijgen hoger dan de andere. U kunt dit probleem oplossen door een beetje beweging toe te voegen aan het verlaagde been, verhoging van het in de lucht:
De nieuwe moveBackRight() functie is vergelijkbaar met de functie van de moveBack() in
in het vorige voorbeeld.
1. het verkeer van de achterste servo wordt verminderd met 6 graden, die het middelpunt naar rechts zal verplaatsen. Zoals we eerder hebben opgemerkt, is de gewijzigde achterzijde servo positie verandert waarschijnlijk het evenwicht van de gehele robot. Om dit te verklaren, voegen we 9 graden aan de frontLeftUp-waarde. Als om het even welk van uw eigen robot de benen in de lucht of sleept blijven, kunt u vergroten of verkleinen deze waarden desgewenst.
// walkerTurnBackward.pde - Two servo walker. Turn backward. #include Servo frontServo; Servo rearServo; int centerPos = 90; int frontRightUp = 72; int frontLeftUp = 108; int backRightForward = 75; int backLeftForward = 105; void moveBackRight() 1 { frontServo.write(frontRightUp); rearServo.write(backRightForward-6); delay(125); frontServo.write(centerPos); rearServo.write(centerPos-6); delay(65); frontServo.write(frontLeftUp+9); rearServo.write(backLeftForward-6); delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); } void setup() { frontServo.attach(2); rearServo.attach(3); } void loop() { moveBackRight(); delay(150); //time between each step taken, speed of walk }