Estoy intentando hacer una casa inteligente, traté de unir estos dos códigos, el cual el primero sería para un sensor DHT 11 con una pantalla LCD 1602A y módulo I2C que muestre la temperatura y la humedad. El segundo es más sencillo, solo deberían encender o pagar una cadena de 5 leds mediante el monitor serial con las teclas numericas. Estos dos por separado funcionan bien, pero al momento de unirlos el código de los leds se vuelve inservible porque el monitor serial no responde ni muestra ninguna mensaje para poder mandar a encender/apagar los leds. Debo mencionar a que tal vez sea debido a que utilicé una IA para unirlos, ya que no sé mucho de programación
Estos son los que intenté unir:
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int SENSOR = 2;
DHT dht(SENSOR, DHT11);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C y dimensiones de la pantalla
void setup() {
dht.begin();
lcd.init(); // Inicializar la pantalla
lcd.backlight(); // Encender la retroiluminación
}
void loop() {
float humedad = dht.readHumidity();
float temp = dht.readTemperature();
// Ajustar el período de muestreo a 2 segundos
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(humedad);
lcd.print("%");
// Esperar un momento antes de la siguiente lectura
delay(1000);
}
El otro
int leds[] = {2, 3, 4, 5, 6}; // Pin numbers for the LEDs
int numLeds = sizeof(leds) / sizeof(leds[0]); // Calculate the number of LEDs
void setup() {
Serial.begin(9600);
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
}
Serial.println("TUTORIALES");
Serial.println("ENCENDIDO Y APAGADO DE LED POR TECLADO");
Serial.println("Presiona los números del 1 al 5 para alternar el estado de los LEDs, y 0 para apagar todos los LEDs.");
}
void loop() {
if (Serial.available() > 0) {
char letra = Serial.read();
int ledIndex = letra - '0'; // Convert char to LED index
if (ledIndex >= 0 && ledIndex <= numLeds) {
if (ledIndex == 0) {
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW); // Apagar todos los LEDs
}
Serial.println("Todos los LEDs apagados");
} else if (ledIndex >= 1 && ledIndex <= numLeds) {
digitalWrite(leds[ledIndex - 1], !digitalRead(leds[ledIndex - 1])); // Alternar estado del LED
if (digitalRead(leds[ledIndex - 1])) {
Serial.print("Led ");
Serial.print(ledIndex);
Serial.println(" encendido");
} else {
Serial.print("Led ");
Serial.print(ledIndex);
Serial.println(" apagado");
}
}
}
}
delay(50); // Pequeño retraso para evitar problemas de lectura del teclado
}
Y cuando lo intenté unir:
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int SENSOR = 2;
DHT dht(SENSOR, DHT11);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C y dimensiones de la pantalla
int leds[] = {2, 3, 4, 5, 6}; // Pin numbers for the LEDs
int numLeds = sizeof(leds) / sizeof(leds[0]); // Calculate the number of LEDs
void setup() {
dht.begin();
lcd.init(); // Inicializar la pantalla
lcd.backlight(); // Encender la retroiluminación
Serial.begin(9600);
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
}
Serial.println("Guaposaurio Dice Bla Bla Bla TUTORIALES");
Serial.println("ENCENDIDO Y APAGADO DE LED POR TECLADO");
Serial.println("Presiona los números del 1 al 5 para alternar el estado de los LEDs, y 0 para apagar todos los LEDs.");
}
void loop() {
// Código para el sensor DHT y la pantalla LCD
float humedad = dht.readHumidity();
float temp = dht.readTemperature();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(humedad);
lcd.print("%");
// Esperar un momento antes de la siguiente lectura
delay(1000);
// Código para controlar los LEDs desde el teclado
if (Serial.available() > 0) {
char letra = Serial.read();
int ledIndex = letra - '0'; // Convert char to LED index
if (ledIndex >= 0 && ledIndex <= numLeds) {
if (ledIndex == 0) {
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW); // Apagar todos los LEDs
}
Serial.println("Todos los LEDs apagados");
} else if (ledIndex >= 1 && ledIndex <= numLeds) {
digitalWrite(leds[ledIndex - 1], !digitalRead(leds[ledIndex - 1])); // Alternar estado del LED
if (digitalRead(leds[ledIndex - 1])) {
Serial.print("Led ");
Serial.print(ledIndex);
Serial.println(" encendido");
} else {
Serial.print("Led ");
Serial.print(ledIndex);
Serial.println(" apagado");
}
}
}
}
delay(50); // Pequeño retraso para evitar problemas de lectura del teclado
}