MII1SistElec
/
Proyecto
¡Qué majo es Ander Ibabe!
Diff: main.cpp
- 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) {