I_Mihalache_AudioPlayer.ino 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include <Audio.h>
  2. #include <Wire.h>
  3. #include <SPI.h>
  4. #include <SD.h>
  5. #include <SerialFlash.h>
  6. /* SdWav1 : sample voix |
  7. * SdWav2 : sample attente |-> mix1 -> Lout & RMS1
  8. *
  9. * SdWav3 : sample ambiance -> mix2 -> Rout & RMS2
  10. */
  11. // GUItool: begin automatically generated code
  12. AudioPlaySdWav playSdWav3; //xy=152,429
  13. AudioPlaySdWav playSdWav1; //xy=153,217
  14. AudioPlaySdWav playSdWav2; //xy=155,307
  15. AudioMixer4 mixer1; //xy=572,215
  16. AudioMixer4 mixer2; //xy=579,344
  17. AudioAnalyzeRMS rms1; //xy=875,315
  18. AudioOutputI2S i2s1; //xy=876,225
  19. AudioAnalyzeRMS rms2; //xy=876,365
  20. AudioConnection patchCord1(playSdWav3, 0, mixer2, 0);
  21. AudioConnection patchCord2(playSdWav1, 0, mixer1, 0);
  22. AudioConnection patchCord3(playSdWav2, 0, mixer1, 1);
  23. AudioConnection patchCord4(mixer1, 0, i2s1, 0);
  24. AudioConnection patchCord5(mixer1, rms1);
  25. AudioConnection patchCord6(mixer2, 0, i2s1, 1);
  26. AudioConnection patchCord7(mixer2, rms2);
  27. AudioControlSGTL5000 sgtl5000_1; //xy=573,537
  28. // GUItool: end automatically generated code
  29. #define LOOP_WAV "SDTEST1.WAV"
  30. #define PRESENCE_WAV "SDTEST2.WAV"
  31. #define WAIT_WAV "SDTEST3.WAV"
  32. bool presence ;
  33. // Use these with the Teensy Audio Shield
  34. #define SDCARD_CS_PIN 10
  35. #define SDCARD_MOSI_PIN 7
  36. #define SDCARD_SCK_PIN 14
  37. void ESPSerial(){
  38. // Send bytes from ESP8266 -> Teensy to Computer
  39. bool printLine ;
  40. while ( Serial1.available() ) {
  41. Serial.write( Serial1.read() );
  42. printLine = 1 ;
  43. }
  44. // if (printLine) {Serial.println("");}
  45. printLine = 0;
  46. // Send bytes from Computer -> Teensy back to ESP8266
  47. while ( Serial.available() ) {
  48. Serial1.write( Serial.read() );
  49. }
  50. }
  51. void setup() {
  52. Serial.begin(115200);
  53. Serial1.begin(115200);
  54. //LDR digital inputs
  55. pinMode(16, INPUT);
  56. pinMode(20,INPUT);
  57. AudioMemory(16);
  58. sgtl5000_1.enable();
  59. sgtl5000_1.lineOutLevel(13); // set output to 3.16 Vpp
  60. sgtl5000_1.volume(1); //set volume to maximum
  61. SPI.setMOSI(SDCARD_MOSI_PIN);
  62. SPI.setSCK(SDCARD_SCK_PIN);
  63. if (!(SD.begin(SDCARD_CS_PIN))) {
  64. // stop here, but print a message repetitively
  65. while (1) {
  66. Serial.println("Unable to access the SD card");
  67. delay(500);
  68. }
  69. }
  70. Serial1.println("AT+GMR");
  71. delay(2000);
  72. //while (!Serial1.available()) {};
  73. ESPSerial();
  74. Serial.println("");
  75. Serial.println("");
  76. delay(00);
  77. }
  78. //
  79. void playFile(const char *filename)
  80. {
  81. Serial.print("Playing file: ");
  82. Serial.println(filename);
  83. playSdWav1.play(filename);
  84. // A brief delay for the library read WAV info
  85. delay(5);
  86. }
  87. void printLDR(){
  88. Serial.print(analogRead(A3));
  89. Serial.print(" ");
  90. Serial.print(digitalRead(16));
  91. Serial.print(" ");
  92. Serial.print(analogRead(A7));
  93. Serial.print(" ");
  94. Serial.print(digitalRead(20));
  95. Serial.println();
  96. }
  97. bool checkPresence(int Pin1, int Pin2) {
  98. bool isPresent = digitalRead(Pin2); //|| digitalRead(Pin2);
  99. return isPresent ;
  100. }
  101. void loop() {
  102. // filenames are always uppercase 8.3 format
  103. if (!playSdWav1.isPlaying()) {
  104. playFile(LOOP_WAV);
  105. }
  106. presence = checkPresence(16, 20);
  107. //Serial.println(presence);
  108. if (presence && !playSdWav2.isPlaying() ) {
  109. Serial.println("Playing presence file");
  110. playSdWav2.play(PRESENCE_WAV);
  111. delay(5);
  112. }
  113. ESPSerial();
  114. // delay(100);
  115. }