Version Beta para la FRDM-KL46Z del original de Arduino Uno

Dependencies:   mbed TextLCD

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.