#include <Servo.h>

Servo baseservo;  // create servo object to control a servo
Servo lightservo;  // create servo object to control a servo

int angle =0;    // initial angle  for servo
int angleStep =10;

#define baseleft 12   //pin 12 left button
#define baseright 2  //pin 2 right button
#define lightleft 7   //pin 13 left button
#define lightright 6  //pin 4 right button

void setup() {
  // Servo button demo by Robojax.com
  Serial.begin(9600);          //  setup serial
  baseservo.attach(9);   // attaches the servo on pin 9 to the servo object
  lightservo.attach(11);
  pinMode(baseleft,INPUT_PULLUP);
  pinMode(baseright,INPUT_PULLUP);
  pinMode(lightleft,INPUT_PULLUP);
  pinMode(lightright,INPUT_PULLUP);
  baseservo.write(angle);   //servo starts at 90 degree
  lightservo.write(angle);
   Serial.println("Spotlight - Servo Button ");
}

void loop()
{
  while(digitalRead(baseright) == HIGH) {
    if (angle > 0 && angle <= 180) {
      angle = angle - angleStep;
      if (angle < 0) {
        angle = 0;
      }
      else {
        baseservo.write(angle);   //servo set to desired angle
        Serial.print("Base moved to: ");
        Serial.print(angle);
        Serial.print(" degree\n");
      }
    }
    delay(100);
  }

  while(digitalRead(baseleft) == HIGH) {
    if (angle >= 0 && angle <= 180) {
      angle = angle + angleStep;
      if (angle > 180) {
        angle = 180;
      }
      else {
        baseservo.write(angle);   //servo set to desired angle
        Serial.print("Base moved to: ");
        Serial.print(angle);
        Serial.print(" degree\n");
      }
    }
    delay(100);
  }


  while(digitalRead(lightright) == HIGH) {
    if (angle > 0 && angle <= 180) {
      angle = angle - angleStep;
      if (angle < 0) {
        angle = 0;
      }
      else {
        lightservo.write(angle);   //servo set to desired angle
        Serial.print("Light moved to: ");
        Serial.print(angle);
        Serial.print(" degree\n");
      }
    }
    delay(100);
  }

  while(digitalRead(lightleft) == HIGH) {
    if (angle >= 0 && angle <= 180) {
      angle = angle + angleStep;
      if (angle > 180) {
        angle = 180;
      }
      else {
        lightservo.write(angle);   //servo set to desired angle
        Serial.print("Light moved to: ");
        Serial.print(angle);
        Serial.print(" degree\n");
      }
    }
    delay(100);
  }


}
