#define BLYNK_TEMPLATE_ID "TMPL3vd8VWKcS"
#define BLYNK_TEMPLATE_NAME "musicplayer"
#define BLYNK_AUTH_TOKEN "w0sdA5NOL8e9j169PzTUJl07gFbluJn_"
#include <LiquidCrystal.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
char auth[] = BLYNK_AUTH_TOKEN;
const int alarmPin = 13;
const int nextPin = 12;
const int prevPin = 26;
const int BUZZER_PIN = 14;
const int lcdAddr = 0x27;
const int redpin=32;
const int bluepin=34;
const int greenpin=35;
int currenttoneindex=0;
int tones[]={1500,2000,2500,3000,3500};
int alarmPinState=0;
int nextPinState=0;
int prevPinState=0;
LiquidCrystal lcd(0x27, 19, 23, 18, 17, 16, 15);
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, password);
pinMode(alarmPin, INPUT);
pinMode(nextPin, INPUT);
pinMode(prevPin, INPUT);
pinMode(redpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
lcd.begin(16,2);
lcd.setCursor(0, 0);
lcd.print("ESP32 LCD Demo");
}
// void setColor(int red,int green,int blue){
// analogWrite(redpin,red);
// analogWrite(bluepin,blue);
// analogWrite(greenpin,green);
// }
// alarm tone virtual pin
BLYNK_WRITE(V0){
int val=param.asInt();
if(val==1){
lcd.setCursor(0, 1);
lcd.print("alarm");
digitalWrite(redpin, HIGH);
for (int i = 0; i < 3; ++i) {
tone(BUZZER_PIN, 1500);
usleep(200000);
noTone(BUZZER_PIN);
usleep(100000);
tone(BUZZER_PIN, 2000);
usleep(200000);
noTone(BUZZER_PIN);
usleep(100000);
}
digitalWrite(redpin, LOW);
}
}
//next tone virtual pin
BLYNK_WRITE(V1){
int val=param.asInt();
if(val==1){
lcd.setCursor(0, 1);
lcd.print("next tone is playing");
digitalWrite(bluepin, HIGH);
tone(BUZZER_PIN, tones[currenttoneindex]);
currenttoneindex=(currenttoneindex+1)%(sizeof(tones)/(sizeof(tones[0])));
delay(1000);
noTone(BUZZER_PIN);
digitalWrite(bluepin, LOW);
}
}
//previous tone virtual pin
BLYNK_WRITE(V2){
int val=param.asInt();
if(val==1){
lcd.setCursor(0, 1);
lcd.print("previous tone is playing");
digitalWrite(greenpin, HIGH);
tone(BUZZER_PIN, tones[currenttoneindex]);
currenttoneindex=(currenttoneindex-1)%(sizeof(tones)/(sizeof(tones[0])));
delay(1000);
noTone(BUZZER_PIN);
digitalWrite(greenpin, LOW);
}
}
void loop() {
Blynk.run();
alarmPinState = digitalRead(alarmPin);
if(alarmPinState == HIGH){
Blynk.virtualWrite(V0,1);
}
nextPinState = digitalRead(nextPin);
if(nextPinState == HIGH){
Blynk.virtualWrite(V1,1);
}
prevPinState = digitalRead(prevPin);
if(prevPinState == HIGH){
Blynk.virtualWrite(V2,1);
}
}