/* @file Voice Module.ino @brief @n [Get the module here] @n This example Set the voice module volume and playback @n [Connection and Diagram]() @copyright [DFRobot](https://www.dfrobot.com), 2016 @copyright GNU Lesser General Public License @author [carl](lei.wu@dfrobot.com) @version V1.0 @date 2017-11-3 */ #include #include #define PIN 0 //Neopixel left #define NUMPIXELS 2 // mic const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz) unsigned int sample; // mp3 SoftwareSerial Serial1(5, 4); unsigned char order[4] = {0xAA, 0x06, 0x00, 0xB0}; // Neopixel tinyNeoPixel pixels = tinyNeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //left,right void setup() { //Serial.begin(115200); Serial1.begin(9600); volume(0x14);//Volume settings 0x00-0x1E // mic setup Serial.begin(9600); // neopixel setup pixels.begin(); pixels.clear(); // Set all pixel colors to 'off' } void loop() { delay(2000); //リセット後少し時間をおく play(0x01);//Play the music specified audio:0x01-file0001 // Serial1.write(order,4);//order play // delay(2000); //35秒neopixelが光って消える delay(500); NeoFade(180); delay(500); //pixels.setBrightness(0); //try to clear all //pixels.show(); NeoFadeout(50); //その後柏手を打つたびにneopixelが光って消える while (1) { pixels.clear(); //try to clear all pixels.show(); unsigned long startMillis = millis(); // Start of sample window unsigned int peakToPeak = 0; // peak-to-peak level unsigned int signalMax = 0; unsigned int signalMin = 1024; // collect data for 50 mS while (millis() - startMillis < sampleWindow) { sample = analogRead(2); // pinno. PA6=2 if (sample < 1024) // toss out spurious readings { if (sample > signalMax) { signalMax = sample; // save just the max levels } else if (sample < signalMin) { signalMin = sample; // save just the min levels } } // if } //while peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude double volts = (peakToPeak * 5.0) / 1024; // convert to volts Serial.println(volts); if (volts > 4.9) //when clap { delay(1500); play(0x03);//Play the bell // Serial1.write(order,4);//order play delay(100); NeoFade(10); NeoFadeout(10); delay(100); //pixels.setBrightness(0); //try to clear all //pixels.show(); } //if } //while(1) } //loop // Neopixel variable definition void NeoFade(int FadeSpeed) { int fspeed; for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, 255, 255, 200); } for (int j = 1; j < 255; j = j + 2) { pixels.setBrightness(j); pixels.show(); delay(FadeSpeed); } // pixels.setBrightness(0); //try to clear all // pixels.show(); } void NeoFadeout(int FadeSpeed) { int fspeed; for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, 255, 255, 200); } for (int j = 253; j > 0; j = j - 2) { pixels.setBrightness(j); pixels.show(); delay(FadeSpeed); } // pixels.setBrightness(0); //try to clear all // pixels.show(); } void play(unsigned char Track) { unsigned char play[6] = {0xAA, 0x07, 0x02, 0x00, Track, Track + 0xB3}; Serial1.write(play, 6); } void volume( unsigned char vol) { unsigned char volume[5] = {0xAA, 0x13, 0x01, vol, vol + 0xBE}; Serial1.write(volume, 5); }