¡Qué majo es Ander Ibabe!

Dependencies:   TextLCD mbed

Revision:
5:f364983627e5
Parent:
4:515ede6e2e14
Child:
6:93c85e86afad
--- a/main.cpp	Fri Jan 12 15:31:01 2018 +0000
+++ b/main.cpp	Fri Jan 12 17:24:57 2018 +0000
@@ -1,20 +1,23 @@
 #include "mbed.h"
 #include "TextLCD.h"
-#define periodo 0.0002 //1/5000
+#include "eeprom.h"
+#include <ctype.h>
 #define tamvector 100
 #define dato_v  6.2357e+03
 #define dato_i  9.7128 //((3,3*2000/(2^16*Rburn))^2)*(1/100)
 #define dato_p 202.6327
-#define dato_e 20e-3/3600
+#define dato_e 0.02/3600000.0 //diferencia de tiempo entre muestras en segundos 
+uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777};
+
 
 Serial bluetooth (D10,D2);
 Serial pc(SERIAL_TX,SERIAL_RX);
 TextLCD lcd(D8,D9,D3,D4,D5,D6,TextLCD::LCD16x2); //rs,e,d4-d7
 InterruptIn pulsador(PC_13);
-float muestrasA[100];
-float muestrasB[100];
-float muestrasC[100];
-float muestrasD[100];
+float muestrasA[tamvector];
+float muestrasB[tamvector];
+float muestrasC[tamvector];
+float muestrasD[tamvector];
 
 AnalogIn tension (A0);
 AnalogIn tensioncontinua (A1);
@@ -50,7 +53,7 @@
         muestrasD[contador]=(intensidad.read()-Icont);
     }
     contador++;
-    if(contador==100) {
+    if(contador==tamvector) {
         contador=0;
         nbuffer=!nbuffer;
         bufferlleno=1;
@@ -60,10 +63,32 @@
 void boton()
 {
     mostrardato++;
-    if (mostrardato>7)
+    if (mostrardato>8)
         mostrardato=0;
 }
 
+void Write_Float_Eeprom(uint16_t address, float data) // parte de la memoria eeprom
+{ 
+    uint16_t *punteroDato;
+    punteroDato=(uint16_t *)(&data);
+    EE_WriteVariable(address  , *punteroDato);
+    punteroDato++;
+    EE_WriteVariable(address +2 , *punteroDato);
+ 
+} 
+
+float Read_Float_Eeprom(uint16_t address) // parte de la memoria eeprom
+{ 
+
+   float data; 
+   uint16_t *punteroDato;
+   punteroDato=(uint16_t *)(&data);
+   EE_ReadVariable(address,punteroDato); 
+   punteroDato++;
+   EE_ReadVariable(address+2,punteroDato); 
+   return data; 
+} 
+
 void mostrar ()
 {
     lcd.cls();
@@ -94,19 +119,21 @@
             pc.printf("P.Apa:\n %f VA",PotenciaAparente);
             break;
         case 6:
-            lcd.printf("E.Act:\n %f Wh",EnergiaActiva);
-            pc.printf("E.Act:\n %f Wh",EnergiaActiva);
+            lcd.printf("E.Act:\n %f kWh",EnergiaActiva);
+            pc.printf("E.Act:\n %f kWh",EnergiaActiva);
             break;
         case 7:
-            lcd.printf("E.React:\n %f Wh",EnergiaReactiva);
-            pc.printf("E.React:\n %f Wh",EnergiaReactiva);
+            lcd.printf("E.React:\n %f kWh",EnergiaReactiva);
+            pc.printf("E.React:\n %f kWh",EnergiaReactiva);
             break;
         case 8:
             lcd.printf("Precio:\n %f €",precio);
             pc.printf("Precio:\n %f €",precio);
             break;
     }
-    bluetooth.printf("%Vrms| %Irms | %PotenciaActiva| %precio\n",Vrms,Irms,PotenciaActiva,precio);
+    bluetooth.printf("%f V| %f A | %f W| %f VAr | %f VA \n",Vrms,Irms,PotenciaActiva,PotenciaReactiva,PotenciaAparente);
+    Write_Float_Eeprom(0x5555, EnergiaActiva);   // parte de la memoria eeprom
+    Write_Float_Eeprom(0x6666, EnergiaReactiva); // parte de la memoria eeprom
 }
 
 int main ()
@@ -117,6 +144,11 @@
     float dato;
     float datoIntensidad;
 
+
+    HAL_FLASH_Unlock(); // parte de la memoria eeprom
+
+    EE_Init();          // parte de la memoria eeprom
+
     timerMuestro.attach_us(&temporizador,200);
     timerVisualizacion.attach(&mostrar,1);
     pulsador.rise(&boton);
@@ -127,7 +159,10 @@
         Icont=Icont+intensidadcontinua.read();
     }
     Vcont=Vcont/8.0;
-    Icont=Icont/8.0;
+    Icont=Icont/8.0; 
+
+    EnergiaActiva=Read_Float_Eeprom(0x5555);    // parte de la memoria eeprom
+    EnergiaReactiva=Read_Float_Eeprom(0x6666);  // parte de la memoria eeprom
 
     while (1) {
         if (bufferlleno) {