#include <Arduino.h>
#include <Wire.h> //OLED
#include <Adafruit_GFX.h> //OLED
#include <Adafruit_SSD1306.h> //OLED
#include <Bonezegei_HCSR04.h> //Untrasonic
#include <WiFi.h> //Blynk
#include <WiFiClient.h> //Blynk
//Blynk
#define BLYNK_TEMPLATE_ID "TMPL63zENu6PV"
#define BLYNK_TEMPLATE_NAME "oled"
#define BLYNK_AUTH_TOKEN "0yG4BOHf7njjV_FgtApWQjqbLiFm4Trj"
#include <BlynkSimpleEsp32.h>
//RGB LED
#define RED_PIN 18
#define GREEN_PIN 17
#define BLUE_PIN 16
//Untrasonic
#define TRIG_PIN 26
#define ECHO_PIN 27
Bonezegei_HCSR04 ultrasonic (TRIG_PIN, ECHO_PIN);
//OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); //OLED
#define BLYNK_PRINT Serial //Blynk
const char *WIFI_SSID = "Wokwi-GUEST"; //wifiของwokwi
const char *WIFI_PASS = ""; //wifiของwokwi
unsigned long t0;
BlynkTimer timer;
void setup() {
Serial.begin(115200);
//RGB LED
pinMode(4, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
//untrasonic
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.println("ESP32 Rhythmic Distance Finder Started!");
{ //OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
for(;;);
t0 = millis();
}
WiFi.begin(WIFI_SSID, WIFI_PASS); //Blynk
Serial.print("connecting WiFi"); //Blynk
while(WiFi.status() != WL_CONNECTED) //Blynk
{ //Blynk
delay(300);
Serial.print(".");
}
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASS);
}
void setRGB(uint8_t r, uint8_t g, uint8_t b)
{
analogWrite(4, r);
analogWrite(16, g);
analogWrite(17, b);
}
void loop() {
Blynk.run();
timer.run();
int d=ultrasonic.getDistance();
Serial.print("Distance:");
Serial.print(d);
Serial.println(" cm");
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Distance: ");
display.print(d);
display.println(" cm");
display.setCursor(0, 48);
display.println("Paradee");
display.println("15318");
display.display();
delay(200);
if (d < 20){
setRGB(0, 250, 250);
}
else if (d >= 20 && d <= 30)
{
setRGB(0, 250, 250);
delay(200); //กระพริบ
setRGB(0, 0, 0);
delay(200); //กระพริบ
}
else {
setRGB(0, 0, 0);
}
}