![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Temperature controlled fan with hysteresis cooling
main.cpp@0:f3f670fbc25d, 2016-12-08 (annotated)
- Committer:
- bryanbates
- Date:
- Thu Dec 08 19:58:11 2016 +0000
- Revision:
- 0:f3f670fbc25d
Final Project for 4180
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bryanbates | 0:f3f670fbc25d | 1 | #include "mbed.h" |
bryanbates | 0:f3f670fbc25d | 2 | #include "TMP36.h" |
bryanbates | 0:f3f670fbc25d | 3 | #include "Motor.h" |
bryanbates | 0:f3f670fbc25d | 4 | #include <math.h> |
bryanbates | 0:f3f670fbc25d | 5 | |
bryanbates | 0:f3f670fbc25d | 6 | TMP36 tempSensor(p15); // Uses TMP36.h to display temperature in Celcius |
bryanbates | 0:f3f670fbc25d | 7 | Serial xbee1(p28, p27); // TX, RX |
bryanbates | 0:f3f670fbc25d | 8 | Motor m(p21, p19, p20); // pwm, fwd, rev |
bryanbates | 0:f3f670fbc25d | 9 | DigitalOut rst(p11); // RST (RESET) |
bryanbates | 0:f3f670fbc25d | 10 | DigitalOut redLED(p5); |
bryanbates | 0:f3f670fbc25d | 11 | |
bryanbates | 0:f3f670fbc25d | 12 | |
bryanbates | 0:f3f670fbc25d | 13 | |
bryanbates | 0:f3f670fbc25d | 14 | |
bryanbates | 0:f3f670fbc25d | 15 | char *float2str(float float_num); |
bryanbates | 0:f3f670fbc25d | 16 | |
bryanbates | 0:f3f670fbc25d | 17 | int main(){ |
bryanbates | 0:f3f670fbc25d | 18 | rst = 0; |
bryanbates | 0:f3f670fbc25d | 19 | wait_ms(1); |
bryanbates | 0:f3f670fbc25d | 20 | rst = 1; |
bryanbates | 0:f3f670fbc25d | 21 | wait_ms(1); |
bryanbates | 0:f3f670fbc25d | 22 | |
bryanbates | 0:f3f670fbc25d | 23 | float temp = 0.0; |
bryanbates | 0:f3f670fbc25d | 24 | float fanspeed; |
bryanbates | 0:f3f670fbc25d | 25 | float fanratio; |
bryanbates | 0:f3f670fbc25d | 26 | |
bryanbates | 0:f3f670fbc25d | 27 | xbee1.baud(9600); |
bryanbates | 0:f3f670fbc25d | 28 | |
bryanbates | 0:f3f670fbc25d | 29 | while (1){ |
bryanbates | 0:f3f670fbc25d | 30 | temp = tempSensor; |
bryanbates | 0:f3f670fbc25d | 31 | if (temp > 26.0){ |
bryanbates | 0:f3f670fbc25d | 32 | fanratio = temp/26; |
bryanbates | 0:f3f670fbc25d | 33 | fanspeed = exp(fanratio) - 2.2; |
bryanbates | 0:f3f670fbc25d | 34 | redLED = 1; |
bryanbates | 0:f3f670fbc25d | 35 | } |
bryanbates | 0:f3f670fbc25d | 36 | else{ |
bryanbates | 0:f3f670fbc25d | 37 | fanspeed = 0.0; |
bryanbates | 0:f3f670fbc25d | 38 | redLED = 0; |
bryanbates | 0:f3f670fbc25d | 39 | } |
bryanbates | 0:f3f670fbc25d | 40 | m.speed(fanspeed); |
bryanbates | 0:f3f670fbc25d | 41 | |
bryanbates | 0:f3f670fbc25d | 42 | xbee1.printf("%.1f\n\r",temp); |
bryanbates | 0:f3f670fbc25d | 43 | wait(1); |
bryanbates | 0:f3f670fbc25d | 44 | } |
bryanbates | 0:f3f670fbc25d | 45 | |
bryanbates | 0:f3f670fbc25d | 46 | } |
bryanbates | 0:f3f670fbc25d | 47 | |
bryanbates | 0:f3f670fbc25d | 48 |