/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Audio LED - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2024-09-22 21:10:42 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* play track for 3 minutes. Shut down for 2 minutes */ /* then loop */ /****** SYSTEM REQUIREMENT 2 *****/ /* Play a random audio track (from 2 to 5) using the */ /* DFRobot DFPlayer Mini module for 3 minutes, */ /* followed by a 2-minute shutdown, then repeat the */ /* cycle. Control LED indicators during playback and */ /* shutdown phases. */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include #include //https://github.com/DFRobot/DFRobotDFPlayerMini /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); void updateOutputs(void); /***** DEFINITION OF DIGITAL OUTPUT PINS *****/ const uint8_t LED_LED_PIN_D2 = 2; // LED for playback indication const uint8_t LED_2_LED_PIN_D3 = 3; // LED for shutdown indication const uint8_t LED_3_LED_PIN_D4 = 4; // Unused LED /***** DEFINITION OF Software Serial *****/ const uint8_t DFPlayer_DFPlayerMini_Serial_PIN_SERIAL_TX_A0 = A0; const uint8_t DFPlayer_DFPlayerMini_Serial_PIN_SERIAL_RX_A1 = A1; SoftwareSerial DFPlayer_DFPlayerMini_Serial(DFPlayer_DFPlayerMini_Serial_PIN_SERIAL_RX_A1, DFPlayer_DFPlayerMini_Serial_PIN_SERIAL_TX_A0); /***** DEFINITION OF OUTPUT RAW VARIABLES *****/ bool LED_LED_PIN_D2_rawData = 0; // Playback LED state bool LED_2_LED_PIN_D3_rawData = 0; // Shutdown LED state bool LED_3_LED_PIN_D4_rawData = 0; // Unused LED state /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/ // Initialize DFPlayer object DFRobotDFPlayerMini myDFPlayer; // Create an instance of the DFPlayer class void setup(void) { // put your setup code here, to run once: pinMode(LED_LED_PIN_D2, OUTPUT); // Set playback LED pin as output pinMode(LED_2_LED_PIN_D3, OUTPUT); // Set shutdown LED pin as output pinMode(LED_3_LED_PIN_D4, OUTPUT); // Set unused LED pin as output // Start the software serial for DFPlayer DFPlayer_DFPlayerMini_Serial.begin(9600); // Initialize DFPlayer if (!myDFPlayer.begin(DFPlayer_DFPlayerMini_Serial, true, true)) { // Use serial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1. Please recheck the connection!")); Serial.println(F("2. Please insert the SD card!")); while (true); // Loop forever if initialization fails } Serial.println(F("DFPlayer Mini online.")); } void loop(void) { // put your main code here, to run repeatedly: // Play a random audio track from 2 to 5 for 3 minutes unsigned long playbackStartTime = millis(); // Record the start time of playback while (millis() - playbackStartTime < 180000) { // Loop for 3 minutes (180000 ms) int randomTrack = random(2, 6); // Generate a random track number between 2 and 5 myDFPlayer.play(randomTrack); // Play the selected track LED_LED_PIN_D2_rawData = HIGH; // Turn on playback LED updateOutputs(); // Update LED states delay(60000); // Wait for 1 minute before playing the next track } // Shutdown phase for 2 minutes LED_LED_PIN_D2_rawData = LOW; // Turn off playback LED LED_2_LED_PIN_D3_rawData = HIGH; // Turn on shutdown LED updateOutputs(); // Update LED states delay(120000); // Wait for 2 minutes // Turn off shutdown LED after the shutdown phase LED_2_LED_PIN_D3_rawData = LOW; // Turn off shutdown LED updateOutputs(); // Update LED states } void updateOutputs(void) { // Update the state of the LEDs based on the raw data digitalWrite(LED_LED_PIN_D2, LED_LED_PIN_D2_rawData); // Update playback LED digitalWrite(LED_2_LED_PIN_D3, LED_2_LED_PIN_D3_rawData); // Update shutdown LED digitalWrite(LED_3_LED_PIN_D4, LED_3_LED_PIN_D4_rawData); // Update unused LED } /* END CODE */