
.
main.cpp
- Committer:
- alejo5214416
- Date:
- 2019-02-22
- Revision:
- 1:96ec8a1cb604
- Parent:
- 0:b127a7a5a13e
File content as of revision 1:96ec8a1cb604:
#include "mbed.h" #include "TextLCD.h" #define E p6 //#define RW p6 #define RS p5 #define D4 p7 #define D5 p8 #define D6 p9 #define D7 p10 #define sensor p20 #define sensor2 p19 #define muestra 180 DigitalOut led(LED1); //TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 TextLCD lcd(RS, E, D4, D5, D6, D7); // rs, e, d4-d7 Ticker sample; AnalogIn Sensor(sensor); AnalogIn Sensor2(sensor2); Serial pc(USBTX,USBRX); uint16_t k=0; uint16_t DatosSensor[muestra]; uint16_t datosSensor2[muestra]; void lectura() { if (k<muestra) { DatosSensor[k] = Sensor.read_u16(); // Leer los datos del Sensor. datosSensor2[k] = Sensor2.read_u16(); // Leer los datos del Sensor voltaje. k++; } } int max(uint16_t* arr, int tam, int primero, int ultimo) { uint16_t m=(primero+ultimo)/2; if (arr[m]>=arr[m+1] && arr[m] >= arr[m-1]) { return m; } else if (arr[m] < arr[m+1]) { primero=m+1; } else if (arr[m]<arr[m-1]) { ultimo=m-1; } return max(arr,tam,primero,ultimo); } int min(uint16_t* arr, int tam, int primero, int ultimo) { uint16_t m=(primero+ultimo)/2; if (arr[m]<=arr[m+1] && arr[m] <= arr[m-1]) { return m; } else if (arr[m] > arr[m+1]) { primero=m+1; } else if (arr[m]>arr[m-1]) { ultimo=m-1; } return min(arr,tam,primero,ultimo); } int main() { sample.attach(&lectura, 0.00037); while(1) { if(k==muestra) { sample.detach(); uint16_t Ipi_max= DatosSensor[max(DatosSensor, muestra, 0,muestra-1)]; uint16_t Ipi_min= DatosSensor[min(DatosSensor, muestra, 0,muestra-1)]; uint16_t Vpi_max= datosSensor2[max(datosSensor2, muestra, 0,muestra-1)]; uint16_t Vpi_min= datosSensor2[min(datosSensor2, muestra, 0,muestra-1)]; uint16_t picoI=max(DatosSensor, muestra, 0,muestra-1); uint16_t picoV=max(datosSensor2, muestra, 0,muestra-1); uint16_t picoI2=min(DatosSensor, muestra, 0,muestra-1); uint16_t picoV2=min(datosSensor2, muestra, 0,muestra-1); float angulo=abs(cos(7.993*(picoI-picoV))); float angulo2=abs(cos(7.993*(picoI2-picoV2))); lcd.cls(); pc.printf("Ip=%1.2fA Vp=%4.1fV\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2); lcd.printf("Ip%1.2f Vp%4.1f\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2); 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); 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); pc.printf("PF %1.3f\n",angulo); pc.printf("PF %1.3f\n",angulo2); //pc.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2); //lcd.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2); //pc.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414); //lcd.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414); k=0; sample.attach(&lectura, 0.00037); } led= !led; wait(0.5); } }