buttons.ino 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. void handleButtonLogic() {
  2. bool modePressed = (digitalRead(BUTTON_MODE) == LOW);
  3. bool addPressed = (digitalRead(BUTTON_ADD) == LOW);
  4. bool colorPressed = (digitalRead(BUTTON_COLOR) == LOW);
  5. bool minusPressed = (digitalRead(BUTTON_MINUS) == LOW);
  6. if (addPressed) {
  7. //Add button pressed
  8. HandleAddButtonPress();
  9. delay(BUTTON_AUTOINC_DELAY);
  10. while (digitalRead(BUTTON_ADD) == LOW) {
  11. //Delay auto-shift
  12. HandleAddButtonPress();
  13. delay(BUTTON_HOLD_DELAY);
  14. }
  15. } else if (minusPressed) {
  16. //Minus button pressed
  17. HandleMinusButtonPress();
  18. delay(BUTTON_AUTOINC_DELAY);
  19. while (digitalRead(BUTTON_MINUS) == LOW) {
  20. //Delay auto-shift
  21. HandleMinusButtonPress();
  22. delay(BUTTON_HOLD_DELAY);
  23. }
  24. } else if (colorPressed) {
  25. //Color button pressed
  26. HandleColorButtonPress();
  27. delay(50);
  28. while (digitalRead(BUTTON_COLOR) == LOW) {
  29. //Wait for button up before continue
  30. delay(BUTTON_HOLD_DELAY);
  31. }
  32. //Debounce
  33. delay(50);
  34. } else if (modePressed) {
  35. HandleModeButtonPress();
  36. while (digitalRead(BUTTON_MODE) == LOW) {
  37. //Wait for button up before continue
  38. delay(BUTTON_HOLD_DELAY);
  39. }
  40. //Debounce
  41. delay(50);
  42. }
  43. }
  44. //Mode button is pressed
  45. void HandleModeButtonPress() {
  46. //Update the mode number
  47. currentMode += 1;
  48. if (currentMode > 3) {
  49. currentMode = 0;
  50. }
  51. //Current mode updated
  52. //Reset the RGB values to default of each modes
  53. if (currentMode == 0) {
  54. Serial.println("Switched to White Balanced Mode");
  55. loadWhiteModeDefault();
  56. } else if (currentMode == 1) {
  57. Serial.println("Switched to RGB Mode");
  58. loadRGBModeDefault();
  59. } else if (currentMode == 2) {
  60. Serial.println("Switched to Color Palette Mode");
  61. } else if (currentMode == 3) {
  62. Serial.println("Switched to Preset Mode");
  63. }
  64. }
  65. //Color button is pressed
  66. void HandleColorButtonPress() {
  67. if (currentMode == 0) {
  68. //White mode
  69. //Only accept 0 (temp) or 1 (brightness)
  70. if (adjustingCatergory == 0) {
  71. adjustingCatergory = 1;
  72. setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, 0);
  73. } else {
  74. adjustingCatergory = 0;
  75. //Set control LED to white
  76. setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS);
  77. }
  78. } else if (currentMode == 1) {
  79. if (adjustingCatergory == 0) {
  80. //Red -> Green
  81. adjustingCatergory = 1;
  82. setControlLEDColor(0, MAX_CTRLBRIGHTNESS, 0);
  83. } else if (adjustingCatergory == 1) {
  84. //Green -> Blue
  85. adjustingCatergory = 2;
  86. setControlLEDColor(0, 0, MAX_CTRLBRIGHTNESS);
  87. } else if (adjustingCatergory == 2) {
  88. //Blue -> Red
  89. adjustingCatergory = 0;
  90. //Set LED to yellow for brightness
  91. setControlLEDColor(MAX_CTRLBRIGHTNESS, 0, 0);
  92. }
  93. }
  94. }
  95. void HandleAddButtonPress() {
  96. if (currentMode == 0) {
  97. //White Color Mode
  98. if (adjustingCatergory == 0) {
  99. //add 500 to K value
  100. values[0] = values[0] + 100;
  101. if (values[0] > 10000) {
  102. values[0] = 10000;
  103. blinkUpperLimit();
  104. }
  105. Serial.print("Updating color temperature to ");
  106. Serial.println(values[0]);
  107. } else if (adjustingCatergory == 1) {
  108. values[1] += 1;
  109. if (values[1] > MAX_BRIGHTNESS) {
  110. values[1] = MAX_BRIGHTNESS;
  111. blinkUpperLimit();
  112. }
  113. Serial.print("Updating brightness to ");
  114. Serial.println(values[1]);
  115. }
  116. setColorTemperature(values[0], values[1]);
  117. } else if (currentMode == 1) {
  118. handleRGBModeAdd();
  119. }
  120. }
  121. void HandleMinusButtonPress() {
  122. if (currentMode == 0) {
  123. //White Color Mode
  124. if (adjustingCatergory == 0) {
  125. //reduce 500 from K value
  126. values[0] = values[0] - 100;
  127. if (values[0] < 1500) {
  128. values[0] = 1500;
  129. blinkLowerLimit();
  130. }
  131. Serial.print("Updating color temperature to ");
  132. Serial.println(values[0]);
  133. } else if (adjustingCatergory == 1) {
  134. values[1] -= 1;
  135. if (values[1] < 0) {
  136. values[1] = 0;
  137. blinkLowerLimit();
  138. }
  139. Serial.print("Updating brightness to ");
  140. Serial.println(values[1]);
  141. }
  142. setColorTemperature(values[0], values[1]);
  143. } else if (currentMode == 1) {
  144. handleRGBModeMinus();
  145. }
  146. }