Antulio Morgado
/
FRDM-KL46Z_Deshidratador
Version Beta para la FRDM-KL46Z del original de Arduino Uno
Diff: main.cpp
- Revision:
- 12:e134e66034c7
- Parent:
- 10:fb06357df7d7
- Child:
- 13:a6dd1f4321e3
--- a/main.cpp Tue Nov 06 04:52:20 2018 +0000 +++ b/main.cpp Tue Nov 13 08:13:05 2018 +0000 @@ -30,7 +30,13 @@ * Se añadió variable de "error_code" para monitoreo de operación del DHT * Se añadió libreria RGB para convertirla a objetos para utilizarse en la * señalización de Alarmas -* Fallo de control de seguridad al Canceler el Proceso de Deshidratación +* Fallo de control de seguridad al Cancelar el Proceso de Deshidratación +* - 13/11/18 +* Problemas para realizar más lecturas no se actualizan las variables dentro +* de la biblioteca DHT +* _firsttime=false; +* _lastReadTime=currentTime; +* Error 7 = ERROR_NO_PATIENCE; *******************************************************************************/ /* @@ -61,7 +67,7 @@ #define NOFRUTAS 11 #define CONDALARM 2 -#define DHT_TIPO DHT22 +#define DHT_TIPO DHT11 // Define el tipo de sensor: DHT11 o DHT22 #define DHT_PIN PTA13 #define on 0 // Estado para boton presionado #define off 1 // Estado para boton sin presionar @@ -162,8 +168,8 @@ //TextLCD_SPI lcd(&spi_LCD, PTD4, TextLCD::LCD16x4, TextLCD::HD44780); // SPI bus, SN74595 expander, CS pin, LCD Type TextLCD_I2C lcd(&i2c_LCD, 0x7E, TextLCD::LCD20x4); // I2C bus, PCF8574A Arduino Shield, LCD Type -//librerias del DHT22 -DHT dht(PTA13, DHT22); // DHT_PIN, DHT_TIPO (DHT11, DHT22) +//librerias del Sensor de Humedad y Temperatura +DHT dht(PTA13, DHT_TIPO); // DHT_PIN, DHT_TIPO (DHT11, DHT22) /* ** =================================================================== @@ -230,8 +236,8 @@ ** Variables que guardan datos de los sensores. ** -------------------------------------------------------------------*/ -float h; //Guarda la Humedad del ambiente. -float t; //Guarda la Temperatura del ambiente. +float humedad; //Guarda la Humedad del ambiente. +float temperatura; //Guarda la Temperatura del ambiente. float TF; //Variable que guarda la temperatura final. float HF; //Variable que guarda la humedad final. @@ -400,9 +406,9 @@ wait_ms(500); PIN_BUZZER = Buzz_Off; /* Configufración del Display LCD */ /* Mucho OjO !!! */ -// spi_LCD.frequency(1000000); // Frecuencia de operación para el SPI +// spi_LCD.frequency(100000); // Frecuencia de operación para el SPI (100KHz) // spi_LCD.format(8,0); // Modo de Operación para el SPI - i2c_LCD.frequency(100000); // Frecuencia de operación para el I2C + i2c_LCD.frequency(100000); // Frecuencia de operación para el I2C (100KHz) i2c_LCD.start(); // Inicio de operación para el I2C /* Arranque del Display LCD */ Terminal.printf("LCD Display is Starting...\n\r"); @@ -687,9 +693,9 @@ lcd.setBacklight(TextLCD::LightOn); // Enciende la Iluminación de Fondo lcd.setCursor(TextLCD::CurOff_BlkOff); // Apaga el Cursor lcd.locate(12, 0); //Coloca el cursor en la columna 12 y fila 0. - lcd.printf("%.2f",t); //Imprime valores de temperatura. + lcd.printf("%.2f",temperatura); //Imprime valores de temperatura. lcd.locate(8, 1); //Coloca el cursor en la columna 8 fila 1. - lcd.printf("%.2f",h); //Imprime valores de humedad. + lcd.printf("%.2f",humedad); //Imprime valores de humedad. lcd.locate(6, 2); //Coloca el cursor en columna 6 fila 2. Porcentaje = DC * 100 / 255; // if (Motor) { //Vericamos estado del motor. @@ -721,11 +727,11 @@ void Imprime_Tiempo(int Columna,int Fila) { lcd.setBacklight(TextLCD::LightOn); // Enciende la Iluminación de Fondo lcd.setCursor(TextLCD::CurOff_BlkOff); // Apaga el Cursor - lcd.locate(Columna, Fila); + lcd.locate(Columna, Fila); // Listo para escribir if (Hor < 10) - lcd.printf("0"); - lcd.printf("%d",Hor); - lcd.printf(":"); + lcd.printf("0"); + lcd.printf("%d",Hor); + lcd.printf(":"); if (Min < 10) lcd.printf("0"); lcd.printf("%d",Min); @@ -815,28 +821,38 @@ PIN_BUZZER = Buzz_Off; //Apaga el buzzer wait(1); } - else { //NO... + else { //NO..., Todo está bien, entonces Imprime_InfoDeshidratacion(); //Colocamos mensajes en la LCD. while (!PuertaAb && Deshidratando && !Bandera) { //Mientras la puerta este cerrada y la variable Desidratando sea verdadera. - error_code=dht.readData(); //Lee el Sensor de Humedad y Temperatura - if (error_code != 0) { + error_code = 0; //Limpia el Código de Error + Terminal.printf("\rReading DHT ... "); //Envia mensaje a la Terminal + error_code=dht.readData(); //Lee el Sensor de Humedad y Temperatura + Terminal.printf("\r\nError Code: %d \r\n", error_code); //Imprime el Código de Error + if (error_code == 0) { // Si todo OK + Terminal.printf("Temperature is %4.2f C \r\n",dht.ReadTemperature(CELCIUS)); + temperatura = dht.ReadTemperature(CELCIUS); //Se lee la temperatura: CELCIUS=0,FARENHEIT=1,KELVIN=2 + Terminal.printf("Temperature is %4.2f F \r\n",dht.ReadTemperature(FARENHEIT)); + Terminal.printf("Temperature is %4.2f K \r\n",dht.ReadTemperature(KELVIN)); + Terminal.printf("Humidity is %4.2f \r\n" ,dht.ReadHumidity()); + humedad = dht.ReadHumidity(); //Se lee la humedad + Terminal.printf("Dew point is %4.2f \r\n" ,dht.CalcdewPoint(dht.ReadTemperature(CELCIUS), dht.ReadHumidity())); + Terminal.printf("Dew point (fast) is %4.2f \r\n",dht.CalcdewPointFast(dht.ReadTemperature(CELCIUS), dht.ReadHumidity())); + // dht.firsttime=false; +// Terminal.printf("\rHumedad: %.2f ", h); //Envia el valor hacia la terminal +// Terminal.printf("\tTemperatura: %.2f \r\n\v\v\v\v", t); + } else { Terminal.printf("\rError Reading DHT "); //No se puedo leer DHT Terminal.printf("\r\nPlease Check Sensor !!! \n\r"); //Envia mensaje de error a la Terminal lcd.cls(); //Limpiamos LCD. lcd.locate(1, 0); //Coloca el cursor al inicio de la fila. - lcd.printf("Error de Sensores");//Encia mensaje de Error. + lcd.printf("Error de Sensores");//Envia mensaje de Error. lcd.locate(1, 1); //Coloca el cursor al inicio de la fila. - lcd.printf("Revise Equipo ! "); //Encia mensaje de Error. + lcd.printf("Revise Equipo ! "); //Envia mensaje de Error. PIN_BUZZER = Buzz_On; //Enciende el buzzer - wait(10); //Espera 10 seg + wait(2); //Espera 2 seg } - Terminal.printf("\rReading DHT ... "); - Terminal.printf("\r\nError Code: %d \r\n", error_code); - h = dht.ReadHumidity(); //Se lee la humedad - Terminal.printf("\rHumedad: %.2f ", h); - t = dht.ReadTemperature(CELCIUS); //Se lee la temperatura: CELCIUS=0,FARENHEIT=1,KELVIN=2 - Terminal.printf("\tTemperatura: %.2f \r\n\v\v\v\v", t); - Checar_Calefactor(Temp[FrutaD]); //Verifica sesores y enciende componentes. + + Checar_Calefactor(Temp[FrutaD]); //Verifica sensores y enciende componentes. Imprime_InfoSensores(); //Impresion de informacion de sensores, Imprime_Tiempo(7, 3); //Impresion de Tiempo. if (Hor == 5 && Min == 30) { //Tiempo Transcurrido es igual a 5:30:XX . @@ -847,11 +863,12 @@ } } } + //Deshidratacion terminada. Terminal.printf("\rDeshidratacion Terminada \n\r"); Terminal.printf("\rTiempo Terminado !!! \n\r"); - TF = t; //Almacenamos el valor final de temperatura. - HF = h; //Almacenamos el valor final de humedad. + TF = temperatura; //Almacenamos el valor final de temperatura. + HF = humedad; //Almacenamos el valor final de humedad. Terminal.printf("\rHumedad Final: %.2f ", HF); //Humedad Final Terminal.printf("\tTemperatura Interna: %.2f \r\n\v\v\v\v", TF); //Temperatura Final Deshidratando = 0; //Indica que termina la deshidratacion. @@ -860,7 +877,7 @@ return 1; //Indicamos que termino la deshidratación. } else - return 0; //Indica que no se inicio el proceso. + return 0; //Continua proceso de Deshidratación. } /* ** =================================================================== @@ -971,20 +988,20 @@ ** =================================================================== */ void Checar_Calefactor(int TempD) { - if ((t > (TempD - 2) && t < (TempD + 1)) || (h > 75)) + if ((temperatura > (TempD - 2) && temperatura < (TempD + 1)) || (humedad > 75)) MotorON(130); - else if (t < (TempD - 2) && (h <= 75)) + else if (temperatura < (TempD - 2) && (humedad <= 75)) MotorOFF(); - else if (t >= (TempD + 1)) + else if (temperatura >= (TempD + 1)) // MotorON(196); - if (t <= (TempD - 1)) { //Checa si el quemador esta apagado y su tempertatura es igual o menor que la temperatura de la fruta. - wait_ms(1000); //Retardo de 1 seg. - CalefactorON(); + if (temperatura <= (TempD - 1)) { //Checa si el quemador esta apagado y su tempertatura es igual o menor que la temperatura de la fruta. + wait_ms(1000); //Retardo de 1 seg. + CalefactorON(); //Enciende el elemento calaefactor } - else if (t >= (TempD + 1)) { //Checa si el motor esta encendido y la si la temperatura es mayor a la maxima permitida - CalefactorOFF(); - wait_ms(2000); //retardo de 2 segundos. + else if (temperatura >= (TempD + 1)) { //Checa si el motor esta encendido y la si la temperatura es mayor a la maxima permitida + CalefactorOFF(); //Apaga el elemento calefactor + wait_ms(2000); //retardo de 2 segundos. } } /* @@ -1016,15 +1033,18 @@ //Enfriamiento del Sistema CalefactorOFF(); //Apaga el Elemento Calefactor do { - t = dht.ReadTemperature(CELCIUS); //Se lee la temperatura: CELCIUS=0, FARENHEIT=1, KELVIN=2 - lcd.locate(13, 3); - lcd.printf("%.2f",t); //Temperatura interna del Deshidratador - Terminal.printf("\rEnfriando, Temperatura: %.2f",t); // - wait_ms(1000); //Espera 1 segundo +// error_code=dht.readData(); //Lee el Sensor de Humedad y Temperatura +// Esta linea genera ERROR_CHECKSUM +// wait(1); //Espera 1 segundo + temperatura = dht.ReadTemperature(CELCIUS); //Se lee la temperatura: CELCIUS=0, FARENHEIT=1, KELVIN=2 + lcd.locate(13, 3); + lcd.printf("%.2f",temperatura); //Temperatura interna del Deshidratador + Terminal.printf("\rEnfriando, Temperatura: %.2f",temperatura); // Envia Temperatura a la Terminal + wait_ms(1000); //Espera 1 segundo } - while (t > 37); //Hasta que la Temperatura Llega a 37°C + while (temperatura > 37); //Hasta que la Temperatura Llega a 37°C MotorOFF(); //Apaga el Elemento de Ventilación - if (t < 25 ){ + if (temperatura < 25 ){ printf("\rEs Seguro Abrir Deshidratador !!! \n\r"); lcd.cls(); //Limpia el LCD lcd.locate(3,1);