BeatLightBox.ino 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. //Two codes in one, choose mode below
  2. //#define BEATBOX
  3. #define LIGHTBOX
  4. #ifdef BEATBOX
  5. #include <SoftwareSerial.h>
  6. #include <MP3Player_KT403A.h>
  7. SoftwareSerial mp3(6, 7);
  8. #endif
  9. #ifdef LIGHTBOX
  10. #include <ChainableLED.h>
  11. ChainableLED leds(6, 7, 1);
  12. #endif
  13. int color[3] = {0, 0, 0};
  14. const int buttons[8] = { 2, 3, 4, 5, A0, A1, A2, A3};
  15. void ledsFX(int button){
  16. switch (button){
  17. case 0 : //RED
  18. color[0] += 150 ;
  19. // Serial.print(color[0]);
  20. // Serial.println(" red");
  21. break;
  22. case 1 ://GREEN
  23. color[1] += 150;
  24. Serial.println("green");
  25. break;
  26. case 2 :
  27. color[2] += 150;
  28. Serial.println("blue");
  29. break;
  30. case 3 :
  31. color[0] += 255 * (cos(millis()/1000)*0.5 + 0.5);
  32. color[1] += 255 * (cos(millis()/100)*0.5 + 0.5);
  33. // color[2] += 255 * (cos(millis()/1000)*0.5 + 0.5);
  34. break;
  35. case 4 :
  36. // color[0] += 255 * (cos(millis()/1000)*0.5 + 0.5);
  37. color[1] += 255 * (cos(millis()/200)*0.5 + 0.5);
  38. color[2] += 255 * (sin(millis()/500)*0.5 + 0.5);
  39. break;
  40. case 5 :
  41. color[0] += 255 * (tan(millis()/50)*0.5 + 0.5);
  42. // color[1] += 255 * (cos(millis()/1000)*0.5 + 0.5);
  43. color[2] += 100 * (cos(millis()/1040)*0.5 + 0.5);
  44. break;
  45. case 6 :
  46. color[0] += 255 * (cos(millis()/100)*0.5 + 0.5);
  47. color[1] += 255 * (sin(millis()/500)*0.5 + 0.5);
  48. color[2] += 255 * (cos(millis()/2000)*0.5 + 0.5);
  49. break;
  50. case 7 : //invert colors
  51. for(int i = 0 ; i<3;i++){
  52. color[i] = 255 - color[i];
  53. }
  54. break;
  55. default :
  56. break;
  57. }
  58. }
  59. void setup() {
  60. Serial.begin(9600);
  61. for (int i = 0 ; i<8 ;i++){
  62. pinMode(buttons[i], INPUT_PULLUP);
  63. }
  64. #ifdef BEATBOX
  65. mp3.begin(9600);
  66. delay(100);
  67. SelectPlayerDevice(0x02); // Select SD card as the player device.
  68. SetVolume(0x1E); // Set the volume, the range is 0x00 to 0x1E.
  69. #endif
  70. #ifdef LIGHTBOX
  71. //nothing
  72. #endif
  73. }
  74. void loop() {
  75. //
  76. // long int currentTime = millis();
  77. color[0] = 0;
  78. color[1] = 0;
  79. color[2] = 0;
  80. for (int i = 0 ; i<8 ;i++){
  81. //take action if a button was pressed
  82. if (!digitalRead(buttons[i])){
  83. Serial.println(i);
  84. #ifdef BEATBOX
  85. SpecifyMusicPlay(i+1);
  86. #endif
  87. #ifdef LIGHTBOX
  88. ledsFX(i);
  89. #endif
  90. }
  91. }
  92. #ifdef LIGHTBOX
  93. color[0] = constrain(color[0], 0, 255);
  94. color[1] = constrain(color[1], 0, 255);
  95. color[2] = constrain(color[2], 0, 255);
  96. Serial.print(color[0]);
  97. Serial.print(", ");
  98. Serial.print(color[1]);
  99. Serial.print(", ");
  100. Serial.println(color[2]);
  101. leds.setColorRGB(0, color[0], color[1], color[2]);
  102. #endif
  103. delay(50);
  104. }