Operácie

Acrob006: Rozdiel medzi revíziami

Z SensorWiki

(Nová stránka: < Previous | Home | Next > < Previous | Home | Next >)
 
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 >]]
 
[[Acrob005|< Previous]] | [[Acrob|Home]] | [[Acrob007|Next >]]

Verzia zo dňa a času 12:07, 12. jún 2010

< Previous | Home | Next >

Basic movements. Finally!

DifferentialKinematics.png

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ť).

ServoAnimation.gif

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 */
ServoConnection.png



< Previous | Home | Next >