//Menggunakan library WiFi untuk mengakses fitur WiFi pada perangkat Arduino
#include <WiFi.h>
//Mendeklarasikan SSID dan password untuk koneksi Wi-Fi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
//Menentukan pin yang digunakan untuk mengendalikan LED
int ItoLed = 14;
int MazLed = 12; //menambah 1 LED
//Membuat objek server dengan port 80.
WiFiServer server(80);
void setup() {
Serial.begin(115200); //Memulai komunikasi serial dengan baud rate 115200
pinMode(ItoLed, OUTPUT); //Menentukan pin LED sebagai output
pinMode(MazLed, OUTPUT); //Menentukan pin LED sebagai output
digitalWrite(ItoLed, LOW); //Mengeset nilai awal LOW
digitalWrite(MazLed, LOW); //Mengeset nilai awal LOW
Serial.println("");
Serial.print("Menghubungkan ");
Serial.println(ssid);
//Menghubungkan perangkat ke jaringan WiFi yang ditentukan
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("-");
}
//Memulai server dan menampilkan alamat IP server di serial monitor
Serial.println("Terhubung");
server.begin(); //membuat koneksi sebagai server
Serial.println("Memulai server");
Serial.print("Alamat server : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
//Menunggu dan menerima koneksi dari klien
WiFiClient client = server.available();
if (!client) {
return;
}
//Menampilkan pada serial monitor jika ada klien
Serial.println("Ada Klien");
while(!client.available()){
delay(1);
}
//Membaca request dari klien
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
//Mengendalikan LED sesuai request yang diterima
int valueIto = LOW;
if (request.indexOf("/LED=ON") != -1) { //Menyalakan LED merah
digitalWrite(ItoLed, HIGH);
valueIto = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) { //Mematikan LED merah
digitalWrite(ItoLed, LOW);
valueIto = LOW;
}
int valueMaz = LOW;
if (request.indexOf("/LED11=ON") != -1) { //Menyalakan LED kuning
digitalWrite(MazLed, HIGH);
valueMaz = HIGH;
}
if (request.indexOf("/LED11=OFF") != -1) { //Mematikan LED kuning
digitalWrite(MazLed, LOW);
valueMaz = LOW;
}
/*Mengirim balasan HTTP kepada klien yang berisi status LED
dan tombol untuk mengendalikannya */
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
//Mengirimkan status untuk LED merah
client.print("Status LED Merah : ");
if(valueIto == HIGH) {
client.print("On");
}
else {
client.print("Off");
}
//Tombol untuk mengatur LED
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");
// Mengirimkan status untuk LED Kuning
client.print("Status LED Kuning : ");
if(valueMaz == HIGH) {
client.print("On");
}
else {
client.print("Off");
}
//Tombol untuk mengatur LED
client.println("<br><br>");
client.println("<a href=\"/LED11=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED11=OFF\"\"><button>Turn Off </button></a><br />");
client.println("</html>");
delay(1); // Memberi delay selama 1 millisecond
Serial.println("Klien Terputus"); //menampilkan pada serial monitor saat klien terputus
Serial.println("");
}