/*
*****************************************************************************************************
*****************************************************************************************************
** Name: Jerrod Jeyakrishna **
** Project Name: LaserChaser.ino **
** Date:2024-09-17 **
** Description:This Arduino code controls three LEDs (red, yellow, and green) using a button. **
** Each time the button is pressed, the LEDs change to one of six different patterns. The code **
** uses a variable to keep track of which pattern is currently shown and updates the LED states **
** accordingly. Each pattern is displayed for 100 milliseconds before moving to the next. The **
** patterns are set up so that the LEDs turn on and off in specific sequences to create different **
** light effects. **
*****************************************************************************************************
*****************************************************************************************************
*/
int redLed = 13; //define red light pin
int yellowLed = 12; //define yellow light pin
int greenLed = 11; //define green light pin
int buttonPin = 7; //define button pin
int patternNumber = 0; //define pattern number
int speedValue = 100; //set delay value to 100ms
void setup() {
DDRB = B111000;
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}//setup pin locations
int myPatternArray [6] [3] = { { 8, 24, 56},
{48, 40, 24},
{32, 16, 8},
{32, 48, 56},
{24, 40, 48},
{ 8, 16, 32}
};//end array
void loop() {
if ( digitalRead(buttonPin) == LOW) { // check if button was pressed
patternNumber++; // if so, speed up blinking
if (patternNumber > 5) { // if numbered pattern exceeds 5..
patternNumber = 0; // ... patternNumber goes back to 0 (start)
}//end if()
}//end if()
for (int x = 0; x<3; x++) {
PORTB = myPatternArray [patternNumber] [x];
delay(speedValue);
}//end for
Serial.println(patternNumber); //prints pattern number
}//end loop()