Antulio Morgado
/
FRDM-KL46Z_Deshidratador
Version Beta para la FRDM-KL46Z del original de Arduino Uno
Diff: main.cpp
- Revision:
- 13:a6dd1f4321e3
- Parent:
- 12:e134e66034c7
- Child:
- 14:cd1626949b77
--- a/main.cpp Tue Nov 13 08:13:05 2018 +0000 +++ b/main.cpp Thu Dec 13 07:45:35 2018 +0000 @@ -37,6 +37,17 @@ * _firsttime=false; * _lastReadTime=currentTime; * Error 7 = ERROR_NO_PATIENCE; +* - 12/12/18 +* Error en la línea 67 en la Biblioteca DHT (Mbed_DHT.cpp) función time_t +* Las tarjetas FRMD no poseeen un Reloj de Tiempo Real, por lo tanto la +* función time_t no puede ejecutarse. +* Se probó con la Biblioteca dht22. +* La Biblioteca DHT está lista para que sea modificada para adaptarse al +* funcionamiento de las tarjetas FRDM a partir de las Bibliotecas: Mbed_DHT, +* dht22 y DHT de Arduino. +* +* +* *******************************************************************************/ /* @@ -50,7 +61,8 @@ #include "I2C.h" #include "SPI.h" #include "Serial.h" -#include "DHT.h" +//#include "DHT.h" +#include "dht22.h" //#include "Led_RGB.h" /* @@ -158,18 +170,19 @@ Serial bluetooth(PTE0, PTE1); // Tx, Rx // I2C Communication -I2C i2c_LCD(PTC2,PTC1); // SDA, SCL +//I2C i2c_LCD(PTC2,PTC1); // SDA, SCL // SPI Communication -//SPI spi_LCD(PTD6,PTD7,PTD5,PTD4); // MOSI, MISO, SCLK, SSEL +SPI spi_LCD(PTD6,PTD7,PTD5,PTD4); // MOSI, MISO, SCLK, SSEL // LCD instantiation //TextLCD LCD(PTC5, PTC6, PTC8, PTC9, PTC10, PCT11, TextLCD::LCD20x2); // 4bit bus: rs, e, d4-d7 -//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 +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 Sensor de Humedad y Temperatura -DHT dht(PTA13, DHT_TIPO); // DHT_PIN, DHT_TIPO (DHT11, DHT22) +//DHT dht(PTA13, DHT_TIPO); // DHT_PIN, DHT_TIPO (DHT11, DHT22) +DHT22 dht(PTA13); // DHT22_Pin /* ** =================================================================== @@ -406,10 +419,10 @@ wait_ms(500); PIN_BUZZER = Buzz_Off; /* Configufración del Display LCD */ /* Mucho OjO !!! */ -// 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 (100KHz) - i2c_LCD.start(); // Inicio de operación para el I2C + 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 (100KHz) +// i2c_LCD.start(); // Inicio de operación para el I2C /* Arranque del Display LCD */ Terminal.printf("LCD Display is Starting...\n\r"); // lcd.init(TextLCD::LCDDatalength, 4 ); // Enciende la Iluminación de Fondo @@ -423,8 +436,8 @@ wait(2); lcd.cls(); // Limpia el Display LCD lcd.setBacklight(TextLCD::LightOff); // Apaga la Iluminación de Fondo - Timer Elpased_Time; //Inicialia el Tiempo a Transcurrir - Elpased_Time.start(); + Timer Elpased_Time; //Inicialia el Vector del Tiempo a Transcurrir + Elpased_Time.start(); //Inicialia el Tiempo a Transcurrir for (int row=0; row<lcd.rows(); row++)// Prueba toda la Pantalla { uint16_t col=0; @@ -812,59 +825,65 @@ Init_Conometro(); //Iniciamos variables del cronometro. //ConfT2_PWM3(TAPWM); //Configuracion de Timer2 PARA MODO FAST PWM EN PIN 3. PIN_QUEMADOR = DUTYCYCLE; //Enciende el Quemador - while (!Bandera && !Avanzar) { //Ciclo que se repite hasta que la bandera no sea activada. - if (PuertaAb) - { //Checa si la puerta esta abierta - Deshidratando = Puerta_Abierta(); //SI - Dependiedo de la decision del usuario puede o no continuar la deshidratación. - PIN_BUZZER = Buzz_On; //Enciende el buzzer. - wait(2); - PIN_BUZZER = Buzz_Off; //Apaga el buzzer - wait(1); - } - 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 = 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");//Envia mensaje de Error. - lcd.locate(1, 1); //Coloca el cursor al inicio de la fila. - lcd.printf("Revise Equipo ! "); //Envia mensaje de Error. - PIN_BUZZER = Buzz_On; //Enciende el buzzer - wait(2); //Espera 2 seg - } - - 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 . - Bandera = 1; // SI - Termina el proceso. - Terminal.printf("\rDemasiado Tiempo de Deshidratacion ...\n\r"); - Terminal.printf("\rTiempo Terminado !!! \n\r"); - } - } - } - } - - //Deshidratacion terminada. + while (!Bandera && !Avanzar) { //Ciclo que se repite hasta que la bandera no sea activada. + if (PuertaAb) + { //Checa si la puerta esta abierta + Deshidratando = Puerta_Abierta(); //SI - Dependiedo de la decision del usuario puede o no continuar la deshidratación. + PIN_BUZZER = Buzz_On; //Enciende el buzzer. + wait(2); + PIN_BUZZER = Buzz_Off; //Apaga el buzzer + wait(1); + } + 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 = 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 + error_code=dht.read(); //Lee el Sensor de Humedad y Temperatura + Terminal.printf("\r\nError Code: %d \r\n", error_code); //Imprime el Código de Error + wait(3); //Espera 2 seg entre mediciones + 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");//Envia mensaje de Error. + lcd.locate(1, 1); //Coloca el cursor al inicio de la fila. + lcd.printf("Revise Equipo ! "); //Envia mensaje de Error. + PIN_BUZZER = Buzz_On; //Enciende el buzzer + } +//----------------------------------------------------- +// Actualiza el Proceso. +//----------------------------------------------------- +*/ 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 . + Bandera = 1; // SI - Termina el proceso. + Terminal.printf("\rDemasiado Tiempo de Deshidratacion ...\n\r"); + Terminal.printf("\rTiempo Terminado !!! \n\r"); + } + } + } + } +//----------------------------------------------------- +// Proceso de Deshidratacion terminado. +//----------------------------------------------------- Terminal.printf("\rDeshidratacion Terminada \n\r"); Terminal.printf("\rTiempo Terminado !!! \n\r"); TF = temperatura; //Almacenamos el valor final de temperatura.