#include <Wire.h>
#include <ESP32Servo.h>
#include <WiFi.h>
#include "ThingSpeak.h"
Servo servoMotor;
int posisi;
unsigned long previousMillis = 0;
const long interval = 500;
bool ledState = LOW;
int ledr = 13;
int ledg = 14;
int ledy = 27;
int buzzer = 26;
bool bas = true;
int sw1 = 15;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2468853;
const char* myApiKey = "VN2UDZGOKYJTNMY4";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(27, OUTPUT);
pinMode(26, OUTPUT);
pinMode(sw1, INPUT_PULLUP);
Wire.begin();
servoMotor.attach(12);
connectToWiFi();
}
void loop() {
sw1 = digitalRead(15);
if (sw1 == LOW) {
posisi = map(analogRead(A0), 0, 4095, 0, 180);
Serial.print("Posisi : ");
Serial.println(posisi);
servoMotor.write(posisi);
kondisi();
ThingSpeak.setField(1,posisi);
} else {
digitalWrite(ledr, LOW);
digitalWrite(ledg, LOW);
digitalWrite(ledy, LOW);
}
}
void kondisi() {
unsigned long currentMillis = millis(); // Mendapatkan waktu sekarang
bool buzzerState = false;
if (posisi <= 60) {
led(ledState, 0, 0);
buzzerState = true;
} else if (posisi > 60 && posisi < 120) {
led(0, ledState, 0);
buzzerState = true;
} else {
led(0, 0, ledState);
buzzerState = true;
}
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// if (buzzerState) {
// tone(buzzer, 1000, 100); // Mainkan nada dengan frekuensi 1000 Hz selama 100 ms
// } else {
// noTone(buzzer); // Matikan buzzer
// }
// Ubah status LED
ledState = !ledState;
}
}
void led(bool x, bool y, bool z) {
digitalWrite(ledy, x);
digitalWrite(ledg, y);
digitalWrite(ledr, z);
}
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}