#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Arduino.h>
#define BLYNK_TEMPLATE_ID "TMPL6Rkzyjnl6"
#define BLYNK_TEMPLATE_NAME "Medical Project"
#define BLYNK_AUTH_TOKEN "ZJ3w7sRHOLrVCgn9Fi8sUDBLu3JOBinA"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN ; //Auth Token
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define Hijau 15
#define Kuning 2
#define Merah 4
#define Hitam 5
#define buzzer 12
#define led 13
const int melody[] = {500};
const int noteDuration = 100;
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void playMelody()
{
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); ++i)
{
tone(buzzer, melody[i], noteDuration);
delay(noteDuration + 50); // Tambahan delay untuk memberikan waktu antar nada
noTone(buzzer);
}
}
void setup()
{
pinMode(Hitam, INPUT);
pinMode(Merah, INPUT);
pinMode(Kuning, INPUT);
pinMode(Hijau, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("SSD1306 allocation failed"));
for (;;)
;
}
display.clearDisplay();
// Pindahkan pemutaran melodi ke setup agar hanya dimainkan sekali saat Arduino dihidupkan
playMelody();
}
void buzzerSignal()
{
tone(buzzer, 1000, 500);
delay(500);
noTone(buzzer);
}
void ledSignal()
{
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
}
void loop()
{
if (digitalRead(Hitam) == LOW && digitalRead(Merah) == LOW && digitalRead(Kuning) == LOW && digitalRead(Hijau) == LOW)
{
noTone(buzzer);
digitalWrite(led, LOW);
delay(500);
}
if (digitalRead(Hitam) == HIGH)
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("EMERGENCY");
display.display();
buzzerSignal();
digitalWrite(led, HIGH);
delay(0); // Anda mungkin ingin menghapus delay ini, atau menggantinya dengan delay yang lebih besar jika diperlukan.
}
else if (digitalRead(Merah) == HIGH)
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("EXPECTANT");
display.display();
buzzerSignal();
digitalWrite(led, HIGH);
delay(0);
}
else if (digitalRead(Kuning) == HIGH)
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("DELAYED");
display.display();
buzzerSignal();
digitalWrite(led, HIGH);
delay(0);
}
else if (digitalRead(Hijau) == HIGH)
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("NOT URGENT");
display.display();
buzzerSignal();
digitalWrite(led, HIGH);
delay(0);
}
}