Background image
Learn To Build It
Startpage - Arduino - Sensors/Switches .. - Arduino with a servo and two buttons

Arduino with a servo and two buttons

By: Steve Kerscher | Added: 8 April 2016 | Updated: 7 April 2016
Arduino with a servo and two buttons | Rating: 5 | Votes: 1 | Pageviews: 3103 | Comments (0)
I had a request to take a servo and attach it to the Arduino. Watch the video, I know the text is hard to read in the video. Please see full code below. I added some extra things to make sure the servo can't be pushed to go beyond the limit because the servo I am using can only go 180. Some servos can go 360 degrees. I also added some code check if someone is pushing both buttons at once.
Parts Needed
Arduino Servo with Button Fritzing
#include 

Servo myservo;  // create servo object to control a servo

const int LeftbuttonPin = 10; //Left button
const int RightbuttonPin = 11; //Right button

int pos = 90; //used to keep track of the position of the servo
int LeftState = 0; //left is not pressed
int RightState = 0; //right is not pressed


void setup() {
  myservo.attach(2);  // attaches the servo on pin 2 to the servo object
  pinMode(LeftbuttonPin, INPUT); //make the pin an input
  pinMode(RightbuttonPin, INPUT); //make the pin an input
  myservo.write(90); //move to 90 first or middle
  Serial.begin(9600);//setup serial for diagnostics
}

void loop() {

LeftState = digitalRead(LeftbuttonPin); //grab button value high or low
RightState = digitalRead(RightbuttonPin); //grab button value high or low

  if (LeftState == HIGH && RightState == HIGH) {
    // do nothing can't go in both directions
    Serial.println("both pushed");
  
  } else {
    if(LeftState == HIGH) //check if left pushed
    {
      Serial.println("left high");
      if(pos < 180)
      {
        Serial.println("left not at end");
        pos += 1; //increase position by 1
        Serial.println(pos);
        myservo.write(pos);
      }
    }
    if(RightState == HIGH) //check if right pushed
    {
      Serial.println("right high");
       if(pos > 0)
      {
        Serial.println("right not at end");
        pos -= 1; // decrease position by 1
        Serial.println(pos);
        myservo.write(pos);
      }
    }
  }
  
                  // tell servo to go to position in variable 'pos'
    delay(50);                       // waits 15ms for the servo to reach the position
}

Comments
Username
Password