// Pavandeep Sidhu
// 300298084
// April 20th 2023
// ENGR 1190 Final Exam
#include <Servo.h>
Servo Servo; // Define our Servo
int Button_a = 2 ; // button connected to pin 2
int Button_b = 12; // button connected to pin 12
int Button_c = 8 ; // button connected to pin 8
int Button_d = 7; // button connected to pin 7
int Amber = 5; // LED connected to pin 5
int Blue = 6; // LED connected to pin 6
int Red = 9; // LED connected to pin 9
int Green = 10; // LED connected to pin 10
unsigned long Timer1 = 0; // value to subtract from millis
unsigned long Timer2 = 0;
unsigned long Timer3 = 0; // value to subtract from millis
unsigned long Timer4 = 0;
long rememberTime=0;
void setup() {
// put your setup code here, to run once:
pinMode(Button_a, INPUT); //
digitalWrite(Button_a, LOW);
attachInterrupt(digitalPinToInterrupt(Button_a), buttonPress, RISING);
pinMode(Button_b, INPUT); //
pinMode(Button_c, INPUT); //
pinMode(Button_d, INPUT); //
pinMode(Amber, OUTPUT); //
pinMode(Green, OUTPUT); //
pinMode(Blue, OUTPUT);
pinMode(Red, OUTPUT);
Servo.attach(11); // servo on digital pin 10
digitalWrite(Amber, HIGH);// Start all LEDs off
digitalWrite(Blue, HIGH);
digitalWrite(Red, HIGH);
digitalWrite(Green, HIGH);
Servo.write(0);// Start servo at 0
}
void loop() {
//turns on every second
if (millis() - Timer1 > 1000) {
digitalWrite(Amber, LOW);
Timer1 = millis(); //setting "timer = millis" make it equal to 0
}
//turns on every half second
else if (millis() - Timer1 > 500) {
digitalWrite(Green, LOW);
}
//turns off every second
if (millis() - Timer2 > 1000) {
digitalWrite(Green, HIGH);
Timer2 = millis();
}
//turns off every half second
else if (millis() - Timer2 > 500) {
digitalWrite(Amber, HIGH);
}
//----------------------------------------------------------
//Same code as above repeated for blue and red LEDS
if (millis() - Timer3 > 1000) {
digitalWrite(Blue, LOW);
Timer3 = millis();
}
else if (millis() - Timer3 > 500) {
digitalWrite(Red, LOW);
}
if (millis() - Timer4 > 1000) {
digitalWrite(Red, HIGH);
Timer4 = millis();
}
else if (millis() - Timer4 > 500) {
digitalWrite(Blue, HIGH);
}
if (digitalRead(Button_a) == HIGH) {
digitalWrite(Amber, HIGH);// Turn all LEDs off
digitalWrite(Blue, HIGH);
digitalWrite(Red, HIGH);
digitalWrite(Green, HIGH);
Servo.write(145);
}
while(digitalRead(Button_c) == HIGH) { //If statement controls the value of Button A which controls the LEDS.
//If pressed the LEDS will all blink twice one at a time in a specfic order, then repeat in reverse order
if (millis() - Timer1 > 1000) {
digitalWrite(Green, LOW);
Timer1 = millis(); //setting "timer = millis" make it equal to 0
}
//turns on every half second
else if (millis() - Timer1 > 500) {
digitalWrite(Green, HIGH);
}
break;
}
}