#include <WiFi.h>
#include "ThingSpeak.h"
WiFiClient client;
// Wi-Fi credentials
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = " ";
// ThingSpeak channel information
const int myChannelNumber = 2598327;
const char* writeApiKey = "VMW4VM19W2IOCZNZ";
// GPIO Pin configuration
const int playButtonPin = 15;
const int pauseButtonPin = 12;
const int skipButtonPin = 14;
const int statusLedPin = 21;
// Music player states
bool isPlaying = false;
void setup() {
Serial.begin(115200);
// Initialize GPIO pins
pinMode(playButtonPin, INPUT_PULLUP);
pinMode(pauseButtonPin, INPUT_PULLUP);
pinMode(skipButtonPin, INPUT_PULLUP);
pinMode(statusLedPin, OUTPUT);
// Connect to Wi-Fi
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("WiFi connected!");
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
if (digitalRead(playButtonPin) == HIGH) {
playMusic();
} else if (digitalRead(pauseButtonPin) == HIGH) {
pauseMusic();
} else if (digitalRead(skipButtonPin) == HIGH) {
skipTrack();
}
delay(10000);
}
void playMusic() {
isPlaying = true;
digitalWrite(statusLedPin, HIGH); // Turn on status LED
updateThingSpeak();
Serial.println("Music playing...");
}
void pauseMusic() {
isPlaying = false;
digitalWrite(statusLedPin, LOW); // Turn off status LED
updateThingSpeak();
Serial.println("Music paused.");
}
void skipTrack() {
updateThingSpeak();
Serial.println("Track skipped.");
}
void updateThingSpeak() {
if (WiFi.status() == WL_CONNECTED) {
// Write player state to ThingSpeak
int playingState = isPlaying ? 1 : 0;
ThingSpeak.setField(1, playingState);
int status = ThingSpeak.writeFields(myChannelNumber, writeApiKey);
if (status == 200) {
Serial.println("Data sent to ThingSpeak successfully");
} else {
Serial.println("Failed to send data to ThingSpeak");
}
delay(5000); // Added delay to ensure ThingSpeak has enough time to update
}
}