element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum serial controlling a servo?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 5 replies
  • Subscribers 417 subscribers
  • Views 2158 views
  • Users 0 members are here
  • heat
  • on
  • help
  • the
  • yells
  • me
  • at
  • control
  • leaving
  • thermostat
  • servo
  • heating
  • please
  • for
  • serial
  • uno
  • arduino
  • dad
  • bacon
Related

serial controlling a servo?

e14 Contributor
e14 Contributor over 12 years ago

I got 2 servos in hopes of attaching them to my thermostats and having them turn the knobs but, i don't feel like changing the variables and re uploading the code to my arduino uno.  How would I be able to send a serial signal my computer and set that to a var on the arduino witch will turn the servo?

 

failed try:

 

#include <Servo.h>

 

 

Servo servo;

int servoSerial;

 

 

void setup(){

Serial.begin(9600);

servo.attach(9);

}

 

 

void loop(){

  servoSerial = Serial.read()

servo.writeMicroseconds (servoSerial);

}

  • Sign in to reply
  • Cancel
Parents
  • gdstew
    0 gdstew over 12 years ago

    Here is a test program I wrote (I think I modified an existing sketch I don't remember) that does what you want.  To use it send

    1S0# - 1S180# to position the servo from 0 to 180 degrees.

     

    // Test program for the SG-90 servo motor

    //

     

    #include <Servo.h>

     

    #define SerialSpeed 9600

    #define BufferLength 16

    #define LineEnd '#'

    #define PinServo1 5

    #define DefaultPosition 90

     

    Servo servo1 ;

    char inputBuffer[BufferLength] ;

     

    void setup()

    {

       pinMode(PinServo1, OUTPUT) ;

     

       // Attach servo and set servo min/max timing, and move to default position

     

    //   servo1.attach(PinServo1, 560, 2420) ;

       servo1.attach(PinServo1) ;

       servo1.write(DefaultPosition) ;

     

       Serial.begin(SerialSpeed) ;

    }

     

    void HandleCommand( char *input, int length)

    {

        Serial.println(input) ;

     

        if (length < 2)

          {

            return ; // Invalid command length

          }

     

        int value = 0 ;

     

        if (length > 2)

          {

            value = atoi(&input[2]) ;

     

            if ((value < 0) || (value > 180))

              {

                return ; // Invalid position parameter

              }

          }

     

        int *command = (int *)input ;

     

        switch (*command)

          {

            case '1S':

     

              servo1.write(value) ;

              break ;

     

            default:

     

              Serial.println("Unknown command") ;

              break ;

          }

    }

     

    void loop()

    {

      // Get a command stringfrom the serial port

     

       int inputLength = 0 ;

     

       do {

            while (!Serial.available()) ; // Wait for command

     

            inputBuffer[inputLength] = Serial.read() ;

          } while ((inputBuffer[inputLength] != LineEnd) && (++inputLength < BufferLength)) ;

     

        inputBuffer[inputLength] = 0 ; // Make sure command string is null terminated

        HandleCommand(inputBuffer, inputLength) ;

    }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 12 years ago in reply to gdstew

    I am assuming this test code works, it seems to have all the basics you need to control the servo, you simply need to modify it and the commands to be able to work with two servos.

     

    not meaning to imply anything but do you understand what this code is doing (The code you just provided, not the code in the original post), just if you do understand it then I fail to understand how you came up with your first code sample as it is so much closer to what you would need

     

    please add a schematic showing how you see this all being connected including how you intend to control it

     

    also what do you mean by "i don't feel like changing the variables and re uploading the code to my arduino uno" ?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 12 years ago in reply to Robert Peter Oakes

    just realised this was from someone else Helping Kyle, Sorry Gary

     

    Like I said, this one looks like it should do the trick so Kyle, try to understand the one Gary provided and go from there

     

    Again, Sorry Gary.

     

    Peter

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Robert Peter Oakes
    0 Robert Peter Oakes over 12 years ago in reply to Robert Peter Oakes

    just realised this was from someone else Helping Kyle, Sorry Gary

     

    Like I said, this one looks like it should do the trick so Kyle, try to understand the one Gary provided and go from there

     

    Again, Sorry Gary.

     

    Peter

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube