Yuliang Hao
/
Thermostat
Sample Code for RDC EET214 Lab3
main.cpp@4:c654bdf271fc, 2017-09-27 (annotated)
- Committer:
- YuliangHao
- Date:
- Wed Sep 27 00:14:08 2017 +0000
- Revision:
- 4:c654bdf271fc
- Parent:
- 3:f2026b3d5763
Minor change
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YuliangHao | 1:f780b7362982 | 1 | //Sample Code for EET214 Lab3 Thermostat |
YuliangHao | 1:f780b7362982 | 2 | |
YuliangHao | 0:0f219dfaaa4a | 3 | #include "mbed.h" |
YuliangHao | 0:0f219dfaaa4a | 4 | |
YuliangHao | 1:f780b7362982 | 5 | DigitalOut furnace(LED4); //use LED4 to simualte furnace |
YuliangHao | 0:0f219dfaaa4a | 6 | AnalogIn room_T(p20); //Use pin 20 to read room temperature |
YuliangHao | 0:0f219dfaaa4a | 7 | int iRoom_T = 0; //Room Temperature in integer |
YuliangHao | 1:f780b7362982 | 8 | int iRoom_T_One = 0; //Temperature number at one digit |
YuliangHao | 1:f780b7362982 | 9 | int iRoom_T_Ten = 0; //Temperature number at ten digit |
YuliangHao | 0:0f219dfaaa4a | 10 | |
YuliangHao | 0:0f219dfaaa4a | 11 | int display10( int iRoom_T_Ten); //Function to display ten digits |
YuliangHao | 0:0f219dfaaa4a | 12 | int display1( int iRoom_T_One); //Function to display one digits |
YuliangHao | 0:0f219dfaaa4a | 13 | |
YuliangHao | 1:f780b7362982 | 14 | BusOut displayA(p5, p6, p7, p8, p9, p10, p11, p12); //Use P5 - P12 for Display 1 |
YuliangHao | 4:c654bdf271fc | 15 | BusOut displayB(p21,p22,p23,p24,p25,p26, p27, p28); //Use P21- P28 for display 2 |
YuliangHao | 0:0f219dfaaa4a | 16 | |
YuliangHao | 0:0f219dfaaa4a | 17 | int main() { |
YuliangHao | 0:0f219dfaaa4a | 18 | while(1) { |
YuliangHao | 0:0f219dfaaa4a | 19 | |
YuliangHao | 0:0f219dfaaa4a | 20 | //Read sensor and convert the value into integer |
YuliangHao | 0:0f219dfaaa4a | 21 | iRoom_T = (int)(( room_T * 3.3 ) /0.01 ); |
YuliangHao | 2:e36baf6001b1 | 22 | iRoom_T = 21; //Testing code |
YuliangHao | 0:0f219dfaaa4a | 23 | |
YuliangHao | 0:0f219dfaaa4a | 24 | //Display Room Temperature |
YuliangHao | 0:0f219dfaaa4a | 25 | iRoom_T_Ten = iRoom_T / 10; //Get number at ten digits |
YuliangHao | 0:0f219dfaaa4a | 26 | iRoom_T_One = iRoom_T % 10; //Get number at one digits |
YuliangHao | 0:0f219dfaaa4a | 27 | |
YuliangHao | 0:0f219dfaaa4a | 28 | display10(iRoom_T_Ten); //Display ten digits |
YuliangHao | 0:0f219dfaaa4a | 29 | display1(iRoom_T_One); //Display one digits |
YuliangHao | 0:0f219dfaaa4a | 30 | |
YuliangHao | 1:f780b7362982 | 31 | //Turn on / off furnace according to temperature |
YuliangHao | 4:c654bdf271fc | 32 | if(iRoom_T > 27) //Over 27 C |
YuliangHao | 4:c654bdf271fc | 33 | furnace = 0; //Turn furnace off |
YuliangHao | 4:c654bdf271fc | 34 | if(iRoom_T < 25) //Below 25C |
YuliangHao | 4:c654bdf271fc | 35 | furnace = 1; //Turn furnace on |
YuliangHao | 0:0f219dfaaa4a | 36 | |
YuliangHao | 0:0f219dfaaa4a | 37 | wait(1); //Wait for 1 second |
YuliangHao | 1:f780b7362982 | 38 | } // End of while(1) |
YuliangHao | 0:0f219dfaaa4a | 39 | } |
YuliangHao | 0:0f219dfaaa4a | 40 | |
YuliangHao | 3:f2026b3d5763 | 41 | //Display number at TEN digits |
YuliangHao | 0:0f219dfaaa4a | 42 | int display10( int iRoom_T_Ten) |
YuliangHao | 0:0f219dfaaa4a | 43 | { |
YuliangHao | 0:0f219dfaaa4a | 44 | switch(iRoom_T_Ten) |
YuliangHao | 0:0f219dfaaa4a | 45 | { |
YuliangHao | 0:0f219dfaaa4a | 46 | case 0: |
YuliangHao | 1:f780b7362982 | 47 | //displayA = 0x3f; //Common Cathode |
YuliangHao | 1:f780b7362982 | 48 | displayA = 0xC0; //Common Anode |
YuliangHao | 0:0f219dfaaa4a | 49 | break; |
YuliangHao | 0:0f219dfaaa4a | 50 | |
YuliangHao | 0:0f219dfaaa4a | 51 | case 1: |
YuliangHao | 0:0f219dfaaa4a | 52 | // displayA = 0x3f; |
YuliangHao | 0:0f219dfaaa4a | 53 | break; |
YuliangHao | 3:f2026b3d5763 | 54 | |
YuliangHao | 3:f2026b3d5763 | 55 | case 2: |
YuliangHao | 3:f2026b3d5763 | 56 | //displayA = 0x5B; //Common Cathode |
YuliangHao | 3:f2026b3d5763 | 57 | displayA = 0xA4; //Common Anode |
YuliangHao | 3:f2026b3d5763 | 58 | break; |
YuliangHao | 0:0f219dfaaa4a | 59 | |
YuliangHao | 0:0f219dfaaa4a | 60 | |
YuliangHao | 0:0f219dfaaa4a | 61 | default: |
YuliangHao | 0:0f219dfaaa4a | 62 | // displayA = 0x00; |
YuliangHao | 0:0f219dfaaa4a | 63 | break; |
YuliangHao | 0:0f219dfaaa4a | 64 | } |
YuliangHao | 0:0f219dfaaa4a | 65 | |
YuliangHao | 0:0f219dfaaa4a | 66 | return 1; |
YuliangHao | 0:0f219dfaaa4a | 67 | } |
YuliangHao | 0:0f219dfaaa4a | 68 | |
YuliangHao | 3:f2026b3d5763 | 69 | //Display number at ONE digits |
YuliangHao | 0:0f219dfaaa4a | 70 | int display1( int iRoom_T_One) |
YuliangHao | 0:0f219dfaaa4a | 71 | { |
YuliangHao | 0:0f219dfaaa4a | 72 | switch(iRoom_T_One) |
YuliangHao | 0:0f219dfaaa4a | 73 | { |
YuliangHao | 0:0f219dfaaa4a | 74 | case 0: |
YuliangHao | 1:f780b7362982 | 75 | //displayB = 0x3f; //Common Cathode |
YuliangHao | 1:f780b7362982 | 76 | displayB = 0xC0; //Common Anode |
YuliangHao | 0:0f219dfaaa4a | 77 | break; |
YuliangHao | 0:0f219dfaaa4a | 78 | |
YuliangHao | 0:0f219dfaaa4a | 79 | case 1: |
YuliangHao | 3:f2026b3d5763 | 80 | //displayB = 0x06; //Common Cathode |
YuliangHao | 3:f2026b3d5763 | 81 | displayB = 0xf9; //Common anode |
YuliangHao | 0:0f219dfaaa4a | 82 | break; |
YuliangHao | 0:0f219dfaaa4a | 83 | |
YuliangHao | 0:0f219dfaaa4a | 84 | |
YuliangHao | 0:0f219dfaaa4a | 85 | |
YuliangHao | 0:0f219dfaaa4a | 86 | default: |
YuliangHao | 0:0f219dfaaa4a | 87 | // displayB = 0x00; |
YuliangHao | 0:0f219dfaaa4a | 88 | break; |
YuliangHao | 0:0f219dfaaa4a | 89 | } |
YuliangHao | 0:0f219dfaaa4a | 90 | |
YuliangHao | 0:0f219dfaaa4a | 91 | return 1; |
YuliangHao | 0:0f219dfaaa4a | 92 | } |