István Cserny
/
Lab03_adc_scan
ADC measurement in four analog channel
main.cpp@0:0c9a329e40f2, 2021-11-02 (annotated)
- Committer:
- cspista
- Date:
- Tue Nov 02 06:23:06 2021 +0000
- Revision:
- 0:0c9a329e40f2
Final version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cspista | 0:0c9a329e40f2 | 1 | #include "mbed.h" |
cspista | 0:0c9a329e40f2 | 2 | /* Lab03_ adc_scan |
cspista | 0:0c9a329e40f2 | 3 | * |
cspista | 0:0c9a329e40f2 | 4 | * Pásztázó mérés az ADC-vel: több csatornát pásztázunk |
cspista | 0:0c9a329e40f2 | 5 | * - az A0 bemeneten egy potméterrel leosztott feszültséget mérünk |
cspista | 0:0c9a329e40f2 | 6 | * - az A1 bemeneten egy MCP9700 analóg hőmérő jelét mérjük |
cspista | 0:0c9a329e40f2 | 7 | * - az A2 bemeneten egy LDR segítségével a fényt mérjük |
cspista | 0:0c9a329e40f2 | 8 | * - az A3 bemeneten pedig egy 2,50 V-os referencia feszültséget mérünk |
cspista | 0:0c9a329e40f2 | 9 | * Az eredményeket feszültségre átszámítva a soros porton kiíratjuk. |
cspista | 0:0c9a329e40f2 | 10 | */ |
cspista | 0:0c9a329e40f2 | 11 | const float VREFH = 3.3; // VrefH referencia feszültség [V] |
cspista | 0:0c9a329e40f2 | 12 | int data[4] = {0, 0, 0, 0}; // A mérési adatok tárolója |
cspista | 0:0c9a329e40f2 | 13 | float v[4]; // Feszültség mV-okban |
cspista | 0:0c9a329e40f2 | 14 | AnalogIn potm(A0); // Analog input at PA_0 |
cspista | 0:0c9a329e40f2 | 15 | AnalogIn homero(A1); // Analog input at PA_1 |
cspista | 0:0c9a329e40f2 | 16 | AnalogIn ldr(A2); // Analog input at PA_4 |
cspista | 0:0c9a329e40f2 | 17 | AnalogIn vref(A3); // Analog input at PB_0 |
cspista | 0:0c9a329e40f2 | 18 | |
cspista | 0:0c9a329e40f2 | 19 | int main() |
cspista | 0:0c9a329e40f2 | 20 | { |
cspista | 0:0c9a329e40f2 | 21 | printf(" Lab03_adc_scan: Pásztázó mérés ADC-vel\r\n"); |
cspista | 0:0c9a329e40f2 | 22 | printf(" - az A0 bemeneten egy potméterrel leosztott feszültségét mérjük\r\n"); |
cspista | 0:0c9a329e40f2 | 23 | printf(" - az A1 bemeneten egy MCP9700 analóg hőmérő jelét mérjük\r\n"); |
cspista | 0:0c9a329e40f2 | 24 | printf(" - az A2 bemeneten egy LDR segítségével a fényt mérjük\r\n"); |
cspista | 0:0c9a329e40f2 | 25 | printf(" - az A3 bemeneten pedig egy referencia feszültséget mérünk\r\n"); |
cspista | 0:0c9a329e40f2 | 26 | while(1) { |
cspista | 0:0c9a329e40f2 | 27 | for(int i=0; i<4; i++) data[i]=0; |
cspista | 0:0c9a329e40f2 | 28 | for(int i=0; i<1000; i++) { |
cspista | 0:0c9a329e40f2 | 29 | data[0] += potm.read_u16(); |
cspista | 0:0c9a329e40f2 | 30 | data[1] += homero.read_u16(); |
cspista | 0:0c9a329e40f2 | 31 | data[2] += ldr.read_u16(); |
cspista | 0:0c9a329e40f2 | 32 | data[3] += vref.read_u16(); |
cspista | 0:0c9a329e40f2 | 33 | } |
cspista | 0:0c9a329e40f2 | 34 | for(int i=0; i<4; i++) { |
cspista | 0:0c9a329e40f2 | 35 | v[i] = VREFH*(data[i]>>16); // V = NADC * VREFH / 2^16 |
cspista | 0:0c9a329e40f2 | 36 | printf(" A%d = %5.0f mV\r\n",i,v[i]); |
cspista | 0:0c9a329e40f2 | 37 | } |
cspista | 0:0c9a329e40f2 | 38 | printf("----------------------------------\r\n"); |
cspista | 0:0c9a329e40f2 | 39 | wait(2); |
cspista | 0:0c9a329e40f2 | 40 | } |
cspista | 0:0c9a329e40f2 | 41 | } |