SUNGTAE KIM
/
WIZnet-IoTShield-SENSOR_TEMP
WIoT-Shield-SENSOR-TEMP
Revision 5:2cbdcdb06765, committed 2019-03-27
- Comitter:
- stkim92
- Date:
- Wed Mar 27 07:02:59 2019 +0000
- Parent:
- 4:5ea8c91f607f
- Commit message:
- WIZnet-IoTShield-SENSOR_TEMP v0.9
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Mar 27 06:50:17 2019 +0000 +++ b/main.cpp Wed Mar 27 07:02:59 2019 +0000 @@ -31,10 +31,15 @@ Serial pc(USBTX, USBRX); // USB debug -DigitalOut LED(LEDPIN); -AnalogIn cdsVal(MBED_CONF_IOTSHIELD_SENSOR_CDS); +AnalogIn tempVal(MBED_CONF_IOTSHIELD_SENSOR_TEMP); -float val = 0; // CDS 측정 값 넣을 변수 +float val = 0; // 온도 측정 값 넣을 변수 +float voltage = 0; // 전압 계산 값 넣을 변수 +float celsius = 0; // 섭씨 계산 값 넣을 변수 +float fahrenheit = 0; // 화씨 계산 값 넣을 변수 + +float getTemperature_F(float _celsius); +float getTemperature_C(float _voltage); void serialPcInit(void) { @@ -55,20 +60,44 @@ myprintf("WIZnet IoT Shield for Arm MBED"); myprintf("LTE Cat.M1 Version"); myprintf("================================================="); - myprintf(">> Sample Code: CDS Test)"); + myprintf(">> Sample Code: TEMP Test)"); myprintf("=================================================\r\n"); while(1) { - val = cdsVal.read_u16()/100; - //myprintf("Sensor value : %.2f", val); - wait_ms(50); + // read the value from the sensor: + val = tempVal.read_u16()/100; + // 실제 전압 계산 + // 0~5V의 값을 구하기 위해 아래와 같이 5를 곱하고 1024를 나눈다. + // (Analog값 * IC에 걸리는 전압 / Analog 10bit 분해능(1024)) + // IC에 걸리는 전압은 측정기로 측정 - if(val > 512) { // 조도 저항 값이 낮기 때문에 아날로그 값이 높음 - LED = 0; - } else { // 손가락으로 가리면 조도 저항값이 높아지기 때문에 아날로그 값이 낮아진다 - LED = 1; - } + voltage = val * 4.95 / 1024; + celsius = getTemperature_C(voltage); + fahrenheit = getTemperature_F(celsius); + + wait_ms(1000); + myprintf("[ Temperature Data ]"); + myprintf("Sensor value : %.2f", val); + myprintf("Volt : %.2f mV", voltage); + + myprintf("Celsius temp : %.2f C", celsius); + myprintf("Fahrenheit temp : %.2f F", fahrenheit); + wait_ms(1000); } } +float getTemperature_F(float _celsius) +{ + // 섭씨에서 화씨 환산 -> (화씨온도 = 섭씽온*9/5+32) + fahrenheit = celsius * 9.0 / 5.0 + 32.0; + return fahrenheit; +} +float getTemperature_C(float _voltage) +{ + // LM35는 섭씨 1도당 10mV의 전위차를 갖는다. + // 센서핀의 전압이 0.28V라면 280mV이므로 온도는 28도씨. + // 100을 곱해서 섭씨 온도로 나타냄 + celsius = voltage * 100.0; + return celsius; +}