// **********************************************
// * *
// * NAME : Alexander Ioanidis *
// * Program Name : lightchaserthree.ino *
// * Date : 2023-03-01 *
// * Desc : program to make light *
// * chaser with six patterns *
// * *
// **********************************************
int patternDelay = 100; // delay time for the light patterns
int buttonPin = 6; // the pin for the button
int patternNumber = 0; // the current pattern number
int patternArray [6][3] = {{4,12,28} , {24,20,12} , {16,8,4} , {16,24,28} , {12,20,24} , {4,8,16}}; // the LED sequence for each pattern
int patternStep = 0; // the current pattern step
void setup() {
DDRB = B111111; // set all pins on port B to an OUTPUT
pinMode(buttonPin, INPUT_PULLUP); // config pin 6 to an INPUT
pinMode(7, OUTPUT); // config pin 7 to an OUTPUT
} // end setup()
void loop() {
if (digitalRead(buttonPin) == LOW){ // check if button is pressed
patternNumber++; // change to next pattern
if (patternNumber == 6){ // check if pattern number exceeds the max possible patterns (6)
patternNumber = 0; // reset back to first pattern
} // end if()
tone (7, 500, 100); // play buzzer at 500Hz for 100ms
delay (110); // wait 110ms
} // end if()
PORTB = patternArray[patternNumber][patternStep]; // plays the current LED pattern
delay(patternDelay); // wait 100ms
patternStep++; // go to next step in pattern
if (patternStep == 3){ // if patternStep exceeds max steps
patternStep = 0; // go back to first step in pattern
} // if()
} // end loop()