#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* host = "api.thingspeak.com";
const char* apiKey = "IUTTRGKR2CVSPS23";
const int sensorPin = 34; // Pin untuk potensiometer
const int ledPin = 2; // Pin LED
const int buzzerPin = 4; // Pin Buzzer
const float threshold = 35.0; // Ambang batas kecepatan angin
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(sensorPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
connectWiFi();
}
void loop() {
float sensorValue = analogRead(sensorPin);
float voltage = sensorValue * (5.0 / 4095.0); // Konversi nilai sensor menjadi tegangan (0 - 5V)
float windSpeed = mapFloat(voltage, 0.0, 5.0, 0.0, 100.0); // Konversi tegangan menjadi kecepatan angin (0 - 100 mph)
lcd.setCursor(0, 0);
lcd.print("Kecepatan Angin:");
lcd.setCursor(0, 1);
lcd.print(windSpeed);
lcd.print(" kph ");
if (windSpeed > threshold) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000); // Nada 1000Hz
} else {
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
}
sendToThingspeak(windSpeed);
delay(1000); // Delay 1 detik antara pembacaan nilai
}
void connectWiFi() {
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}
void sendToThingspeak(float value) {
WiFiClient client;
if (!client.connect(host, 80)) {
Serial.println("Connection to Thingspeak failed");
return;
}
String url = "/update?api_key=";
url += apiKey;
url += "&field1=";
url += String(value);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(1000);
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
client.stop();
}
float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}