#include #include "WS2812_Definitions.h" #include #include "BackgroundRingClass.h" const int LED_COUNT = 24; const int MAXBRIGHTNESS = 80; const int leftFSRSimPin = A7; const int rightFSRSimPin = A0; /* Start Button */ const int leftReadyButtonPin = 13; const int rightReadyButtonPin = 8; /* WS2812 Christmas Tree Setup: Two strips of 6 LEDs connected to 5V and Ground, plus the signal pin */ const int ledPinRight = 12; const int ledPinLeft = 11; const int randomPin = A5; BackgroundRingClass rightRing = BackgroundRingClass(LED_COUNT, ledPinRight); BackgroundRingClass leftRing = BackgroundRingClass(LED_COUNT, ledPinLeft); eRCaGuy_ButtonReader leftReadyButton = eRCaGuy_ButtonReader(leftReadyButtonPin); eRCaGuy_ButtonReader rightReadyButton = eRCaGuy_ButtonReader(rightReadyButtonPin); eRCaGuy_ButtonReader leftFSRButton = eRCaGuy_ButtonReader(leftFSRSimPin); eRCaGuy_ButtonReader rightFSRButton = eRCaGuy_ButtonReader(rightFSRSimPin); void setup() { // put your setup code here, to run once: Serial.begin(115200); // Serial used for logging randomSeed(analogRead(randomPin)); /* WS2812 LED Setup */ //rightRing.begin(); //leftRing.begin(); pinMode(leftReadyButtonPin, INPUT_PULLUP); pinMode(rightReadyButtonPin, INPUT_PULLUP); pinMode(leftFSRSimPin, INPUT_PULLUP); pinMode(rightFSRSimPin, INPUT_PULLUP); Serial.println("Testing Solids"); rightRing.init_solid(DARKRED, MAXBRIGHTNESS); leftRing.init_solid(DARKGREEN, MAXBRIGHTNESS); delay(1000); leftRing.init_idle(); rightRing.init_idle(); Serial.println("Begin."); } void loop() { static bool button_released = true; rightRing.tick(); leftRing.tick(); if(button_pressed(rightFSRButton)) { Serial.println("Right button pressed. Switching."); //rightRing.init_pulse(random(0, 0xFFFFFF), 255, 2000); //rightRing.init_pulse(DARKRED, MAXBRIGHTNESS, 2000); //rightRing.init_spin(DARKRED, DARKGREEN); rightRing.init_flip(DARKRED, DARKGREEN); //rightRing.init_slowroll(DARKRED, DARKGREEN); } if(button_pressed(leftFSRButton)) { Serial.println("Right button pressed. Switching."); //leftRing.init_pulse(random(0, 0xFFFFFF), 255, 2000); //leftRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000); //leftRing.init_spin(DARKGREEN, DARKRED); leftRing.init_flip(DARKGREEN, DARKRED); //leftRing.init_slowroll(DARKGREEN, DARKRED); } //test_solids(); //test_pulses(); //test_random_pulses(); } bool button_pressed(eRCaGuy_ButtonReader& button) { int8_t buttonaction; boolean buttonstate; button.readButton(&buttonaction, &buttonstate); return buttonaction == 1; } void test_pulses() { if(rightRing.action == Idle) { Serial.println("Changing right"); rightRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000); } if(leftRing.action == Idle) { Serial.println("Changing left"); leftRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000); } } void test_random_pulses() { if(rightRing.action == Idle) { Serial.println("Changing right"); rightRing.init_pulse(random(0, 0xFFFFFF), MAXBRIGHTNESS, 2000); } if(leftRing.action == Idle) { Serial.println("Changing left"); leftRing.init_pulse(random(0, 0xFFFFFF), MAXBRIGHTNESS, 2000); } } void test_random_solids() { if(rightRing.action == Idle) { Serial.println("Changing right"); rightRing.init_solid(random(0, 0xFFFFFF), MAXBRIGHTNESS); } if(leftRing.action == Idle) { Serial.println("Changing left"); leftRing.init_solid(random(0, 0xFFFFFF), MAXBRIGHTNESS); } delay(500); leftRing.init_idle(); rightRing.init_idle(); }