#include #include #define DFPLAYER_RX 2 // PA1 - connect to DFPlayer TX #define DFPLAYER_TX 3 // PA2 - connect to DFPlayer RX #define TILT_PIN 4 // PA3 - one leg to GND #define LED_PIN 0 // PA7 - LED anode, cathode to GND via resistor SoftwareSerial mySerial(DFPLAYER_RX, DFPLAYER_TX); DFRobotDFPlayerMini dfplayer; bool playing = false; void setup() { pinMode(TILT_PIN, INPUT_PULLUP); // Tilt switch with internal pull-up pinMode(LED_PIN, OUTPUT); // LED pin digitalWrite(LED_PIN, HIGH); // LED on by default mySerial.begin(9600); if (!dfplayer.begin(mySerial)) { // DFPlayer failed to initialize while (true); // Halt here, maybe blink LED if needed } dfplayer.volume(20); // Set volume (0 to 30) } void loop() { bool tilted = digitalRead(TILT_PIN) == LOW; if (tilted && !playing) { dfplayer.play(1); // Play 001.mp3 digitalWrite(LED_PIN, LOW); // Turn off LED playing = true; } else if (!tilted && playing) { dfplayer.stop(); // Stop music digitalWrite(LED_PIN, HIGH); // Turn on LED playing = false; } delay(200); // debounce delay }