Kazuhiro Hirasawa
/
STM32_180SENSOR_ADC4_RS_Ver2_CommCLD
WathchDog
Diff: main.cpp
- Revision:
- 0:63c74ee8bffc
- Child:
- 1:c896654c679b
diff -r 000000000000 -r 63c74ee8bffc main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jan 26 12:00:55 2018 +0000 @@ -0,0 +1,74 @@ +#include "mbed.h" + +/* + This basic example just shows how to read the ADC internal channels raw values. + Please look in the corresponding device reference manual for a complete + description of how to make a temperature sensor, VBat or Vref measurement. +*/ + +Serial pc(SERIAL_TX,SERIAL_RX); +Serial rs485(D1,D0); +AnalogIn adc_1(A1); +AnalogIn adc_2(A2); +//AnalogIn adc_3(A3); +//AnalogIn adc_4(A4); +//AnalogIn adc_5(A5); +//AnalogIn adc_6(A6); +//AnalogIn adc_7(A7); + +DigitalOut led(LED1); +//DigitalIn in1(PA_1,PullNone); +//DigitalIn in2(PA_3,PullNone); + + +int main() +{ + float sum1,sum2; + float ad1,ad2; + float temp,turb,s; + int i,cnt; + + rs485.baud(38400); + rs485.format(8,Serial::None,1); + + pc.printf("\nSTM32 ADC internal channels reading example\r\n"); + temp = 0; + turb = 0; + s = 0; + while(1) { + sum1 = 0; + sum2 = 0; + cnt = 0; + for (i=0;i<1000;i++) { + sum1 += adc_1.read(); + sum2 += adc_2.read(); + cnt += 1; + wait(0.001); + + if (rs485.readable()) { + pc.printf("%c\r",rs485.getc()); + wait(0.01); + rs485.printf("=01,PVAL,%01.04f,%01.03f,%01.03f\r", turb/1000,temp,s); + } + } + if(cnt != 0) { + ad1 = sum1/cnt; + ad2 = sum2/cnt; + } else { + ad1 = adc_1.read(); + ad2 = adc_2.read(); + } + + pc.printf("ADC 1 = %f ad %f mV : %f temp\r\n", ad1,ad1*3300,ad1*66-30+0.3); + pc.printf("ADC 2 = %f ad %f mA : %f turb\r\n", ad2,(ad2*3.3/2.74)*20,(ad2-0.166)/0.6642*1000+25.5); + temp = ad1*66-30+0.3; + turb = 2.1*((ad2-0.166)/0.6642*1000+25.5); + s = 0; + +// if (rs485.readable()) { +// pc.printf("%c\r",rs485.getc()); +// wait(0.01); +// rs485.printf("=01,PVAL,%01.03f,%01.03f,%01.03f\r", temp,turb,s); +// } + } +}