#include "BSCPE03_XmasController2023_2024.hpp"
#define CHANNEL_A 2
#define CHANNEL_B 3
#define CHANNEL_C 4
#define CHANNEL_D 5
#define NEXT_BUTTON 8
#define PREV_BUTTON 7
#define AUDIO_MODE_SWITCH 6
// Declare an object named "lc" based on BSCPEXmasLightController from the header
// Parameters are LEDPIN_A, LEDPIN_B, LEDPIN_C, LEDPIN_D
BSCPEXmasLightController lc(CHANNEL_A, CHANNEL_B, CHANNEL_C, CHANNEL_D);
void setup() {
// pinmode set
pinMode(NEXT_BUTTON, INPUT_PULLUP);
pinMode(PREV_BUTTON, INPUT_PULLUP);
pinMode(AUDIO_MODE_SWITCH, INPUT_PULLUP);
Serial.begin(115200);
lc.init(); // Initilize object lc
Serial.print("**Christmas Tree Controller Beta V0.4 by BSCPE03 S.Y 2023-2024**\n\n*Patterns (250ms Interval - *may vary using speed controller)*\n1. Off\n2. Static\n3. Blink\n4. Ascending A to D\n5. Descending D to A\n6. Cross Alternator\n7. Cross Flip\n8. Bouncing\n\n**Buttons:**\n- RED: Previous Pattern\n- GREEN: Next Pattern\n\n**Slide Switch: Audio Mode**\n- LEFT: Don't care\n- RIGHT: Audio Mode\n\n**Remaining TODO:**\n- Speed Controller\n- Output Enable Logic (*Optional*)\n- Complete Audio Mode\n- Pattern #7: Random Patterns\n- Trigger Light Blink Button (*for testing*)\n- Ramp-up and Ramp-down blink speed\n\n**Bug Fixes:**\n- All channels light up on patterns 3, 4, and 5 when light override is enabled in Audio Mode\n\n**Changelog: Version #06**\n- Changed the name from 'Double Alternating Channels' to 'Cross Alternator': 10/30/23 10:26PM\n- Added 'Cross Flip' Pattern: 10/30/23 10:32PM\n- Added 'Bouncing' Pattern: 10/30/23 10:57PM");
}
void loop() {
// Light Controller running in loop
lc.run();
if (!digitalRead(NEXT_BUTTON)) {
lc.nextPattern();
delay(250);
} else if (!digitalRead(PREV_BUTTON)) {
lc.prevPattern();
delay(250);
}
// Audio Mode is still in progress
if (!digitalRead(AUDIO_MODE_SWITCH)){
lc.audioMode(true);
} else {
lc.audioMode();
}
}