Buenos días, tengo un problema con mi Arduino Mega 2560, y es que cuando le cargo el programa que voy a dejar puesto más abajo, se ejecuta el setup, y el código se bloquea y se pone a parpadear rápido el led integrado. He probado con otros códigos y no le sucede. No se a que se debe este fallo, necesito ayuda. Muchas gracias.
Este es el código:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <DHT.h>
#include <DHT_U.h>
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#define Power 0xFFA25D //Apagar pantalla
#define Funcion 0xFFE21D //Encender pantalla
#define Vol+ 0xFF629D //Subir brillo
#define Vol- 0xFFA857 //Bajar brillo
#define Arriba 0xFF906F //Cambio de pantalla
#define Abajo 0xFFE01F //Cambio de pantalla
#define Adelante 0xFFC23D //Subir píxeles
#define Atras 0xFF22DD //Bajar píxeles
#define Play 0xFF02FD //Apagar alarma
const int RS = 13;
const int E = 12;
const int VO = 11;
const int Led = 10;
const int D4 = 9;
const int D5 = 8;
const int D6 = 7;
const int D7 = 6;
const int IR = 5;
const int avisador = 4;
const int Sensor = 3;
int alarma = 0;
int temp;
int humedad;
int modo = 1;
int brillo = 150;
int pixel = 70;
LiquidCrystal lcd (RS, E, D4, D5, D6, D7);
DHT dht (Sensor, DHT11);
RTC_DS3231 rtc;
IRrecv irrecv(IR);
decode_results codigo;
void setup() {
pinMode(VO, OUTPUT);
pinMode(Led, OUTPUT);
analogWrite(VO, pixel);
analogWrite(Led, brillo);
Wire.begin();
// rtc.adjust(DateTime(__DATE__,__TIME__));
dht.begin();
lcd.begin(16, 2);
lcd.setCursor(4, 0);
lcd.print("Iniciando");
lcd.setCursor(5, 1);
lcd.print("sistema");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
irrecv.enableIRIn();
}
void loop(){
analogWrite(VO, pixel);
analogWrite(Led, brillo);
DateTime fecha = rtc.now();
humedad = dht.readHumidity();
temp = dht.readTemperature();
if (irrecv.decode(&codigo)) {
switch (codigo.value){
case 0xFFA25D:
brillo = 0;
pixel = 0;
break;
case 0xFFE21D:
brillo = 200;
pixel = 70;
break;
case 0xFF629D:
brillo = brillo + 1;
break;
case 0xFFA857:
brillo = brillo - 1;
break;
case 0xFF906F:
modo = 1;
break;
case 0xFFE01F:
modo = 0;
break;
case 0xFFC23D:
pixel = pixel + 1;
break;
case 0xFF22DD:
pixel = pixel - 1;
break;
case 0xFF02FD:
alarma = 0;
break;
}
}
if (brillo >= 250){
brillo = brillo - 1;
}
if (pixel >= 250){
pixel = pixel - 1;
}
if (modo == 1){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.setCursor(10, 0);
lcd.print(temp);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humedad:");
lcd.setCursor(10, 1);
lcd.print(humedad);
lcd.print("%");
delay(1000);
}
if (modo == 0){
lcd.clear();
lcd.setCursor(4, 0);
lcd.print(fecha.hour(), DEC);
lcd.print(":");
lcd.print(fecha.minute(), DEC);
lcd.print(":");
lcd.print(fecha.second(), DEC);
lcd.setCursor(3, 1);
lcd.print(fecha.day(), DEC);
lcd.print("/");
lcd.print(fecha.month(), DEC);
lcd.print("/");
lcd.print(fecha.year(), DEC);
delay(1000);
}
}