Acrob006: Rozdiel medzi revíziami
Zo stránky SensorWiki
Nová stránka: < Previous | Home | Next > < Previous | Home | Next > |
Bez shrnutí editace |
||
Riadok 1: | Riadok 1: | ||
[[Acrob005|< Previous]] | [[Acrob|Home]] | [[Acrob007|Next >]] | |||
== Basic movements. Finally! == | |||
[[Obrázok:DifferentialKinematics.png|center]] | |||
Robot používa dva modifikované servomotory. Majú trojvodičové pripojenie, dva vodiče slúžia na napájanie, | |||
tretí je riadiaci signál. Rýchlosť a smer otáčania sa riadia šírkou impulzu. Pôvodne slúžil na nastavenie | |||
polohy v rozsahu 0-180 stupňov. Po úprave signál pre 90 st. motorček zastaví, 180 roztočí max. rýchlosťou | |||
jedným smerom a 0 max. rýchlosťou druhým smerom (TODO: upraviť knižnicu z polohy na rýchlosť). | |||
[[Obrázok:ServoAnimation.gif|center]] | |||
Tento program ilustruje použitie základných pohybových príkazov. Všimnite si použitie | |||
knižnice Servo.h: | |||
<source lang="c"> | |||
#include <Servo.h> // this program uses the Servo library | |||
Servo LeftServo; // create servo object to control both servos | |||
Servo RightServo; // a maximum of eight servos can be created | |||
#define FAST 50 // try to change these values during the test | |||
#define SLOW 5 | |||
void setup() | |||
{ | |||
LeftServo.attach(9); // attaches the servo on pin 9 to the servo object | |||
RightServo.attach(10); // attaches the servo on pin 10 to the servo object | |||
} | |||
void loop() | |||
{ | |||
// FAST FORWARD | |||
LeftServo.write(90 + FAST); // value 90 is in middle, i.e. stop | |||
RightServo.write(90 - FAST); // mirrored position | |||
delay(1500); // go fast forward for 1,5 s | |||
// SLOW FORWARD | |||
LeftServo.write(90 + SLOW); // test varying speed of movement | |||
RightServo.write(90 - SLOW); | |||
delay(1500); | |||
LeftServo.write(90 - FAST); // FAST BACKWARD | |||
RightServo.write(90 + FAST); | |||
delay(1500); | |||
LeftServo.write(90 + FAST); // ROTATE (PIVOT) RIGHT | |||
RightServo.write(90 + FAST); | |||
delay(1500); | |||
LeftServo.write(90 - FAST); // ROTATE (PIVOT) LEFT | |||
RightServo.write(90 - FAST); | |||
delay(1500); | |||
LeftServo.write(90); // STOP both motors | |||
RightServo.write(90); | |||
for(;;); // stop the program operation here | |||
} /* End of Loop */ | |||
</source> | |||
[[Obrázok:ServoConnection.png|center]] | |||
[[Acrob005|< Previous]] | [[Acrob|Home]] | [[Acrob007|Next >]] | [[Acrob005|< Previous]] | [[Acrob|Home]] | [[Acrob007|Next >]] |
Verzia z 12:07, 12. jún 2010
< Previous | Home | Next >
Basic movements. Finally!
Robot používa dva modifikované servomotory. Majú trojvodičové pripojenie, dva vodiče slúžia na napájanie, tretí je riadiaci signál. Rýchlosť a smer otáčania sa riadia šírkou impulzu. Pôvodne slúžil na nastavenie polohy v rozsahu 0-180 stupňov. Po úprave signál pre 90 st. motorček zastaví, 180 roztočí max. rýchlosťou jedným smerom a 0 max. rýchlosťou druhým smerom (TODO: upraviť knižnicu z polohy na rýchlosť).
Tento program ilustruje použitie základných pohybových príkazov. Všimnite si použitie knižnice Servo.h:
#include <Servo.h> // this program uses the Servo library
Servo LeftServo; // create servo object to control both servos
Servo RightServo; // a maximum of eight servos can be created
#define FAST 50 // try to change these values during the test
#define SLOW 5
void setup()
{
LeftServo.attach(9); // attaches the servo on pin 9 to the servo object
RightServo.attach(10); // attaches the servo on pin 10 to the servo object
}
void loop()
{
// FAST FORWARD
LeftServo.write(90 + FAST); // value 90 is in middle, i.e. stop
RightServo.write(90 - FAST); // mirrored position
delay(1500); // go fast forward for 1,5 s
// SLOW FORWARD
LeftServo.write(90 + SLOW); // test varying speed of movement
RightServo.write(90 - SLOW);
delay(1500);
LeftServo.write(90 - FAST); // FAST BACKWARD
RightServo.write(90 + FAST);
delay(1500);
LeftServo.write(90 + FAST); // ROTATE (PIVOT) RIGHT
RightServo.write(90 + FAST);
delay(1500);
LeftServo.write(90 - FAST); // ROTATE (PIVOT) LEFT
RightServo.write(90 - FAST);
delay(1500);
LeftServo.write(90); // STOP both motors
RightServo.write(90);
for(;;); // stop the program operation here
} /* End of Loop */
< Previous | Home | Next >