/*
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 buttonPin = 7; // button is connected to pin 7
int patternNum = 0; // variable to track the state(pattern number to display)
int patternSpeed = 100; // variable for the delay between patterns
void pat0(){
PORTB = B001000;
delay(patternSpeed);
PORTB = B011000;
delay(patternSpeed);
PORTB = B111000;
delay(patternSpeed);
} // end of void pat for pattern 0
void pat1(){
PORTB = B110000;
delay(patternSpeed);
PORTB = B101000;
delay(patternSpeed);
PORTB = B011000;
delay(patternSpeed);
} // end of void pat for pattern 1
void pat2(){
PORTB = B100000;
delay(patternSpeed);
PORTB = B010000;
delay(patternSpeed);
PORTB = B001000;
delay(patternSpeed);
} // end of void pat for pattern 2
void pat3(){
PORTB = B100000;
delay(patternSpeed);
PORTB = B110000;
delay(patternSpeed);
PORTB = B111000;
delay(patternSpeed);
} // end of void pat for pattern 3
void pat4(){
PORTB = B011000;
delay(patternSpeed);
PORTB = B101000;
delay(patternSpeed);
PORTB = B110000;
delay(patternSpeed);
} // end of void pat for pattern 4
void pat5(){
PORTB = B001000;
delay(patternSpeed);
PORTB = B010000;
delay(patternSpeed);
PORTB = B100000;
delay(patternSpeed);
} // end of void pat for pattern 5
void setup() {
DDRB = B111111;
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