#define BLYNK_TEMPLATE_ID "TMPL6EmM6N_Z-"
#define BLYNK_TEMPLATE_NAME "IOT"
#define BLYNK_AUTH_TOKEN "DfbAG7UpmVj3cv5nGYBzRrX3Ggk_BHq1"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN;
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int servoPin = 18;
BlynkTimer timer;
Servo servo;
boolean st;
void cek_koneksi(){ //fungsi cek koneksi dg Blynk
st=Blynk.connected();//baca status koneksi
Serial.print("stat Blynk: ");
Serial.println(st);
if(st!=true)ESP.restart(); /*ESP restart function*/
}
int pos = 0;
void my_timer()
{
noInterrupts(); // Disable interrupts
int safePos = pos; // Safely read the shared variable
interrupts(); // Enable interrupts
cek_koneksi();
Blynk.virtualWrite(V1, safePos);
}
BLYNK_WRITE(V0)
{
int safePos = 0;
int range = param.asInt(); // Safely write to the shared variable
if (range < 100)
{
safePos = 160;
}
else
{
safePos = 60;
}
noInterrupts(); // Disable interrupts
pos = safePos; // Store the new value in a local variable
interrupts(); // Enable interrupts
servo.write(safePos);
// Print the value to Serial Monitor
Serial.print("posisi: ");
Serial.print(safePos);
Serial.println(" degree");
}
void setup() {
// begin serial port
int pos = 0;
Serial.begin (9600);
pinMode(23, OUTPUT);
servo.attach(servoPin, 500, 2400);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, my_timer);
digitalWrite(23,HIGH);
delay(1000);
digitalWrite(23,LOW);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
timer.run();
}