#include <Adafruit_NeoPixel.h>
#include <WiFi.h>
#include <time.h>
#define LED_PIN 13 // Pin al que está conectada la tira de LED RGB
#define NUM_LEDS 48 // Número de LEDs en la tira
const int LDR_BOTTOM_LEFT = 32;
const int LDR_BOTTOM_RIGHT = 33;
const int NO_LIGHT_THRESHOLD = 50; // Umbral para considerar que no hay luz
const char* ssid = "Wokwi-GUEST"; // Añadir tu SSID de WiFi
const char* password = ""; // Añadir tu contraseña de WiFi
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET -3
#define UTC_OFFSET_DST 0
Adafruit_NeoPixel leds = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
// Conexión a la red
Serial.println("Conectando a WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // Wait until WiFi is connected
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Connected to the WiFi network"); // Print wifi connect message
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
// Configuración del servidor NTP
configTime(UTC_OFFSET * 3600, UTC_OFFSET_DST * 3600, NTP_SERVER);
pinMode(LDR_BOTTOM_LEFT, INPUT);
pinMode(LDR_BOTTOM_RIGHT, INPUT);
leds.begin();
leds.show(); // Inicializar la tira de LEDs
// Probar con un color fijo
uint32_t testColor = leds.Color(255, 0, 0); // Rojo
for (int i = 0; i < NUM_LEDS; i++) {
leds.setPixelColor(i, testColor);
}
leds.show();
Serial.println("Prueba de LED en color rojo");
}
void loop() {
int ldr_bl_value = analogRead(LDR_BOTTOM_LEFT);
int ldr_br_value = analogRead(LDR_BOTTOM_RIGHT);
Serial.print("LDR_BOTTOM_LEFT value: ");
Serial.println(ldr_bl_value);
Serial.print("LDR_BOTTOM_RIGHT value: ");
Serial.println(ldr_br_value);
checkLightLevels(ldr_bl_value, ldr_br_value);
}
void checkLightLevels(int ldr_bl, int ldr_br) {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Error de conexión con el servidor NTP");
return;
}
// Mostrar la hora, fecha y lugar en el monitor serial
Serial.print("Hora actual: ");
Serial.printf("%02d:%02d:%02d\n", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
Serial.print("Fecha: ");
Serial.printf("%02d/%02d/%04d\n", timeinfo.tm_mday, timeinfo.tm_mon + 1, timeinfo.tm_year + 1900);
Serial.println("Lugar: Buenos Aires");
int currentHour = timeinfo.tm_hour;
if (ldr_bl < NO_LIGHT_THRESHOLD && ldr_br < NO_LIGHT_THRESHOLD && currentHour >= 9 && currentHour < 22) {
uint32_t magenta = leds.Color(255, 0, 255); // Definir el color magenta
for (int i = 0; i < NUM_LEDS; i++) {
leds.setPixelColor(i, magenta); // Establecer el color magenta en cada LED de la tira
}
leds.show(); // Mostrar el color en la tira de LEDs
Serial.println("Se prendieron las luces de crecimiento");
} else {
for (int i = 0; i < NUM_LEDS; i++) {
leds.setPixelColor(i, 0); // Apagar cada LED de la tira
}
leds.show(); // Mostrar el cambio en la tira de LEDs
Serial.println("No prendieron las luces de crecimiento");
}
}