/*Explanation and role of each button of my code
BUTTON SET-UP
------------------------------------------
Button_a(green) ---> will be connected to Uno pin 2
Button_b(white) ---> will be connected to Uno pin 12
Button_c(yellow) ---> will be connected to Uno pin 8
Button_d(black) ---> will be connected to Uno pin 7
------------------------------------------
LED SET-UP
------------------------------------------
Orange-LED ---> will be connected to Uno pin 5
Blue-LED ---> will be connected to Uno pin 6
Red-LED ---> will be connected to Uno pin 9
Green-LED ---> will be connected to Uno pin 10
------------------------------------------
SEVO PWM SET-UP
------------------------------------------
Servo PWM---> will be connectec to Uno pin 11
*/
#include <Servo.h> // OPEN the servo library
Servo Servo1; // give a name to the servo that I will use
int ranNum; // Random Number library
unsigned long previousTime1 = 0;
unsigned long previousTime2 = 0;
unsigned long previousTime3 = 0;
unsigned long previousTime4 = 0;
// here is the blinking time
const unsigned long eInterval1 = 1500;
const unsigned long eInterval2 = 6000;
const unsigned long eInterval3 = 8000;
const unsigned long eInterval4 = 10000;
void setup() {
/*------------------------------------------
In he following code I defined all of the set up for the
the LED and the the differebt buttons. output will be for the LED
and input will be for the buttons
-------------------------------------------*/
pinMode(5, OUTPUT); // LED orange
pinMode(6, OUTPUT); // LED blue
pinMode(9, OUTPUT); // LED red
pinMode(10, OUTPUT); // LED green
pinMode(2, INPUT); // Button_a
pinMode(12, INPUT); // Button_b
pinMode(8, INPUT); // Button_c
pinMode(7, INPUT); // Button_d
Servo1.attach(11); // for the servo motor
Serial.begin(9600);
/* The following code set all of the LED to be off as deffault
when*/
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}
void loop() {
unsigned long currentMillis = millis(); // here is important to difine the actual time
if(digitalRead(12)== HIGH){
if (currentMillis - previousTime1 >= eInterval1){
digitalWrite(5, LOW);
}
if (currentMillis - previousTime2 >= eInterval2){
digitalWrite(6, LOW);
previousTime1=currentMillis; // starting from here led yel is off
digitalWrite(5, HIGH);
}
if (currentMillis - previousTime3 >= eInterval3){
digitalWrite(9, LOW);
previousTime2=currentMillis;
digitalWrite(6, HIGH);
previousTime1=currentMillis;
digitalWrite(5, HIGH);
}
if (currentMillis - previousTime4 >= eInterval4){
digitalWrite(10, LOW);
previousTime3=currentMillis;
digitalWrite(9, HIGH);
previousTime1=currentMillis;
digitalWrite(5, HIGH);
previousTime2=currentMillis;
digitalWrite(6, HIGH);
}
if(eInterval4 < currentMillis){
digitalWrite(10, HIGH);
}
}
/*If button-a is pressed the led green, red, blue,orange
blink repectively twice and reverse*/
if(digitalRead(2)==HIGH){
//Green blink
digitalWrite(10, LOW);
delay(100);
digitalWrite(10, HIGH);
//Red blink
digitalWrite(9,LOW);
delay(100);
digitalWrite(9, HIGH);
//Blue blink
digitalWrite(6,LOW);
delay(100);
digitalWrite(6, HIGH);
//Orange blink
digitalWrite(5,LOW);
delay(100);
digitalWrite(5, HIGH);
/*Starting fron the code bellow the reverse blink
is activate*/
//Orange blink
delay(500);
digitalWrite(5, LOW);
delay(100);
digitalWrite(5, HIGH);
//Blue blink
digitalWrite(6,LOW);
delay(100);
digitalWrite(6, HIGH);
//Red blink
digitalWrite(9,LOW);
delay(100);
digitalWrite(9, HIGH);
//Green blink
digitalWrite(10,LOW);
delay(100);
digitalWrite(10, HIGH);
Serial.println("Hello world!");
}
/* If button d is pressed it activate couple move (servo and LED)*/
if(digitalRead(7)==HIGH){
Servo1.write(0); // servo is on 0degree
Servo1.write(25); // servo turn 25 degree
// Led Blue blink 2 times
digitalWrite(6, LOW);
delay(500);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(6, LOW);
delay(500);
digitalWrite(6, HIGH);
delay(1000);
Servo1.write(81); // servo turn 81 degree
// Led Green blink 3 times
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
Servo1.write(144); // servo turn 144 degree
// Led red and oranf blink
digitalWrite(9, LOW);
delay(500);
digitalWrite(9, HIGH);
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
Servo1.write(0);
}
/* if button c is selected the servoo is activated*/
if(digitalRead(8)== HIGH){
Servo1.write(9); // servo turn 9 degree
delay(1000); // wait 1 second before thwe next move
Servo1.write(100);// servo turn 100 degree
delay(1000);
}
}