#include <WiFi.h>
#include <HTTPClient.h>
const char* URL_BASE = "http://estacionamiento.techlov.website/listar.php?id=";
int idEstacionamiento; // Variable para almacenar el ID del estacionamiento actual
//mio
const int trigPin = 13;
const int echoPin = 12;
const int ledVerdePin = 2;
const int ledRojoPin = 18;
const int trigPin2 = 14;
const int echoPin2 = 12;
const int ledVerdePin2 = 4;
const int ledRojoPin2 = 15;
const int trigPin3 = 27;
const int echoPin3 = 12;
const int ledVerdePin3 = 5;
const int ledRojoPin3 = 19;
const int trigPin4 = 26;
const int echoPin4 = 12;
const int ledVerdePin4 = 22;
const int ledRojoPin4 = 21;
void actualizarEstadoServicioWeb(const char* estado) {
HTTPClient http;
// Comprobar la conexión al servicio web
if (WiFi.status() == WL_CONNECTED) {
// Construir la URL completa con el estado y el ID del estacionamiento
String url = String(URL_BASE) + String(idEstacionamiento) + "&estado=" + estado;
// Imprimir la URL para depuración
Serial.print("URL completa: ");
Serial.println(url);
// Realizar la solicitud HTTP GET
http.begin(url);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.printf("[HTTP] GET... código de estado: %d\n", httpCode);
} else {
Serial.printf("[HTTP] GET... fallo, código de error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.println("Error: No se pudo conectar a la red Wi-Fi");
}
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledVerdePin, OUTPUT);
pinMode(ledRojoPin, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(ledVerdePin2, OUTPUT);
pinMode(ledRojoPin2, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(ledVerdePin3, OUTPUT);
pinMode(ledRojoPin3, OUTPUT);
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
pinMode(ledVerdePin4, OUTPUT);
pinMode(ledRojoPin4, OUTPUT);
Serial.begin(115200);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
}
void loop() {
// Función para manejar un sensor individual
auto manejarSensor = [](int trig, int echo, int ledVerde, int ledRojo, const char* estado) {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
// Mide el tiempo de eco en microsegundos
long tiempo = pulseIn(echo, HIGH);
// Convierte el tiempo a distancia en centímetros
int distancia = tiempo / 58.2;
// Imprime la distancia en el monitor serial
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
// Enciende el LED verde si la distancia es menor o igual a 5 cm, de lo contrario, apágalo
if (distancia <= 5) {
digitalWrite(ledVerde, HIGH);
digitalWrite(ledRojo, LOW); // Apaga el LED rojo
// Ejemplo: Actualizar el estado en el servidor web a "desocupado"
actualizarEstadoServicioWeb("ocupado");
Serial.println("Estado: ocupado");
} else {
digitalWrite(ledVerde, LOW);
digitalWrite(ledRojo, HIGH); // Enciende el LED rojo
// Ejemplo: Actualizar el estado en el servidor web a "ocupado"
actualizarEstadoServicioWeb("desocupado");
Serial.println("Estado: desocupado");
}
};
// Sensor 1 (ID 1)
idEstacionamiento = 1;
manejarSensor(trigPin, echoPin, ledVerdePin, ledRojoPin, "desocupado");
// Sensor 2 (ID 2)
idEstacionamiento = 2;
manejarSensor(trigPin2, echoPin2, ledVerdePin2, ledRojoPin2, "desocupado");
// Sensor 3 (ID 3)
idEstacionamiento = 3;
manejarSensor(trigPin3, echoPin3, ledVerdePin3, ledRojoPin3, "desocupado");
// Sensor 3 (ID 4)
idEstacionamiento = 4;
manejarSensor(trigPin4, echoPin4, ledVerdePin4, ledRojoPin4, "desocupado");
delay(500); // Espera medio segundo antes de realizar la próxima medición
}