//Nama : Valya Zana Luthfiya
//NPM : 4620215001
//Tugas Project IOT 2: ESP32, Relay, LED, Servo
#include <WiFi.h>
#include "ThingSpeak.h"
#include <ESP32Servo.h>
//define led
#define led1 12
#define led2 14
#define led3 15
#define led4 2
//define relay
#define relay1 = 18;
#define relay2 = 5;
#define relay3 = 4;
//Inisialisasi pin untuk Wifi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2351556 ;
const char* myApiKey = "I3ZWRIF5OANKJ9PL";
const char* server = "api.thingspeak.com";
//servo
const int servoPin = 25;
Servo servo;
WiFiClient client;
void setup() {
//set serial monitor
//servo
servo.attach(servoPin, 500, 2400);
// initialize position of 0 degrees
int pos = 0;
//thingspeak
Serial.begin(115200);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
//LED
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
// RELAY
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
}
void loop() {
//thingspeak
int Lampu_1=ThingSpeak.readFloatField(myChannelNumber,1,readAPIKey);
if (Lampu_1 == 1)
{
digitalWrite(led1, HIGH);
}
else if(Lampu_1 == 0)
{
digitalWrite(led1, LOW);
}
int Lampu_2=ThingSpeak.readFloatField(myChannelNumber,2,readAPIKey);
if (Lampu_2 == 1)
{
digitalWrite (led2, HIGH);
}
else if(Lampu_2 == 0)
{
digitalWrite(led2, LOW);
}
int Lampu_3=ThingSpeak.readFloatField(myChannelNumber,3,readAPIKey);
if (Lampu_3 == 1)
{
digitalWrite(led3, HIGH);
}
else if(Lampu_3 == 0)
{
digitalWrite(led3, LOW);
}
int Lampu_4=ThingSpeak.readFloatField(myChannelNumber,4,readAPIKey);
if (Lampu_4 == 1)
{
digitalWrite(led4, HIGH);
}
else if(Lampu_4 == 0)
{
digitalWrite(led4, LOW);
}
delay(1000); //agar tidak langsung diproses
//Servo
for (pos = 0; pos <= 180; pos += 1) {
servo.write(pos);
delay(50);
}
// for loop that decreases the angle by 1 from 180 to 0 with a delay of 10 ms per angle
for (pos = 180; pos >= 0; pos -= 1) {
servo.write(pos);
delay(50);
}
}