#define BLYNK_TEMPLATE_ID "TMPL3QrqTPhYS"
#define BLYNK_TEMPLATE_NAME "ROBOT"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <pitches.h>
#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);
#define LED_PIN_1 17
#define LED_PIN_2 14
#define BUZZER_PIN 4
char auth[] = "WMZvRR4gALoLwHywnH4l4kwQEuKCWvmZ";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
bool led1State = false;
bool led2State = false;
bool buzzerState = false;
int merryChristmasMelody[] = {
NOTE_E5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_G5, NOTE_F5, NOTE_E5,
NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5, NOTE_F5, NOTE_F5,
NOTE_G5, NOTE_E5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_G5, NOTE_F5,
NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5, NOTE_F5,
NOTE_F5, NOTE_G5, NOTE_E5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_G5,
NOTE_F5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5
};
int merryChristmasNoteDurations[] = {
8, 8, 4, 4, 4, 8, 8,
8, 8, 4, 4, 4, 4, 2,
8, 8, 4, 4, 4, 8, 8,
8, 8, 4, 4, 4, 4, 2,
8, 8, 4, 4, 4, 8, 8,
8, 8, 4, 4, 4, 4, 2
};
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
display.begin(SSD1306_PAGEADDR, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
displayDefaultMessage();
}
void loop() {
Blynk.run();
updateOLED();
}
void updateOLED() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
if (led1State || led2State || buzzerState) {
display.print("LED 1: ");
display.println(led1State ? "ON" : "OFF");
display.print("LED 2: ");
display.println(led2State ? "ON" : "OFF");
display.print("Buzzer: ");
display.println(buzzerState ? "ON" : "OFF");
if (buzzerState) {
playMerryChristmasMelody();
buzzerState = false;
}
} else {
displayDefaultMessage();
}
display.display();
}
void displayDefaultMessage() {
display.print(" [] []\n\n\n ======= ");
display.display();
}
void playMerryChristmasMelody() {
for (int i = 0; i < sizeof(merryChristmasMelody) / sizeof(merryChristmasMelody[0]); i++) {
int noteDuration = 1000 / merryChristmasNoteDurations[i];
tone(BUZZER_PIN, merryChristmasMelody[i], noteDuration);
delay(noteDuration * 1.30);
}
noTone(BUZZER_PIN);
}
BLYNK_WRITE(V1) {
int ledState = param.asInt();
if (ledState == 1) {
digitalWrite(LED_PIN_1, HIGH);
led1State = true;
} else {
digitalWrite(LED_PIN_1, LOW);
led1State = false;
}
}
BLYNK_WRITE(V2) {
int ledState = param.asInt();
if (ledState == 1) {
digitalWrite(LED_PIN_2, HIGH);
led2State = true;
} else {
digitalWrite(LED_PIN_2, LOW);
led2State = false;
}
}
BLYNK_WRITE(V3) {
buzzerState = param.asInt();
}