#include <Servo.h>
Servo myservo; // create servo object to control a servo
#define servoPin 28 //~
#define pushButton_1 0
#define pushButton_2 1
#define pushButton_3 2
#define pushButton_4 3
#define pushButton_5 4
#define pushButton_6 5
#define led_1 27
#define led_2 26
#define led_3 22
#define led_4 21
#define led_5 20
#define led_6 19
#define a 6
#define b 7
#define c 8
#define d 9
#define e 10
#define f 11
#define g 12
int angle = 90; // initial angle for servo
int angleStep = 12;
const int minAngle = 90;
const int maxAngle = 360;
int buttonPushed =0;
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(servoPin); // attaches the servo on pin 3 to the servo object
pinMode(pushButton_1,INPUT_PULLUP);
Serial.println("Lantai 1 ");
pinMode(pushButton_2,INPUT_PULLUP);
Serial.println("Lantai 2 ");
pinMode(pushButton_3,INPUT_PULLUP);
Serial.println("Lantai 3 ");
pinMode(pushButton_4,INPUT_PULLUP);
Serial.println("Lantai 4 ");
pinMode(pushButton_5,INPUT_PULLUP);
Serial.println("Lantai 5 ");
pinMode(pushButton_6,INPUT_PULLUP);
Serial.println("Lantai 6 ");
pinMode(led_1,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(led_2,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(led_3,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(led_4,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(led_5,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(led_6,OUTPUT);
Serial.println("Lantai 1 ");
pinMode(a,OUTPUT);
Serial.println(" ");
pinMode(b,OUTPUT);
Serial.println(" ");
pinMode(c,OUTPUT);
Serial.println(" ");
pinMode(d,OUTPUT);
Serial.println(" ");
pinMode(e,OUTPUT);
Serial.println(" ");
pinMode(f,OUTPUT);
Serial.println(" ");
pinMode(g,OUTPUT);
Serial.println(" ");
}
void loop()
{
if(digitalRead(pushButton_1) == LOW)
{
// change the angle for next time through the loop:
angle = 0 ;//angle + angleStep;
digitalWrite(led_1, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
digitalWrite(led_6, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
if(digitalRead(pushButton_2) == LOW)
{
// change the angle for next time through the loop:
angle = 30 ;//angle + angleStep;
digitalWrite(led_1, LOW);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
digitalWrite(led_6, LOW);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
if(digitalRead(pushButton_3) == LOW)
{
// change the angle for next time through the loop:
angle = 60 ;//angle + angleStep;
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
digitalWrite(led_6, LOW);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
if(digitalRead(pushButton_4) == LOW)
{
// change the angle for next time through the loop:
angle = 90 ;//angle + angleStep;
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, HIGH);
digitalWrite(led_5, LOW);
digitalWrite(led_6, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
if(digitalRead(pushButton_5) == LOW)
{
// change the angle for next time through the loop:
angle = 120 ;//angle + angleStep;
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, HIGH);
digitalWrite(led_6, LOW);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
if(digitalRead(pushButton_6) == LOW)
{
// change the angle for next time through the loop:
angle = 150 ;//angle + angleStep;
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
digitalWrite(led_6, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
// reverse the direction of the moving at the ends of the angle:
if (angle <= minAngle || angle >= maxAngle)
{
angleStep = -angleStep;
buttonPushed = 0;
}
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(100); // waits for the servo to get there
}
}