#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
// Konfigurasi WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Konfigurasi ThingSpeak
unsigned long myChannelNumber = 2561777 ;
const char* myWriteAPIKey = " BMFOBKZI71YUAIAK";
const char* server= "api.thingspeak.com";
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int metalSensor = 34;
const int ledGreen = 32;
const int ledRed = 33;
const int buzzer = 25;
void setup() {
Wire.begin(23, 22);
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(metalSensor, INPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("METAL DETECTOR");
delay(2000);
lcd.clear();
// Menghubungkan ke WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Menghubungkan ke ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
int metalLevel = map(analogRead(metalSensor), 0, 4095, 0, 1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("METAL: ");
lcd.print(metalLevel < 500 ? "NO" : "YES");
lcd.setCursor(0, 1);
lcd.print("READING: ");
lcd.print(metalLevel);
if (metalLevel < 500) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledRed, LOW);
noTone(buzzer);
} else {
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);
tone(buzzer, 450);
}
// Mengirim data ke ThingSpeak
ThingSpeak.writeField(myChannelNumber, 1, metalLevel, myWriteAPIKey);
delay(500);
}