• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomeRobotUse Parallax Continous Rotation Robotics Servo on ...
Previous Next

Use Parallax Continous Rotation Robotics Servo on pcDuino3

Posted by: admin , October 23, 2014

When it comes to Robotics, Parallax continuous rotation robotics servo is the entry point item that every student needs to master. In this post, we will show how to drive Parallax continuous rotation servo on pcDuino through the linker servo module.

parallax

The datasheet of the parallax continuous rotation servo can be found at 154datasheet. It needs a 50Hz with variable duty cycle to change its direction.

We will use linker servo module that is connected to [D1 D2 V S] slot of the Linker base shield.  The code is as follows:

#include <core.h>

//***************************************
//*function: Rotate clockwire
//*parameters: pwm (select the channel of PWM)
//*          Speed (100<Speed<300)
//*Description: The larger the value of speed, the slower the rotation. 
//***************************************
void forward(unsigned char pwm,unsigned int Speed)
{
  if((Speed>100)&&(Speed<300))
  {
   //cammand : S + PWM + Duty_H + Duty_L + E
   Serial.print('S');   //Start
   Serial.print(char(pwm)); //PWM channel selection
   Serial.print(char(Speed/0xFF)); //Duty HIGH
   Serial.print(char(Speed%0xFF)); //Duty LOW
   Serial.print('E'); //End
  }
}

//***************************************
//*function: Servo rotates counter-clockwise
//*Parameter: pwm  (select the channel of PWM)
//*          Speed (300<Speed<500)
//*Description:The smaller the value of Speed, the slower the rotation. 
//***************************************
void backward(unsigned char pwm,unsigned int Speed)
{
  if((Speed>300)&&(Speed<500))
  {
   Serial.print('S');   //Start
   Serial.print(char(pwm)); //PWM channel selection
   Serial.print(char(Speed/0xFF)); //Duty HIGH
   Serial.print(char(Speed%0xFF)); //Duty LOW
   Serial.print('E'); //End
  }
}

//***************************************
//*Function:Stop
//*paramter:pwm  (select the PWM channel)
//*          DelayMs (delay value in ms)
//*Description:Stop the servo
//***************************************
void ServoStop(unsigned char pwm,unsigned int DelayMs)
{
  Serial.print('S');   //Start
  Serial.print(char(pwm)); //PWM channel selection
  Serial.print(char(305/0xFF)); //Duty HIGH
  Serial.print(char(305%0xFF)); //Duty LOW
  Serial.print('E'); //End
  delay(DelayMs);
}
 
void setup()
{
  Serial.begin(9600);
  delay(100);
}

void loop()
{

    unsigned int i = 320;
     for(i=100;i<=300;i++)
     {
        forward(1,i);
        delay(50);
     }
     ServoStop(1,1000);
     
     for(i=300;i<=500;i++)
     {
        backward(1,i);
        delay(50);
     }
     ServoStop(1,1000);
}

The video

Share!
Tweet

admin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors