Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 #define E p6 00004 //#define RW p6 00005 #define RS p5 00006 #define D4 p7 00007 #define D5 p8 00008 #define D6 p9 00009 #define D7 p10 00010 #define sensor p20 00011 #define sensor2 p19 00012 00013 #define muestra 180 00014 DigitalOut led(LED1); 00015 //TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 00016 TextLCD lcd(RS, E, D4, D5, D6, D7); // rs, e, d4-d7 00017 Ticker sample; 00018 AnalogIn Sensor(sensor); 00019 AnalogIn Sensor2(sensor2); 00020 00021 Serial pc(USBTX,USBRX); 00022 uint16_t k=0; 00023 uint16_t DatosSensor[muestra]; 00024 00025 00026 uint16_t datosSensor2[muestra]; 00027 00028 00029 void lectura() 00030 { 00031 if (k<muestra) { 00032 DatosSensor[k] = Sensor.read_u16(); // Leer los datos del Sensor. 00033 datosSensor2[k] = Sensor2.read_u16(); // Leer los datos del Sensor voltaje. 00034 k++; 00035 } 00036 00037 00038 } 00039 00040 int max(uint16_t* arr, int tam, int primero, int ultimo) 00041 { 00042 uint16_t m=(primero+ultimo)/2; 00043 if (arr[m]>=arr[m+1] && arr[m] >= arr[m-1]) { 00044 return m; 00045 } else if (arr[m] < arr[m+1]) { 00046 primero=m+1; 00047 } else if (arr[m]<arr[m-1]) { 00048 ultimo=m-1; 00049 } 00050 return max(arr,tam,primero,ultimo); 00051 } 00052 00053 int min(uint16_t* arr, int tam, int primero, int ultimo) 00054 { 00055 uint16_t m=(primero+ultimo)/2; 00056 if (arr[m]<=arr[m+1] && arr[m] <= arr[m-1]) { 00057 return m; 00058 } else if (arr[m] > arr[m+1]) { 00059 primero=m+1; 00060 } else if (arr[m]>arr[m-1]) { 00061 ultimo=m-1; 00062 } 00063 return min(arr,tam,primero,ultimo); 00064 } 00065 00066 00067 int main() 00068 { 00069 sample.attach(&lectura, 0.00037); 00070 while(1) { 00071 if(k==muestra) { 00072 sample.detach(); 00073 uint16_t Ipi_max= DatosSensor[max(DatosSensor, muestra, 0,muestra-1)]; 00074 uint16_t Ipi_min= DatosSensor[min(DatosSensor, muestra, 0,muestra-1)]; 00075 uint16_t Vpi_max= datosSensor2[max(datosSensor2, muestra, 0,muestra-1)]; 00076 uint16_t Vpi_min= datosSensor2[min(datosSensor2, muestra, 0,muestra-1)]; 00077 uint16_t picoI=max(DatosSensor, muestra, 0,muestra-1); 00078 uint16_t picoV=max(datosSensor2, muestra, 0,muestra-1); 00079 uint16_t picoI2=min(DatosSensor, muestra, 0,muestra-1); 00080 uint16_t picoV2=min(datosSensor2, muestra, 0,muestra-1); 00081 float angulo=abs(cos(7.993*(picoI-picoV))); 00082 float angulo2=abs(cos(7.993*(picoI2-picoV2))); 00083 00084 lcd.cls(); 00085 00086 00087 pc.printf("Ip=%1.2fA Vp=%4.1fV\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2); 00088 lcd.printf("Ip%1.2f Vp%4.1f\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2); 00089 pc.printf("Ir=%1.2fA Vr=%4.1fV\n",((((Ipi_max-Ipi_min)*0.000272)/2)/1.414),(((Vpi_max-Vpi_min)*0.00577)/2)/1.414); 00090 lcd.printf("Ir%1.2f Vr%4.1f\n",((((Ipi_max-Ipi_min)*0.000272)/2)/1.414),(((Vpi_max-Vpi_min)*0.00577)/2)/1.414); 00091 pc.printf("PF %1.3f\n",angulo); 00092 pc.printf("PF %1.3f\n",angulo2); 00093 00094 00095 //pc.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2); 00096 //lcd.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2); 00097 //pc.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414); 00098 //lcd.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414); 00099 k=0; 00100 sample.attach(&lectura, 0.00037); 00101 } 00102 led= !led; 00103 wait(0.5); 00104 00105 } 00106 }
Generated on Sat Jul 30 2022 10:16:40 by
1.7.2