//*****************************************************
//* *
//* NAME : Matthew Seguin *
//* Program Name : array.ino *
//* Date : 2023-03-01 *
//* Program Desc : Light chaser with multiple *
//* patterns, 3 LEDs and a speaker. *
//* *
//*****************************************************
int buttonPin = 6; //set pin for push button
int speaker = 7; //set pin for speaker
int delayTime = 250; //set time for delay
int patternNumber = 0; //which pattern is in use
int patternArray [6][3] = { {4, 12, 28} , {24, 20, 12} , {16, 8, 4} , {16, 24, 28} , {12, 20, 24} , {4, 8, 16} }; //sets the numbers in the array
int patternStep = 0; //which step the pattern is on
void setup() {
DDRB = B111111; //sets pins 8-13 to output (1=output, 0=input)
pinMode(buttonPin, INPUT_PULLUP); //sets pin 8 to input
pinMode(speaker, OUTPUT); //sets pin 7 to output
} // end setup
void loop() {
if (digitalRead(buttonPin) == LOW){ //check if button is pressed
patternNumber = patternNumber + 1; //if pressed, next pattern
if (patternNumber == 6){ //if pattern number is too high, reset
patternNumber = 0; //set pattern number to 0
} // end if statement
tone (speaker, 500, 250); //if pressed, play tone
delay(110); //delay 1.1 seconds
} //end if statement
PORTB = patternArray[patternNumber] [patternStep]; //set outputs to array pattern and step
delay(delayTime); //delay 250ms
patternStep++; //up patternstep by 1
if (patternStep == 3){ //if patternstep equals 3
patternStep = 0; //set pattern to 0
}
//end if statement
} //end loop