Arduino multiple servo's the simple way

Sdílet
Vložit
  • čas přidán 9. 11. 2017
  • A simple way to control multiple servos, for inexperienced people to get animatronics etc going. Full source code is below
    edns.co.nz/robonza/
    Updated code with full sequence control and homing control
    See version 3
  • Věda a technologie

Komentáře • 77

  • @johnpanter
    @johnpanter Před 4 lety +1

    This has been the most usefull thing I've seen on the net today; just what I was after. Many thanks.

  • @nefarious6986
    @nefarious6986 Před 4 lety +1

    It's nice to hear a Kiwi explaining this!

  • @charlesprzechocki2684
    @charlesprzechocki2684 Před 6 měsíci

    Just by watching this video for a short time, you have helped me so so so so much with my project, thank you immensely!

    • @Robonza
      @Robonza  Před 6 měsíci

      Awesome to hear that, thanks

  • @ChristoCJ03
    @ChristoCJ03 Před 5 lety +2

    thanks bro, finally I found way to this, thanks a lot

  • @adioooo6
    @adioooo6 Před 4 lety +1

    answer to all my questions, thank you!

  • @CrisDFF30917
    @CrisDFF30917 Před 2 lety

    To avoid the start jump that servos have when you turn on the power, try to first give 5V to signal pin, then power the servo, it worked for me.

  • @bitekiful
    @bitekiful Před 3 lety +1

    Thank you thank you thank you! Froma complete novice you've helped me gain knowledge. I have some questions. I'm making an xwing and want the wings to open up and r2d2's head to swivel. I used your servo version one code and I want to add more positions. Thanks to you my servo is moving 10° and back to close but I want it to hold in the 10°position for a few seconds before it closes again, also i want it so start off slow ,speed up and slow before it gets to 10° everything i try to add more steps the the animation it doesn't work and I'm not sure why

  • @techparistech2659
    @techparistech2659 Před 2 lety +1

    Excellent job

  • @TRCVJU
    @TRCVJU Před 2 lety

    Very nice. Gr8. Thanks for sharing.

  • @DustinjBailey
    @DustinjBailey Před 2 lety

    This is so incredibly helpful!

    • @Robonza
      @Robonza  Před 2 lety

      Thanks Dustin, I kinda feel bad I have not repaired the source code link when it broke

    • @benporter6576
      @benporter6576 Před rokem

      @@Robonza please check it again! it isn;t working I'm afraid

  • @DJMovit
    @DJMovit Před 3 lety +1

    This is awesome! Thanks for posting it! I have been wanting to make a 3 axis Halloween Skull and now I am one step closer. Now I need to build the platform and movements. I hope to tweak your code to get the head to move loft to right, and and down and hopefully tilt.
    Thanks again for sharing it I greatly appreciate it.

  • @pasternakjdp
    @pasternakjdp Před 2 lety +1

    Thanks so much for this absolutely brilliant. You say the source code is below but it doesn't seem to be, is it still available? Thanks again

  • @Custom3dPrinting4U
    @Custom3dPrinting4U Před 3 lety

    I really appreciate the tutorial. I now have 4 servos wired up but I want to make it to where when i click the button then the code is executed and then returned to home position before executing the rotation. Can you help me?

  • @galagatron5319
    @galagatron5319 Před rokem

    HI. I want to program 4 to 6 servos to do stuff individually. I have a servo driver pca9685. Im trying to make something with these motors and a couple of lights and sound. I do not want batteries. I want to be able to plug this thing in the wall with only one cord not 2. Looks like though I need 2 seperate power supplies. I cant find anything online. Something I buy? A hack? Thanks

  • @ddraigking9031
    @ddraigking9031 Před rokem

    Hello The link in the description isn't working, I loved the video and I'm hoping it'll helped further my knowledge of servo control

  • @JohnBaxterWalker
    @JohnBaxterWalker Před 4 lety

    Probably a daft newbie question. I have loaded the INI file into the Arduino. Where do I add/use the servo0/1/2 CPP and servos H file ?

    • @Robonza
      @Robonza  Před 3 lety

      All files must be added to the project before compiling or it will not compile. Standard practise.

  • @alfiechenery4146
    @alfiechenery4146 Před 3 lety

    Very well explained. Although could you explain the circuit wiring. I can assume how the servos are attached to PWM pins, but I notice a capacitor there. What is it for and how exactly is it wired, and is it essential or is it just like a protection thing

    • @Robonza
      @Robonza  Před 3 lety +1

      The capacitor is there to avoid servo noise getting into the micro power supply and glitching it. It is standard practice. Just about all circuits need power supply capacitors. I have noticed a lot of builders miss this.

  • @k2h215
    @k2h215 Před 4 lety

    Hi sir, can you make a video for your updated code ? I figured out there is a button in pin 2 and my test failed cause I think I made some mistakes.

  • @katalinkristof6383
    @katalinkristof6383 Před 3 lety +2

    Thank you for this awesome tutorial! May I ask some beginner question here? Does it damage the servos if they hold the position for a longer time? Why I'm asking: I am about to program a robot owl, and it should ideally hold a particular position after a movement is done. If I simply detach the servos, gravity would do its job. (Your cat is so cute!!)

    • @Robonza
      @Robonza  Před 3 lety +1

      Servo's are well known to burn out if left "holding" something. The best thing to do with your owl is to counterbalance it if you can. This way it will hold position with no power.

    • @katalinkristof6383
      @katalinkristof6383 Před 3 lety

      @@Robonza thank you for your reply! Counterbalancing will be a problem, but I can program it to end each movement in a stable position (and then detach). I didn't know it was an issue with servos.

    • @Robonza
      @Robonza  Před 3 lety +2

      @@katalinkristof6383 Some high quality servos might deal with it. I guess like a lot of things its a gamble on how long it will last. Detached servos will last the longest

    • @katalinkristof6383
      @katalinkristof6383 Před 3 lety

      @@Robonza well, it's definitely one of the most useful things I learned this month :)

  • @ConnorCain25
    @ConnorCain25 Před rokem

    Hey mate, I tried to get access to the code you made available but the link wouldn't work. iS there any way you could make a new link?. Cheers

  • @joegob100
    @joegob100 Před rokem

    This is so helpful, my level of coding is copy paste and play with values, is there any way to get this code. I am making a prop raven

  • @NeilvanGeffen
    @NeilvanGeffen Před 6 lety

    i use that servo code for my automated blinds :)

  • @ianmoon8764
    @ianmoon8764 Před 2 lety

    Would you be kind enough to upload the code again please as the link does not work. thank you

  • @thachyourlife1828
    @thachyourlife1828 Před 2 lety

    is there no PCA 9685 at this time ?

  • @chriskiepfer450
    @chriskiepfer450 Před 14 dny

    is there a source for the code, the link does not work?

  • @johnkadrich44
    @johnkadrich44 Před 2 lety

    Can I get the code for this, it looks like the link is no longer valid.
    Thanks.

  • @thetooter988
    @thetooter988 Před 4 lety

    Thank you so much, that’s what I needed.

  • @imaad_refai
    @imaad_refai Před 3 lety

    This would be really useful for my college project. I am unable to open those links provided in the decription.

    • @Robonza
      @Robonza  Před 3 lety

      Link fixed. Google and CZcams broke it.

    • @n1spen
      @n1spen Před 3 lety

      @@Robonza i think they have broken it again will not work for me but a very useful vid thanks

    • @Robonza
      @Robonza  Před 3 lety

      @@n1spen I just tested it, its fine. Maybe its blocked for your IP. Try accessing via proxy or get a friend to download it for you

  • @oldfarmhand7714
    @oldfarmhand7714 Před 2 lety

    Hello I tried to look at your source code but it is a blank screen I know this is an old video but I just found your page and I did use a proxy

  • @JohnDoe-wl5wh
    @JohnDoe-wl5wh Před 3 lety

    Would this code work with an Arduino uno? I'm trying to move a robotic arm with 6 servos with an arduino uno, I have an external power supply that provides 7.5 V but I keep getting these weird glitches where only 2 of the 6 servos move. I believe it's because my code has them moving at the same time, however this code allows them to move simultaneously right?

    • @Robonza
      @Robonza  Před 3 lety

      It should work fine. Its not demanding code. Make sure you add the capacitor like I did. Yes this code can expand and move 6

    • @alfiechenery4146
      @alfiechenery4146 Před 3 lety

      I’m having the same issue trying to run 3 servos from a battery. I’m trying to run the servos and the nano all off 4xAA batteries. I suspect I’m maxing out the current draw of the battery and that is causing issues. What’s more weird is when I hit the reset button 2 of the 3 servo move but it’s rarely the same 2. Like it seems random. One time they all moved but then one of them started spasming and twitching a bit. I’m gonna try swapping for a bigger capacitor, and if not putting more batteries in parallel to try to increase the max current output

  • @robertrobert5583
    @robertrobert5583 Před 5 lety

    Thanks for posting this and for sharing the code. When I validate I get this error message though:
    error: 'TICK_TIME' was not declared in this scope

    • @Robonza
      @Robonza  Před 5 lety +2

      That typically means you do not have all the files added to the sketch so it cannot find a value needed. Make sure all files are add to the sketch

    • @robertrobert5583
      @robertrobert5583 Před 5 lety

      @@Robonza thank you for getting back to me so quickly. I think I have all the files: robonza_servo.ver3.ino, servo0.cpp, servo1.cpp, servo2.cpp, servo.h

    • @Robonza
      @Robonza  Před 5 lety +2

      Did you open the INO file using Arduino? TICK_TIME' is clearly in servo..h so that means the h file is not visible to your sketch. Its not an issue with my code.

  • @ico-theredstonesurgeon4380

    So from what i can understand, splitting the code in cpp files makes it possible to run multiple functions simultaneously. Am i right??

    • @Robonza
      @Robonza  Před 4 lety

      its impossible to run thing simultaneously. What it does do is make things tidy and easy to maintain. One rule I try to follow is make my main loop under one page when possible as it makes it easy to read and fix in 5 years time when you forgot how it works.

    • @ico-theredstonesurgeon4380
      @ico-theredstonesurgeon4380 Před 4 lety

      @@Robonza Then how can you control the servos simultaneoulsy without constantly skipping back and foward between them? I watched the video multiple times and downloaded the code to read it but i'm still kinda lost...

    • @Robonza
      @Robonza  Před 4 lety +1

      Each servo is updated sequentially at a rate that appears simultaneous.

    • @ico-theredstonesurgeon4380
      @ico-theredstonesurgeon4380 Před 4 lety

      @@Robonza ohh that makes much more sense... and can i apply the same concept with a pwm servo driver?

  • @kennethkindrich3114
    @kennethkindrich3114 Před 4 lety

    been searching the internet for days and still havnt found an answer. I want to make several servos move with if statements. like, if a servo position is at 70, i want another servo to go to 30....if that makes sense....anyone have any answers?

    • @Robonza
      @Robonza  Před 4 lety

      The code I have supplied will do that. You just need to spend some time using and understanding it.

  • @Surajborate1
    @Surajborate1 Před 3 lety

    Very well explained
    Appreciate your efforts
    Thank you for giving us this readymade
    Please help not able to open link

    • @Robonza
      @Robonza  Před 3 lety

      I just tried the link and it is working for me

    • @Surajborate1
      @Surajborate1 Před 3 lety

      Thank you for replying
      What App or software you are using
      to open this file

    • @Robonza
      @Robonza  Před 3 lety

      Arduino IDE

    • @Surajborate1
      @Surajborate1 Před 3 lety

      @@Robonza Thank you for replying
      I am able to open the link
      Will I be able to make changes and use this for my project
      If yes how to open cpp file

  • @rag2273
    @rag2273 Před 2 lety

    WHICH SERVO IS THIS

  • @thisisrobophil
    @thisisrobophil Před rokem

    the link for the code seems down.. possible to check it please

    • @Robonza
      @Robonza  Před rokem

      Yeah, sorry. I will fix that one day when I setup another website. unless you want to host it

  • @alonsovargas8046
    @alonsovargas8046 Před 2 lety

    Quick question, can anyone share the link to review the code or the code itself? The link doesnt work, Thanks!

    • @Robonza
      @Robonza  Před 2 lety +1

      The link does work, try a proxy site , you may be on a banned internet block due to hackers,

    • @alonsovargas8046
      @alonsovargas8046 Před 2 lety

      @@Robonza thanks! It works

  • @Allanusmonostat
    @Allanusmonostat Před rokem

    I think the link is dead.

  • @ModelSceneryTutorials
    @ModelSceneryTutorials Před 3 lety

    Let me preface this by saying I am not a coder. I an a one time user at the copy and paste level of knowledge.
    I found this script for moving model railroad turnout servos.
    But it is only for one turnout. I have 6 on my layout.
    Would you be so kind as to give me the code to have this work for 6 turnouts and for each turnout, instead of only having 2 position indicator LEDs, I would like to have 2 other LEDS that would be used for a signal light. They would change with when the position LEDs change.
    Thank you for the time, help and patience.
    Gary G
    #include
    // original nscaler control of 1 turnout.
    // constant variables used to set servo angles, in degrees
    const int straight = 90;
    const int divergent = 110;
    // constant variables holding the ids of the pins we are using
    const int divergent_led = 6;
    const int straight_led = 7;
    const int buttonpin = 8;
    const int servopin = 9;
    // servo movement step delay, in milliseconds
    const int step_delay = 70;
    // create a servo object
    Servo myservo;
    // global variables to store servo position
    int pos = straight; // current
    int old_pos = pos; // previous
    void setup()
    {
    // set the mode for the digital pins in use
    pinMode(buttonpin, INPUT);
    pinMode(straight_led, OUTPUT);
    pinMode(divergent_led, OUTPUT);
    // setup the servo
    myservo.attach(servopin); // attach to the servo on pin 9
    myservo.write(pos); // set the initial servo position
    // set initial led states
    digitalWrite(straight_led, HIGH);
    digitalWrite(divergent_led, LOW);
    }
    void loop()
    {
    // start each iteration of the loop by reading the button
    // if the button is pressed (reads HIGH), move the servo
    int button_state = digitalRead(buttonpin);
    if(button_state == HIGH){
    // turn off the lit led
    if(pos == straight){
    digitalWrite(straight_led, LOW);
    } else {
    digitalWrite(divergent_led, LOW);
    }
    old_pos = pos; // save the current position
    // Toggle the position to the opposite value
    pos = pos == straight ? divergent: straight;
    // Move the servo to its new position
    if(old_pos < pos){ // if the new angle is higher
    // increment the servo position from oldpos to pos
    for(int i = old_pos + 1; i = pos; i--){
    myservo.write(i); // write the next position to the servo
    delay(step_delay); // wait
    }
    }
    // turn on the appropriate LED.
    if(pos == straight){
    digitalWrite(straight_led, HIGH);
    } else {
    digitalWrite(divergent_led, HIGH);
    }
    }
    }// end of loop

  • @teltowfamily2223
    @teltowfamily2223 Před rokem

    i miss when ardiuno was 3 dollars!

  • @techparistech2659
    @techparistech2659 Před 2 lety

    the link is not working

    • @V1RGINEVO9
      @V1RGINEVO9 Před 2 lety

      I too can not get the link to work :( Looks like great work

  • @waynefilkins8394
    @waynefilkins8394 Před 2 lety

    this is the simple way???