/**
*
*/
#include <WiFi.h>
#include <ThingSpeak.h>
const int TRIG_PIN = 2;
const int ECHO_PIN = 4;
const int YELLOW_LED = 13;
const int GREEN_LED = 14;
const int RED_LED = 12;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2313788;
const char* myApiKey = "1K40ID5WLHJCF46Y";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
digitalWrite(TRIG_PIN, LOW);
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);
}
void loop() {
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
double distanceCM = pulseIn(ECHO_PIN, HIGH) * 0.017;
if(distanceCM < 28) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
} else if(distanceCM >= 28 && distanceCM < 40) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(YELLOW_LED, LOW);
} else {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, HIGH);
}
ThingSpeak.setField(1, String(distanceCM, 2));
int res = ThingSpeak.writeFields(myChannelNumber, myApiKey);
Serial.println("Distance: " + String(distanceCM, 2) + " cm");
if(res == 200) {
Serial.println("Data published successfully");
} else {
Serial.println("Publish error: " + String(res));
}
delay(9000);
}