Arduino-Smart avstånd kontrollerade insekt (9 / 15 steg)
Steg 9: Programmering på promenad
Gå framåt
Om du driver upp Arduino kör koden som svänger endast en servo (se avsnittet tidigare "Flytta Servo"), det börjar gunga på dess främre eller bakre benen. Gå kommer att framåt kräva samordning mellan både främre och bakre benen. När servon flyttar på samma tempo, men åt motsatt håll, börjar roboten att gå. Här är lite kod som gör att roboten gå framåt:
Låt oss ta en titt på koden:
1. Detta är mittläget för servon. Nittio grader är precis hälften av 180 möjliga grader av rotation.
2. högsta position främre benet att stiga.
3. högsta position vänster främre ben att stiga. 4. högsta position höger bak benet kommer att böja till. 5. högsta position vänster bakre ben kommer att böja till.
6. moveForward funktion visar servon först till motsatta riktningar. De variabler som angetts i föregående raderna anger hur långt varje servon kommer att rotera. Innan vi slår i en annan riktning, berättar vi servon att rotera mot en fördefinierad mittpunkt för en kort tidsperiod på tid. Detta säkerställer att servon inte börja drifting i otakt. Vi återvänder till mittpunkten i slutet av varje steg att göra promenaden mer elegant och effektiv.
7. anropa funktionen moveForward upprepade gånger inom slingan, som gör vår robot flytta ett steg framåt. Den efterföljande fördröjningen styr hur länge roboten väntar innan tar sitt nästa steg. Ta bort förseningen är motsvarande med roboten springa så fort som möjligt.
walkerForward.pde - två servo walker. Framåt. < br > / / c Kimmo Karvinen & Tero Karvinen < en href = "http://BotBook.com" rel = "nofollow" > http://BotBook.com
< /a >
uppdaterad - 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); tid mellan varje steg som tas, hastigheten på promenad
} < /p >