Guest User

Seinfeld Door Sensor

a guest
Apr 14th, 2016
1,853
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // Author c_alix on reddit
  3.  
  4. #include <SPI.h>
  5. #include <Adafruit_VS1053.h>
  6. #include <SD.h>
  7.  
  8. // These are the pins used for the breakout example
  9. #define BREAKOUT_RESET 9 // VS1053 reset pin (output)
  10. #define BREAKOUT_CS 10 // VS1053 chip select pin (output)
  11. #define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output)
  12. // These are the pins used for the music maker shield
  13. #define SHIELD_RESET -1 // VS1053 reset pin (unused!)
  14. #define SHIELD_CS 7 // VS1053 chip select pin (output)
  15. #define SHIELD_DCS 6 // VS1053 Data/command select pin (output)
  16.  
  17. // These are common pins between breakout and shield
  18. #define CARDCS 4 // Card chip select pin
  19. // DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
  20. #define DREQ 3 // VS1053 Data request, ideally an Interrupt pin
  21.  
  22. Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
  23.  
  24.  
  25.  
  26. int n_files;
  27. int led = 9;
  28.  
  29.  
  30. void setup()
  31. {
  32. Serial.begin(9600);
  33. Serial.println("Ready, Start!");
  34.  
  35. pinMode(led, OUTPUT);
  36. pinMode(2,INPUT);
  37.  
  38. // initialise the music player
  39. if (! musicPlayer.begin()) { // initialise the music player
  40. Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
  41. while (1);
  42. }
  43. Serial.println(F("VS1053 chip found..."));
  44.  
  45.  
  46. musicPlayer.sineTest(0x44, 500); // Make a tone to indicate VS1053 is working
  47.  
  48. if (!SD.begin(CARDCS)) {
  49. Serial.println(F("SD failed, or not present"));
  50. while (1); // don't do anything more
  51. }
  52.  
  53. Serial.println("SD Card Loaded...");
  54. Serial.println();
  55.  
  56. musicPlayer.setVolume(1,1);
  57.  
  58. n_files = countMP3File(SD.open("/"));
  59.  
  60. Serial.print("Number of MP3 files: ");
  61. Serial.println(n_files);
  62. Serial.println();
  63. }
  64.  
  65. int countMP3File(File dir)
  66. {
  67. int counter = 0;
  68.  
  69. Serial.println("Listing files:");
  70.  
  71. while(true)
  72. {
  73. File entry = dir.openNextFile();
  74. if (! entry)
  75. {
  76. dir.rewindDirectory();
  77. break;
  78. }
  79.  
  80. Serial.println(entry.name());
  81.  
  82. counter++;
  83.  
  84. entry.close();
  85. }
  86.  
  87. dir.close();
  88.  
  89. Serial.println();
  90. return counter;
  91. }
  92.  
  93.  
  94. void loop()
  95. {
  96. int i, rand_song;
  97.  
  98. Serial.print("Motion Sensor Val: ");
  99. Serial.println(digitalRead(2));
  100.  
  101. if (digitalRead(2) == 1)
  102. {
  103. File folder = SD.open("/");
  104. File random_file;
  105.  
  106. rand_song = random(0, n_files)+1;
  107.  
  108. folder.rewindDirectory();
  109.  
  110. random_file = selectFileN(rand_song, folder);
  111.  
  112. folder.close();
  113.  
  114. Serial.print("Playing: ");
  115. Serial.println(random_file.name());
  116.  
  117. // smoke machine
  118. //digitalWrite(led, LOW);
  119.  
  120. if(!musicPlayer.playFullFile(random_file.name()))
  121. {
  122. Serial.println("Could not open mp3 file");
  123. }
  124. random_file.close();
  125.  
  126. // stop smoke machine
  127. //digitalWrite(led, HIGH);
  128.  
  129. Serial.println("Waiting 6 sec...");
  130. delay(6000);
  131. }
  132.  
  133.  
  134. Serial.println();
  135. delay(100);
  136. }
  137.  
  138. File selectFileN(int number, File dir)
  139. {
  140. int counter = 0;
  141. File return_entry;
  142.  
  143. while(true)
  144. {
  145. File entry = dir.openNextFile();
  146. if (! entry)
  147. {
  148. //Serial.println("Last file reached");
  149. dir.rewindDirectory();
  150. break;
  151. }
  152.  
  153. //Serial.println(entry.name());
  154.  
  155. counter++;
  156.  
  157. if(counter==number)
  158. {
  159. return_entry = entry;
  160. dir.rewindDirectory();
  161. break;
  162. }
  163.  
  164. entry.close();
  165. }
  166. return return_entry;
  167. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×