background_rings_demo.ino 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #include <SoftwareSerial.h>
  2. #include "WS2812_Definitions.h"
  3. #include <eRCaGuy_ButtonReader.h>
  4. #include "BackgroundRingClass.h"
  5. const int LED_COUNT = 24;
  6. const int MAXBRIGHTNESS = 80;
  7. const int leftFSRSimPin = A7;
  8. const int rightFSRSimPin = A0;
  9. /* Start Button */
  10. const int leftReadyButtonPin = 13;
  11. const int rightReadyButtonPin = 8;
  12. /* WS2812 Christmas Tree Setup:
  13. Two strips of 6 LEDs connected to 5V and Ground, plus the signal pin
  14. */
  15. const int ledPinRight = 12;
  16. const int ledPinLeft = 11;
  17. const int randomPin = A5;
  18. BackgroundRingClass rightRing = BackgroundRingClass(LED_COUNT, ledPinRight);
  19. BackgroundRingClass leftRing = BackgroundRingClass(LED_COUNT, ledPinLeft);
  20. eRCaGuy_ButtonReader leftReadyButton = eRCaGuy_ButtonReader(leftReadyButtonPin);
  21. eRCaGuy_ButtonReader rightReadyButton = eRCaGuy_ButtonReader(rightReadyButtonPin);
  22. eRCaGuy_ButtonReader leftFSRButton = eRCaGuy_ButtonReader(leftFSRSimPin);
  23. eRCaGuy_ButtonReader rightFSRButton = eRCaGuy_ButtonReader(rightFSRSimPin);
  24. void setup() {
  25. // put your setup code here, to run once:
  26. Serial.begin(115200); // Serial used for logging
  27. randomSeed(analogRead(randomPin));
  28. /* WS2812 LED Setup */
  29. //rightRing.begin();
  30. //leftRing.begin();
  31. pinMode(leftReadyButtonPin, INPUT_PULLUP);
  32. pinMode(rightReadyButtonPin, INPUT_PULLUP);
  33. pinMode(leftFSRSimPin, INPUT_PULLUP);
  34. pinMode(rightFSRSimPin, INPUT_PULLUP);
  35. Serial.println("Testing Solids");
  36. rightRing.init_solid(DARKRED, MAXBRIGHTNESS);
  37. leftRing.init_solid(DARKGREEN, MAXBRIGHTNESS);
  38. delay(1000);
  39. leftRing.init_idle();
  40. rightRing.init_idle();
  41. Serial.println("Begin.");
  42. }
  43. void loop() {
  44. static bool button_released = true;
  45. rightRing.tick();
  46. leftRing.tick();
  47. if(button_pressed(rightFSRButton)) {
  48. Serial.println("Right button pressed. Switching.");
  49. //rightRing.init_pulse(random(0, 0xFFFFFF), 255, 2000);
  50. //rightRing.init_pulse(DARKRED, MAXBRIGHTNESS, 2000);
  51. //rightRing.init_spin(DARKRED, DARKGREEN);
  52. rightRing.init_flip(DARKRED, DARKGREEN);
  53. //rightRing.init_slowroll(DARKRED, DARKGREEN);
  54. }
  55. if(button_pressed(leftFSRButton)) {
  56. Serial.println("Right button pressed. Switching.");
  57. //leftRing.init_pulse(random(0, 0xFFFFFF), 255, 2000);
  58. //leftRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000);
  59. //leftRing.init_spin(DARKGREEN, DARKRED);
  60. leftRing.init_flip(DARKGREEN, DARKRED);
  61. //leftRing.init_slowroll(DARKGREEN, DARKRED);
  62. }
  63. //test_solids();
  64. //test_pulses();
  65. //test_random_pulses();
  66. }
  67. bool button_pressed(eRCaGuy_ButtonReader& button)
  68. {
  69. int8_t buttonaction;
  70. boolean buttonstate;
  71. button.readButton(&buttonaction, &buttonstate);
  72. return buttonaction == 1;
  73. }
  74. void test_pulses() {
  75. if(rightRing.action == Idle) {
  76. Serial.println("Changing right");
  77. rightRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000);
  78. }
  79. if(leftRing.action == Idle) {
  80. Serial.println("Changing left");
  81. leftRing.init_pulse(DARKGREEN, MAXBRIGHTNESS, 2000);
  82. }
  83. }
  84. void test_random_pulses() {
  85. if(rightRing.action == Idle) {
  86. Serial.println("Changing right");
  87. rightRing.init_pulse(random(0, 0xFFFFFF), MAXBRIGHTNESS, 2000);
  88. }
  89. if(leftRing.action == Idle) {
  90. Serial.println("Changing left");
  91. leftRing.init_pulse(random(0, 0xFFFFFF), MAXBRIGHTNESS, 2000);
  92. }
  93. }
  94. void test_random_solids() {
  95. if(rightRing.action == Idle) {
  96. Serial.println("Changing right");
  97. rightRing.init_solid(random(0, 0xFFFFFF), MAXBRIGHTNESS);
  98. }
  99. if(leftRing.action == Idle) {
  100. Serial.println("Changing left");
  101. leftRing.init_solid(random(0, 0xFFFFFF), MAXBRIGHTNESS);
  102. }
  103. delay(500);
  104. leftRing.init_idle();
  105. rightRing.init_idle();
  106. }