/*
Zainab Khan
LightChaser.ino
Febuary 27, 2025
This program makes a three LED lights go on and off
in a set pattern depending on a button press
*/
int redLED = 13; //red LED is connected to pin 13
int yellowLED = 12; // yellow LED is connected to pin 12
int greenLED = 11; // green LED is connected to pin 11
int buttonPin = 8; // button is connected to pin 8
int patternNum = 0; // variable to track the state(pattern number to display)
int patternSpeed = 100; // variable for the delay between patterns
void pat0(){
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
} // end of void pat for pattern 0
void pat1(){
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
} // end of void pat for pattern 1
void pat2(){
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
} // end of void pat for pattern 2
void pat3(){
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
} // end of void pat for pattern 3
void pat4(){
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
} // end of void pat for pattern 4
void pat5(){
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
delay(patternSpeed);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
delay(patternSpeed);
} // end of void pat for pattern 5
void setup() {
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
} // end of void setup
void loop() {
int buttonVal = digitalRead(buttonPin); // when buttonVal is used in code it will read the value of buttonPin
// selecting pattern by determining if the button is HIGH or LOW
// to determine what pattern to play next -- state + 1 (previous pattern number + 1)
if (buttonVal == LOW) { // checking if the buttonPins value is Low
patternNum = patternNum + 1; // When buttonVal is equal to LOW patternNum is updated to patternNum + 1
} // end of if for buttonVal == LOW
else if (patternNum == 0) { // checking if putternNum = 0
pat0();
} // end of if for patternNum 0
else if (patternNum == 1) { // checking if putternNum = 1
pat1();
} // end of else if for patternNum 1
else if (patternNum == 2) { // checking if putternNum = 2
pat2();
} // end of else if for patternNum 2
else if (patternNum == 3) { // checking if putternNum = 3
pat3();
} // end of else if for patternNum 3
else if (patternNum == 4) { // checking if putternNum = 4
pat4();
} // end of else if for patternNum 4
else if (patternNum == 5) { // checking if putternNum = 5
pat5();
} // end of else if for patternNum 5
if (patternNum == 6) { // checking if putternNum = 6
patternNum = 0;
delay (patternSpeed);
} // end of if for patternNum 6
// printing what pattern it is displaying
Serial.print("Pattern State: ");
Serial.print(patternNum);
Serial.println(" ");
delay(150);
} // end of void loop