Slowing down servo's


hi guys
i new arduino (5 days in  :d)

i have put code control 4 legged bot (quadbot). want slow movement down slowing servos.

is possible without having re-write code? want use pot4 control speed (0 being fastest , 450 slowest) , reverse when going backwards(ie. 1021 fastest , 650 slowest) while still giving "forward" or "backward" instruction throught pot4. pot4 returns "center" value servo speed must reset.

below code wrote (only been coding of 5 days  :smiley-mr-green:), please give example well.

(the code below work @ fixed speed. tested , confirmed.)

code: [select]
#include <servo.h>

  //serov's//

  servo frh;  //front right hip//
  servo frk;  //front right knee//             
  servo brh;  //back right hip//
  servo brk;  //back right knee//
  servo flh;  //front left hip//
  servo flk;  //front left knee//
  servo blh;  //back left hip//
  servo blk;  //back left knee//

  //local constants , variables//

  const int pot4 = a3; //forwards backwards - left pot//

  const int pot4c = 546; //the center position of pot.( 0 - 1021 range)//

  int speed=50;       //the delay between movements//
  int swing=500;      //the amount of lateral movement//
  int lift=300;       //the amount vertical movement//
  int stretch=500;    //knee movement stretch//
  int val4;            //used store controller position//
 
  int flhcenter = 1350;
  int frhcenter = 1350;
  int blhcenter = 1350;
  int brhcenter = 1300;
  int flkcenter = 1500;  //these servo centering positions read constants.h//
  int frkcenter = 1350;
  int blkcenter = 1150;
  int brkcenter = 1200;
 
 
void setup() {
 
  serial.begin(9600);

  //attach seros pwm outputs - mega//

  flk.attach(2);   //flk red//
  frh.attach(3);   //frh purple//
  brh.attach(4);   //brh black//
  blh.attach(5);   //blh green//
  flh.attach(6);   //flh blue//
  frk.attach(7);   //frk brown//
  blk.attach(8);   //blk yellow//
  brk.attach(9);   //brk white//

  // centering servo's//
 
  flh.writemicroseconds(flhcenter);  //front left hip//                   
  frh.writemicroseconds(frhcenter);  //front right hip//
  blh.writemicroseconds(blhcenter);  //back left hip//
  brh.writemicroseconds(brhcenter);  //back right hip//
  flk.writemicroseconds(flkcenter);  //front left knee//
  frk.writemicroseconds(frkcenter);  //front right knee//
  blk.writemicroseconds(blkcenter);  //back left knee//
  brk.writemicroseconds(brkcenter);  //back right knee//

  delay(1000);
}
void loop(){

  analogread(pot4); //a3 left thumb frowards-backwards//
  val4 = analogread(pot4);

  if (val4 < (pot4c-2)){
    forwards();
   }
  else if (val4 > (pot4c+20)){
    backwards();
  }
  else {
    center();
  }
   delay(10);
}

void center(){
   
    flh.writemicroseconds(flhcenter);                     
    frh.writemicroseconds(frhcenter); 
    blh.writemicroseconds(blhcenter); 
    brh.writemicroseconds(brhcenter); 
    flk.writemicroseconds(flkcenter); 
    frk.writemicroseconds(frkcenter); 
    blk.writemicroseconds(blkcenter); 
    brk.writemicroseconds(brkcenter);
  }
 
  void forwards(){
 
    flk.writemicroseconds(flkcenter-lift);
    brk.writemicroseconds(brkcenter-lift);
    delay(speed);
    flh.writemicroseconds(flhcenter+swing);
    brh.writemicroseconds(brhcenter-swing);
    delay(speed);
    flk.writemicroseconds(flkcenter);
    brk.writemicroseconds(brkcenter);
    delay(speed);
    flh.writemicroseconds(flhcenter);
    brh.writemicroseconds(brhcenter);
    delay(speed);
    frk.writemicroseconds(frkcenter-lift);
    blk.writemicroseconds(blkcenter-lift);
    delay(speed);
    frh.writemicroseconds(frhcenter-swing);
    blh.writemicroseconds(blhcenter+swing);
    delay(speed);
    frk.writemicroseconds(frkcenter);
    blk.writemicroseconds(blkcenter);
    delay(speed);
    frh.writemicroseconds(frhcenter);
    blh.writemicroseconds(blhcenter);
    delay(speed);
  }
 
  void backwards(){
   
    flk.writemicroseconds(flkcenter-lift);
    brk.writemicroseconds(brkcenter-lift);
    delay(speed);
    flh.writemicroseconds(flhcenter-swing);
    brh.writemicroseconds(brhcenter+swing);
    delay(speed);
    flk.writemicroseconds(flkcenter);
    brk.writemicroseconds(brkcenter);
    delay(speed);
    flh.writemicroseconds(flhcenter);
    brh.writemicroseconds(brhcenter);
    delay(speed);
    frk.writemicroseconds(frkcenter-lift);
    blk.writemicroseconds(blkcenter-lift);
    delay(speed);
    frh.writemicroseconds(frhcenter+swing);
    blh.writemicroseconds(blhcenter-swing);
    delay(speed);
    frk.writemicroseconds(frkcenter);
    blk.writemicroseconds(blkcenter);
    delay(speed);
    frh.writemicroseconds(frhcenter);
    blh.writemicroseconds(blhcenter);
    delay(speed);
   
  }


thanks, appreciated.

have tried adjusting 'speed' variable based on value of pot?  decrease move away center?


Arduino Forum > Using Arduino > Project Guidance > Slowing down servo's


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62