Arduino-Smart avstånd kontrollerade insekt (11 / 15 steg)
Steg 11: Vrida bakåt
Flytta roboten framåt och bakåt är inte tillräckligt om vi vill undvika hinder. Rekommenderad resultatet är för roboten att upptäcka hindret, slå i en annan riktning och fortsätta att gå. Naturligtvis, det kunde bara tillbaka upp och vända efter det, men tur skulle vara mer effektiv om roboten först säkerhetskopierar till höger och sedan till vänster roboten kan förvandlas till höger som det går bakåt om du ändrar mittpunkten för servo och tröskelvärden lite mot höger sida. Detta kommer också ändra balansen av robot, vilket lätt kan leda till en av frambenen stiger högre än den andra. Du kan lösa detta problem genom att lägga lite av rörelse till sänkt benet, höja den i luften:
Den nya moveBackRight() funktionen liknar funktionen moveBack() i
i föregående exempel.
1. bakre servo rörelse minskas med 6 grader, vilket kommer att flytta sin mittpunkt till höger. Som vi noterat tidigare, kommer ändrade bakre servo position troligen förändra balansen i hela roboten. För att ta hänsyn till detta, lägger vi 9 grader till värdet frontLeftUp. Om någon av din egen robot ben kvar i luften eller dra, kan du öka eller minska dessa värden som behövs.
walkerTurnBackward.pde - två servo walker. Vända bakåt.
#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); tid mellan varje steg som tas, hastigheten på promenad
}