Estimados
Quería ver si me pueden ayudar, estoy creando un fermentador para pan el cual lo estoy controlando con un arduino mega pero pasados 8 minutos aproximadamente se congela y no responde ademas de que cuando lo desconecto de la corriente eléctrica y lo vuelvo a conectar no arranca, estoy usando como hardware:
1 Arduino Mega
2 sensores de humedad y temperatura dht11 con pcb.
1 LCD de 20x4 con el modulo I2C.
1 Rele de dos salidas para 30 A
2 pulsadores con resistencia de 10 K
1 boton con resistencia de 10 k.
Anexo mi codigo.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT11.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const int inputPin1 = 2; //Sensor Arriba
const int inputPin2 = 3; //Sensor Abajo
const int inputPin4 = 4; //Pulsador Inferior
const int inputPin5 = 5; //Pulsador Superior
const int inputPin6 = 6; //Boton Encendido
const int outputPin7 = 7; //Rele Calor
const int outputPin8 = 8; //Rele Frio
int valuePin4 = 0;
int valuePin5 = 0;
int valuePin6 = 0;
int valuePin7 = 0;
int valuePin8 = 0;
int selectProgram = 0;
int salirSelect = 0;
float temp, hum;
float temp2, hum2;
float periodoSensor = 5000;
unsigned long tiempoSensor = -5000;
long periodoCalor = 60000;
unsigned long inicioProgramCalor = 0;
DHT11 dht11(inputPin1);
DHT11 dht12(inputPin2);
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(inputPin4,INPUT);
pinMode(inputPin5,INPUT);
pinMode(inputPin6,INPUT);
pinMode(outputPin7,OUTPUT);
pinMode(outputPin8,OUTPUT);
}
void loop()
{
valuePin4 = digitalRead(inputPin4);
valuePin5 = digitalRead(inputPin5);
valuePin6 = digitalRead(inputPin6);
if(valuePin6 == HIGH){
if(millis() > tiempoSensor + periodoSensor){
dht11.read(hum, temp);
dht12.read(hum2, temp2);
Serial.print("Temperatura 1: ");
Serial.print(temp);
Serial.print(" Humedad 1: ");
Serial.print(hum);
Serial.print("Temperatura 2: ");
Serial.print(temp2);
Serial.print(" Humedad 2: ");
Serial.print(hum2);
Serial.println();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Humedad: ");
lcd.setCursor(9,0);
lcd.print(hum);
lcd.setCursor(15,0);
lcd.print(hum2);
lcd.setCursor(0,1);
lcd.print("Temp:");
lcd.setCursor(6,1);
lcd.print(temp);
lcd.setCursor(12,1);
lcd.print(temp2);
tiempoSensor = millis();
}
if(valuePin5 == HIGH && valuePin4 == LOW){
lcd.clear();
Serial.print("Hola Soy Sistema");
Serial.println();
if(selectProgram == 0){
lcd.setCursor(0,0);
lcd.print("Seleccione Sistema ");
lcd.setCursor(0,2);
lcd.print("Fermentar ahora <");
do{
valuePin4 = digitalRead(inputPin4);
valuePin5 = digitalRead(inputPin5);
if(valuePin4 == HIGH){
salirSelect = 1;
Serial.print("Salgo del Do");
Serial.println();
selectProgram = 1;
if(selectProgram == 1){
inicioProgramCalor = millis();
Serial.print(selectProgram);
Serial.println();
}
}
}while(salirSelect == 0);
salirSelect = 0;
}else{
lcd.setCursor(0,0);
lcd.print("Seleccione Sistema ");
lcd.setCursor(0,2);
lcd.print("Enfriar Ahora <");
do{
valuePin4 = digitalRead(inputPin4);
valuePin5 = digitalRead(inputPin5);
if(valuePin4 == HIGH){
salirSelect = 1;
Serial.print("Salgo del Do");
Serial.println();
selectProgram = 0;
if(selectProgram == 0){
inicioProgramCalor = 0;
Serial.print(selectProgram);
Serial.println();
}
}
}while(salirSelect == 0);
salirSelect = 0;
}
}
if(selectProgram == 1){
if(millis() < inicioProgramCalor + periodoCalor){
lcd.setCursor(0,2);
lcd.print("Ciclo Calor ");
if(temp <= 25){
digitalWrite(outputPin7, HIGH);
digitalWrite(outputPin8, LOW);
//Serial.print(inicioProgramCalor);
//Serial.println();
}else{
digitalWrite(outputPin7, LOW);
digitalWrite(outputPin8, LOW);
}
}else{
digitalWrite(outputPin7, LOW);
selectProgram = 0;
inicioProgramCalor = 0;
}
}else{
lcd.setCursor(0,2);
lcd.print("Ciclo Frio ");
if(temp2 >= 4 || temp >= 2){
digitalWrite(outputPin8, HIGH);
}else{
digitalWrite(outputPin8, LOW);
}
}
}else{
Serial.print("El sistema esta apagado");
Serial.println();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Apagado");
digitalWrite(outputPin8, LOW);
}
}