
Seeedstudio Arch Examples : Temperature sensing using thermistor and AnalogIn interface.
Fork of Arch_GPIO_Ex4 by
main.cpp@5:d035275d4c21, 2013-10-07 (annotated)
- Committer:
- viswesr
- Date:
- Mon Oct 07 13:10:03 2013 +0000
- Revision:
- 5:d035275d4c21
- Parent:
- 4:ba523da0d68a
- Child:
- 6:914bd412ceda
First version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
viswesr | 0:ed40790a022a | 1 | #include "mbed.h" |
viswesr | 5:d035275d4c21 | 2 | #include "USBSerial.h" |
viswesr | 0:ed40790a022a | 3 | |
viswesr | 5:d035275d4c21 | 4 | AnalogIn thermistor(P0_11); /* Thermistor output connected to P0_11 */ |
viswesr | 5:d035275d4c21 | 5 | |
viswesr | 5:d035275d4c21 | 6 | DigitalOut tensplaceLED(LED4); /* This led blinks as per tens place of temperature value(in deg C) */ |
viswesr | 5:d035275d4c21 | 7 | DigitalOut unitsplaceLED(LED1); /* This led blinks as per units place of temperature value(in deg C) */ |
viswesr | 0:ed40790a022a | 8 | |
viswesr | 0:ed40790a022a | 9 | int main() |
viswesr | 0:ed40790a022a | 10 | { |
viswesr | 5:d035275d4c21 | 11 | unsigned int a, beta = 3975, units, tens; |
viswesr | 5:d035275d4c21 | 12 | float temperature, resistance; |
viswesr | 5:d035275d4c21 | 13 | |
viswesr | 0:ed40790a022a | 14 | while(1) { |
viswesr | 5:d035275d4c21 | 15 | a = thermistor.read_u16(); /* Read analog value */ |
viswesr | 5:d035275d4c21 | 16 | |
viswesr | 5:d035275d4c21 | 17 | /* Calculate the resistance of the thermistor from analog votage read. */ |
viswesr | 5:d035275d4c21 | 18 | resistance= (float) 10000.0 * (1.0 - (a / 65536.0 )); |
viswesr | 5:d035275d4c21 | 19 | |
viswesr | 5:d035275d4c21 | 20 | /* Convert the resistance to temperature using Steinhart's Hart equation */ |
viswesr | 5:d035275d4c21 | 21 | temperature=(1/((log(resistance/5000.0)/beta) + (1.0/298.15)))-273.15; |
viswesr | 5:d035275d4c21 | 22 | |
viswesr | 5:d035275d4c21 | 23 | units = (int) temperature % 10; |
viswesr | 5:d035275d4c21 | 24 | tens = (int) temperature / 10; |
viswesr | 5:d035275d4c21 | 25 | |
viswesr | 5:d035275d4c21 | 26 | |
viswesr | 5:d035275d4c21 | 27 | for(int i=0; i< tens; i++) |
viswesr | 5:d035275d4c21 | 28 | { |
viswesr | 5:d035275d4c21 | 29 | tensplaceLED = 1; |
viswesr | 5:d035275d4c21 | 30 | wait(.200); |
viswesr | 5:d035275d4c21 | 31 | tensplaceLED = 0; |
viswesr | 5:d035275d4c21 | 32 | wait(.200); |
viswesr | 4:ba523da0d68a | 33 | } |
viswesr | 5:d035275d4c21 | 34 | |
viswesr | 5:d035275d4c21 | 35 | for(int i=0; i< units; i++) |
viswesr | 5:d035275d4c21 | 36 | { |
viswesr | 5:d035275d4c21 | 37 | unitsplaceLED = 1; |
viswesr | 5:d035275d4c21 | 38 | wait(.200); |
viswesr | 5:d035275d4c21 | 39 | unitsplaceLED = 0; |
viswesr | 5:d035275d4c21 | 40 | wait(.200); |
viswesr | 5:d035275d4c21 | 41 | } |
viswesr | 5:d035275d4c21 | 42 | |
viswesr | 5:d035275d4c21 | 43 | wait(0.5); |
viswesr | 0:ed40790a022a | 44 | } |
viswesr | 0:ed40790a022a | 45 | } |
viswesr | 5:d035275d4c21 | 46 |