Me paso Jesus
Dependencies: mbed
main.cpp@3:b66649792025, 2019-11-08 (annotated)
- Committer:
- javicas95
- Date:
- Fri Nov 08 12:34:34 2019 +0000
- Revision:
- 3:b66649792025
- Parent:
- 2:de5c54621d59
last
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
javicas95 | 0:a08977d798ae | 1 | #include "mbed.h" |
javicas95 | 2:de5c54621d59 | 2 | #define bufferLeng 500 |
javicas95 | 0:a08977d798ae | 3 | #define constante 5.035400390625e-5 |
javicas95 | 1:649db63e7a69 | 4 | struct eResult { |
javicas95 | 1:649db63e7a69 | 5 | float Vrms; |
javicas95 | 1:649db63e7a69 | 6 | float Vmax; |
javicas95 | 1:649db63e7a69 | 7 | float Vmin; |
javicas95 | 1:649db63e7a69 | 8 | }; |
javicas95 | 0:a08977d798ae | 9 | |
javicas95 | 0:a08977d798ae | 10 | AnalogIn adc_in(A0); |
javicas95 | 0:a08977d798ae | 11 | AnalogOut dac_out(A2); |
javicas95 | 1:649db63e7a69 | 12 | Ticker tMuestr; |
javicas95 | 1:649db63e7a69 | 13 | Ticker tVis; |
javicas95 | 0:a08977d798ae | 14 | |
javicas95 | 1:649db63e7a69 | 15 | void vis(); |
javicas95 | 1:649db63e7a69 | 16 | void procDat(uint16_t *ent, uint16_t *sal, int longi); |
javicas95 | 0:a08977d798ae | 17 | |
javicas95 | 0:a08977d798ae | 18 | int flag=0; |
javicas95 | 0:a08977d798ae | 19 | int contador=0; |
javicas95 | 0:a08977d798ae | 20 | |
javicas95 | 0:a08977d798ae | 21 | struct buffers { |
javicas95 | 1:649db63e7a69 | 22 | uint16_t A[bufferLeng]; |
javicas95 | 1:649db63e7a69 | 23 | uint16_t B[bufferLeng]; |
javicas95 | 0:a08977d798ae | 24 | }; |
javicas95 | 0:a08977d798ae | 25 | |
javicas95 | 1:649db63e7a69 | 26 | bool bufferAct=0; |
javicas95 | 1:649db63e7a69 | 27 | void muestr(); |
javicas95 | 0:a08977d798ae | 28 | |
javicas95 | 1:649db63e7a69 | 29 | buffers bufferEnt; |
javicas95 | 1:649db63e7a69 | 30 | buffers bufferSal; |
javicas95 | 0:a08977d798ae | 31 | |
javicas95 | 1:649db63e7a69 | 32 | eResult result; |
javicas95 | 0:a08977d798ae | 33 | |
javicas95 | 0:a08977d798ae | 34 | int main() |
javicas95 | 0:a08977d798ae | 35 | { |
javicas95 | 0:a08977d798ae | 36 | |
javicas95 | 1:649db63e7a69 | 37 | tMuestr.attach_us(&muestr, 100); |
javicas95 | 1:649db63e7a69 | 38 | tVis.attach(&vis, 5); |
javicas95 | 0:a08977d798ae | 39 | |
javicas95 | 0:a08977d798ae | 40 | while(1) { |
javicas95 | 0:a08977d798ae | 41 | if (flag) { |
javicas95 | 0:a08977d798ae | 42 | flag=0; |
javicas95 | 1:649db63e7a69 | 43 | if(bufferAct) { |
javicas95 | 1:649db63e7a69 | 44 | procDat(bufferSal.B, bufferEnt.A,bufferLeng); |
javicas95 | 0:a08977d798ae | 45 | } else { |
javicas95 | 1:649db63e7a69 | 46 | procDat(bufferSal.A,bufferEnt.B,bufferLeng); |
javicas95 | 0:a08977d798ae | 47 | } |
javicas95 | 0:a08977d798ae | 48 | |
javicas95 | 0:a08977d798ae | 49 | wait_us(1); |
javicas95 | 0:a08977d798ae | 50 | |
javicas95 | 0:a08977d798ae | 51 | } |
javicas95 | 0:a08977d798ae | 52 | } |
javicas95 | 0:a08977d798ae | 53 | } |
javicas95 | 1:649db63e7a69 | 54 | void muestr() |
javicas95 | 0:a08977d798ae | 55 | { |
javicas95 | 0:a08977d798ae | 56 | uint16_t dato=adc_in.read_u16(); |
javicas95 | 1:649db63e7a69 | 57 | if (bufferAct) { |
javicas95 | 1:649db63e7a69 | 58 | bufferEnt.A[contador]=dato; |
javicas95 | 1:649db63e7a69 | 59 | dato=bufferSal.B[contador]; |
javicas95 | 0:a08977d798ae | 60 | } else { |
javicas95 | 1:649db63e7a69 | 61 | bufferEnt.B[contador]=dato; |
javicas95 | 1:649db63e7a69 | 62 | dato=bufferSal.A[contador]; |
javicas95 | 0:a08977d798ae | 63 | } |
javicas95 | 0:a08977d798ae | 64 | dac_out.write_u16(dato); |
javicas95 | 0:a08977d798ae | 65 | contador++; |
javicas95 | 1:649db63e7a69 | 66 | if (contador==bufferLeng) { |
javicas95 | 1:649db63e7a69 | 67 | bufferAct=!bufferAct; |
javicas95 | 0:a08977d798ae | 68 | contador=0; |
javicas95 | 0:a08977d798ae | 69 | flag=1; |
javicas95 | 0:a08977d798ae | 70 | } |
javicas95 | 0:a08977d798ae | 71 | } |
javicas95 | 0:a08977d798ae | 72 | |
javicas95 | 0:a08977d798ae | 73 | |
javicas95 | 1:649db63e7a69 | 74 | void procDat(uint16_t *sal, uint16_t *ent, int longi) |
javicas95 | 0:a08977d798ae | 75 | { |
javicas95 | 1:649db63e7a69 | 76 | uint16_t max=0; |
javicas95 | 1:649db63e7a69 | 77 | uint16_t min=65535; |
javicas95 | 0:a08977d798ae | 78 | uint16_t dato; |
javicas95 | 1:649db63e7a69 | 79 | uint64_t sumatorio=0; |
javicas95 | 1:649db63e7a69 | 80 | for(int i=0; i<longi; i++) { |
javicas95 | 1:649db63e7a69 | 81 | dato=ent[i]; |
javicas95 | 3:b66649792025 | 82 | sumatorio= sumatorio + (dato*dato); |
javicas95 | 1:649db63e7a69 | 83 | sal[i]=dato; |
javicas95 | 1:649db63e7a69 | 84 | if(dato>max) { |
javicas95 | 1:649db63e7a69 | 85 | max=dato; |
javicas95 | 1:649db63e7a69 | 86 | } |
javicas95 | 1:649db63e7a69 | 87 | if(dato<min) { |
javicas95 | 1:649db63e7a69 | 88 | min=dato; |
javicas95 | 1:649db63e7a69 | 89 | } |
javicas95 | 0:a08977d798ae | 90 | |
javicas95 | 0:a08977d798ae | 91 | } |
javicas95 | 1:649db63e7a69 | 92 | result.Vrms= constante*sqrt(((float)sumatorio)/longi); |
javicas95 | 1:649db63e7a69 | 93 | result.Vmax=max*constante; |
javicas95 | 1:649db63e7a69 | 94 | result.Vmin=min*constante; |
javicas95 | 0:a08977d798ae | 95 | } |
javicas95 | 1:649db63e7a69 | 96 | void vis() |
javicas95 | 1:649db63e7a69 | 97 | { |
javicas95 | 1:649db63e7a69 | 98 | printf ("El valor maxima es %f\n",result.Vmax); |
javicas95 | 1:649db63e7a69 | 99 | printf ("El valor minimo es %f\n",result.Vmin); |
javicas95 | 1:649db63e7a69 | 100 | printf ("El valor RMS es %f\n\n",result.Vrms); |
javicas95 | 0:a08977d798ae | 101 | |
javicas95 | 1:649db63e7a69 | 102 | } |