#include <WiFi.h>
#include <Adafruit_MQTT.h>
#include <Adafruit_MQTT_Client.h>
// Definir WiFi y Adafruit IO credentials
const char* ssid = "TU_WIFI";
const char* password = "TU_PASSWORD";
#define AIO_SERVER "io.adafruit.com"
#define AIO_USERNAME "andbar086"
#define AIO_KEY "aio_gOfc37p1HlqbsX7txnJ2ELZdzb6G"
// Pines de LEDs
const int led1 = 1;
const int led2 = 2;
const int led3 = 3;
const int led4 = 4;
// Pines para los motores
const int stepper1Pin1 = 14;
const int stepper1Pin2 = 12;
const int stepper2Pin1 = 2;
const int stepper2Pin2 = 15;
// Inicializar conexión Wi-Fi
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, 1883, AIO_USERNAME, AIO_KEY);
// Inicializar feeds de Adafruit IO
Adafruit_MQTT_Subscribe ledFeed1 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led1");
Adafruit_MQTT_Subscribe ledFeed2 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led2");
Adafruit_MQTT_Subscribe ledFeed3 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led3");
Adafruit_MQTT_Subscribe ledFeed4 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led4");
void setup() {
Serial.begin(115200);
// Conectar a WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando a WiFi...");
}
Serial.println("Conectado a WiFi");
// Conectar a Adafruit IO
mqtt.subscribe(&ledFeed1);
mqtt.subscribe(&ledFeed2);
mqtt.subscribe(&ledFeed3);
mqtt.subscribe(&ledFeed4);
if (mqtt.connect()) {
Serial.println("Conectado a Adafruit IO");
} else {
Serial.println("Error de conexión a Adafruit IO");
}
// Configurar pines de LEDs y motores
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(stepper1Pin1, OUTPUT);
pinMode(stepper1Pin2, OUTPUT);
pinMode(stepper2Pin1, OUTPUT);
pinMode(stepper2Pin2, OUTPUT);
}
void loop() {
// Procesar paquetes MQTT
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(10000))) {
int value = atoi((char *)subscription->lastread);
if (subscription == &ledFeed1) {
digitalWrite(led1, value);
} else if (subscription == &ledFeed2) {
digitalWrite(led2, value);
} else if (subscription == &ledFeed3) {
digitalWrite(led3, value);
} else if (subscription == &ledFeed4) {
digitalWrite(led4, value);
}
}
// Verificar si al menos dos LEDs están encendidos
int encendidos = digitalRead(led1) + digitalRead(led2) + digitalRead(led3) + digitalRead(led4);
if (encendidos >= 2) {
Serial.println("Encendiendo motores...");
digitalWrite(stepper1Pin1, HIGH);
digitalWrite(stepper1Pin2, HIGH);
digitalWrite(stepper2Pin1, HIGH);
digitalWrite(stepper2Pin2, HIGH);
// Aquí puedes agregar la lógica para enviar un correo con IFTTT
} else {
digitalWrite(stepper1Pin1, LOW);
digitalWrite(stepper1Pin2, LOW);
digitalWrite(stepper2Pin1, LOW);
digitalWrite(stepper2Pin2, LOW);
}
delay(1000);
}