#include <ESP32Servo.h>
#include <WiFi.h>
#include<HTTPClient.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TRIG_PIN 23 // PIN triger ultrasonik
#define ECHO_PIN 22 // PIN echo utrasonik
#define SERVO_PIN 26 // pin PWM motor servo
#define DISTANCE_THRESHOLD 50 // batasjarak
Servo servo; // create servo object to control a servo
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String serverName = "https://api.thingspeak.com/update?api_key=S1SETLSIHHOMUXSI&field1=0";
String serverName2 = "https://api.thingspeak.com/channels/2364097/feeds/last.json?api_key=FCARSJ9DWTR7CJXP";
// variables will change:
float duration_us, distance_cm;
void setup() {
Serial.begin (9600); // inisialisasi serial port
WiFi.begin(ssid, pass);
while (WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
pinMode(TRIG_PIN, OUTPUT); // mengatur pin triger menjadi output
pinMode(ECHO_PIN, INPUT); // mengatur pin echo menjadi input
servo.attach(SERVO_PIN); // menempelkan servo pada pin 9 ke objek servo
servo.write(0);
}
void loop() {
// menghasilkan pulsa 10 mikrodetik ke pin TRIG
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// mengukur durasi pulsa dari pin ECHO
duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
if (distance_cm < DISTANCE_THRESHOLD)
servo.write(0); // memutar servo ke 90 derajat
else
servo.write(90); // memutar servo ke 0 deraja
// menampilkn nilainya ke Serial Monitor
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
if(WiFi.status()== WL_CONNECTED)
{
HTTPClient http;
String serverPath = serverName + String(distance_cm);
http.begin(serverPath);
int httpResponseCode = http.GET();
if (httpResponseCode>0)
{
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else
{
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
else
{
Serial.println("WiFi Disconnected");
}
}