#include <WiFi.h>
#include <MQTT.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const char mqtt_broker[]="test.mosquitto.org";
const char mqtt_topic[]="ESP117";
const char mqtt_client_id[]="arduino_group_x";
int MQTT_PORT=1883;
int counter=0;
WiFiClient net;
MQTTClient client;
const int trigPin = 5;
const int echoPin = 18;
const double LEDPina = 33;
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701
long duration;
float distanceCm;
float distanceInch;
unsigned long lastMillis = 0;
void connect() {
Serial.print("checking wifi...");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.print("\nconnecting...");
while (!client.connect(mqtt_client_id)) {
Serial.print(".");
delay(1000);
}
Serial.println("\nconnected!");
client.subscribe(mqtt_topic);
// client.unsubscribe("/hello");
}
void messageReceived(String &topic, String &payload) {
Serial.println("incoming: " + topic + " - " + payload);
if(payload == String("10")) digitalWrite(33, HIGH);
if(payload == String("0")) digitalWrite(33, LOW);
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(33, OUTPUT);
Serial.begin(9600);
WiFi.begin(ssid, pass);
client.begin(mqtt_broker, MQTT_PORT, net);
client.onMessage(messageReceived);
connect();
}
void loop()
{
client.loop();
delay(10);
if (!client.connected()) {
connect();
}
if (millis() - lastMillis > 1000) {
// digitalWrite(23,HIGH);
// delay(1000);
// digitalWrite(23, LOW);
// delay(1000);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * SOUND_SPEED/2;
// Serial.print("Distance (cm): ");
// Serial.println(distanceCm);
// lastMillis = millis();
// if(distanceCm < 50)
// {
// digitalWrite(23, HIGH);
// client.publish("ESP101", "10");
// }
// else
// {
// digitalWrite(23, LOW);
// client.publish("ESP101", "0");
// }
delay(1000);
}
}