buttons.ino 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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. delay(BUTTON_DEBOUNCE);
  16. } else if (minusPressed) {
  17. //Minus button pressed
  18. HandleMinusButtonPress();
  19. delay(BUTTON_AUTOINC_DELAY);
  20. while (digitalRead(BUTTON_MINUS) == LOW) {
  21. //Delay auto-shift
  22. HandleMinusButtonPress();
  23. delay(BUTTON_HOLD_DELAY);
  24. }
  25. delay(BUTTON_DEBOUNCE);
  26. } else if (colorPressed) {
  27. //Color button pressed
  28. HandleColorButtonPress();
  29. delay(BUTTON_DEBOUNCE);
  30. while (digitalRead(BUTTON_COLOR) == LOW) {
  31. //Wait for button up before continue
  32. delay(BUTTON_HOLD_DELAY);
  33. }
  34. //Debounce
  35. delay(BUTTON_DEBOUNCE);
  36. } else if (modePressed) {
  37. HandleModeButtonPress();
  38. while (digitalRead(BUTTON_MODE) == LOW) {
  39. //Wait for button up before continue
  40. delay(BUTTON_HOLD_DELAY);
  41. }
  42. //Debounce
  43. delay(BUTTON_DEBOUNCE);
  44. }
  45. }
  46. //Mode button is pressed
  47. void HandleModeButtonPress() {
  48. //Update the mode number
  49. currentMode += 1;
  50. if (currentMode > 2) {
  51. currentMode = 0;
  52. }
  53. //Current mode updated
  54. //Reset the RGB values to default of each modes
  55. if (currentMode == 0) {
  56. Serial.println("Switched to White Balanced Mode");
  57. loadWhiteModeDefault();
  58. } else if (currentMode == 1) {
  59. Serial.println("Switched to RGB Mode");
  60. loadRGBModeDefault();
  61. } else if (currentMode == 2) {
  62. Serial.println("Switched to Color Palette Mode");
  63. loadPresetsDefault();
  64. }
  65. }
  66. //Color button is pressed
  67. void HandleColorButtonPress() {
  68. if (currentMode == 0) {
  69. //White mode
  70. //Only accept 0 (temp) or 1 (brightness)
  71. if (adjustingCatergory == 0) {
  72. adjustingCatergory = 1;
  73. setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, 0);
  74. } else {
  75. adjustingCatergory = 0;
  76. //Set control LED to white
  77. setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS);
  78. }
  79. } else if (currentMode == 1) {
  80. //RGB Adjustable Mode
  81. if (adjustingCatergory == 0) {
  82. //Red -> Green
  83. adjustingCatergory = 1;
  84. setControlLEDColor(0, MAX_CTRLBRIGHTNESS, 0);
  85. } else if (adjustingCatergory == 1) {
  86. //Green -> Blue
  87. adjustingCatergory = 2;
  88. setControlLEDColor(0, 0, MAX_CTRLBRIGHTNESS);
  89. } else if (adjustingCatergory == 2) {
  90. //Blue -> Red
  91. adjustingCatergory = 0;
  92. //Set LED to yellow for brightness
  93. setControlLEDColor(MAX_CTRLBRIGHTNESS, 0, 0);
  94. }
  95. } else if (currentMode == 2){
  96. //Color pallete mode
  97. if (adjustingCatergory == 0) {
  98. //Enter brightness control mode
  99. adjustingCatergory = 1;
  100. setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, 0);
  101. }else{
  102. //Enter pallete select mode
  103. adjustingCatergory = 0;
  104. renderColorPallete(values[0]);
  105. }
  106. }
  107. }
  108. void HandleAddButtonPress() {
  109. if (currentMode == 0) {
  110. //White Color Mode
  111. if (adjustingCatergory == 0) {
  112. //add to K value
  113. values[0] = values[0] + 100;
  114. if (values[0] > WHITE_MAX_TEMP) {
  115. values[0] = WHITE_MAX_TEMP;
  116. blinkUpperLimit();
  117. }
  118. Serial.print("Updating color temperature to ");
  119. Serial.println(values[0]);
  120. } else if (adjustingCatergory == 1) {
  121. values[1] += 1;
  122. if (values[1] > MAX_BRIGHTNESS) {
  123. values[1] = MAX_BRIGHTNESS;
  124. blinkUpperLimit();
  125. }
  126. Serial.print("Updating brightness to ");
  127. Serial.println(values[1]);
  128. }
  129. setColorTemperature(values[0], values[1]);
  130. } else if (currentMode == 1) {
  131. //RGB Color Mode
  132. handleRGBModeAdd();
  133. } else if (currentMode == 2){
  134. //Color Pallete Mode
  135. handlePresetsAdd();
  136. }
  137. }
  138. void HandleMinusButtonPress() {
  139. if (currentMode == 0) {
  140. //White Color Mode
  141. if (adjustingCatergory == 0) {
  142. //reduce from K value
  143. values[0] = values[0] - 100;
  144. if (values[0] < WHITE_MIN_TEMP) {
  145. values[0] = WHITE_MIN_TEMP;
  146. blinkLowerLimit();
  147. }
  148. Serial.print("Updating color temperature to ");
  149. Serial.println(values[0]);
  150. } else if (adjustingCatergory == 1) {
  151. values[1] -= 1;
  152. if (values[1] < 0) {
  153. values[1] = 0;
  154. blinkLowerLimit();
  155. }
  156. Serial.print("Updating brightness to ");
  157. Serial.println(values[1]);
  158. }
  159. setColorTemperature(values[0], values[1]);
  160. } else if (currentMode == 1) {
  161. //RGB Color Mode
  162. handleRGBModeMinus();
  163. } else if (currentMode == 2){
  164. //Color Pallete Mode
  165. handlePresetsMinus();
  166. }
  167. }