
Functions
main.cpp@0:7185c344a97f, 2018-12-23 (annotated)
- Committer:
- ccschneider
- Date:
- Sun Dec 23 17:05:40 2018 +0000
- Revision:
- 0:7185c344a97f
Functions
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ccschneider | 0:7185c344a97f | 1 | //Cecilia Schneider |
ccschneider | 0:7185c344a97f | 2 | //OCE 360 HW #5 October 18,2018 |
ccschneider | 0:7185c344a97f | 3 | |
ccschneider | 0:7185c344a97f | 4 | #include "mbed.h" |
ccschneider | 0:7185c344a97f | 5 | #define mV_Volt 3300 |
ccschneider | 0:7185c344a97f | 6 | #define TMP36_calib 500 |
ccschneider | 0:7185c344a97f | 7 | |
ccschneider | 0:7185c344a97f | 8 | Serial pc(USBTX, USBRX); //comms to host PC |
ccschneider | 0:7185c344a97f | 9 | BusOut Seg1(p12,p13,p14,p15,p16,p17,p18,p19); // A,B,C,D,E,F,G,DP (tens place) |
ccschneider | 0:7185c344a97f | 10 | BusOut Seg2(p21,p22,p23,p24,p25,p26,p27,p28); // A,B,C,D,E,F,G,DP (ones place) |
ccschneider | 0:7185c344a97f | 11 | AnalogIn TMP36(p20); // temperature sensor input on p20 |
ccschneider | 0:7185c344a97f | 12 | DigitalIn s1(p11); // switch on p11 |
ccschneider | 0:7185c344a97f | 13 | |
ccschneider | 0:7185c344a97f | 14 | char SegConvert(char SegValue); // function to convert a number to a 7-segment byte |
ccschneider | 0:7185c344a97f | 15 | float temp = TMP36; // converts analog input to float |
ccschneider | 0:7185c344a97f | 16 | int tempmV = (temp*(mV_Volt))-TMP36_calib; // float in volts to int in mV |
ccschneider | 0:7185c344a97f | 17 | int tempC = tempmV / 10; // int in mV to degrees C |
ccschneider | 0:7185c344a97f | 18 | |
ccschneider | 0:7185c344a97f | 19 | int main() |
ccschneider | 0:7185c344a97f | 20 | { |
ccschneider | 0:7185c344a97f | 21 | while (1) { |
ccschneider | 0:7185c344a97f | 22 | float temp1 = TMP36; //new analog input to float |
ccschneider | 0:7185c344a97f | 23 | int tempmV1 =(temp1*(mV_Volt))-TMP36_calib; // float (V) to int (mV) |
ccschneider | 0:7185c344a97f | 24 | int tempC1 = tempmV1 / 10; // int in mV to degrees C |
ccschneider | 0:7185c344a97f | 25 | int voltdiff = tempmV - tempmV1; |
ccschneider | 0:7185c344a97f | 26 | int tempdiff = tempC - tempC1; |
ccschneider | 0:7185c344a97f | 27 | |
ccschneider | 0:7185c344a97f | 28 | if (s1 == 1){ |
ccschneider | 0:7185c344a97f | 29 | int ones = voltdiff % 10; // find the remainder for units column |
ccschneider | 0:7185c344a97f | 30 | int tens = voltdiff / 10; // find the remainder for tens column |
ccschneider | 0:7185c344a97f | 31 | Seg2=SegConvert(abs(ones)); // units column |
ccschneider | 0:7185c344a97f | 32 | Seg1=SegConvert(abs(tens)); // tens column |
ccschneider | 0:7185c344a97f | 33 | // Continuously Output to the Terminal |
ccschneider | 0:7185c344a97f | 34 | pc.printf("Original mV: %d \r\n",tempmV); |
ccschneider | 0:7185c344a97f | 35 | pc.printf("New mV: %d \r\n",tempmV1); |
ccschneider | 0:7185c344a97f | 36 | pc.printf("Difference mV: %d \r\n",voltdiff); |
ccschneider | 0:7185c344a97f | 37 | wait(1); |
ccschneider | 0:7185c344a97f | 38 | } |
ccschneider | 0:7185c344a97f | 39 | else { |
ccschneider | 0:7185c344a97f | 40 | int ones = tempdiff % 10; // find the remainder for units column |
ccschneider | 0:7185c344a97f | 41 | int tens = tempdiff / 10; // find the remainder for tens column |
ccschneider | 0:7185c344a97f | 42 | Seg2=SegConvert(abs(ones)); // units column |
ccschneider | 0:7185c344a97f | 43 | Seg1=SegConvert(abs(tens)); // tens column |
ccschneider | 0:7185c344a97f | 44 | // Continuously Output to the Terminal |
ccschneider | 0:7185c344a97f | 45 | pc.printf("Original Temp: %d \r\n",tempC); |
ccschneider | 0:7185c344a97f | 46 | pc.printf("New Temp: %d \r\n",tempC1); |
ccschneider | 0:7185c344a97f | 47 | pc.printf("Temp Diff: %d \r\n",tempdiff); |
ccschneider | 0:7185c344a97f | 48 | wait(1); |
ccschneider | 0:7185c344a97f | 49 | } |
ccschneider | 0:7185c344a97f | 50 | |
ccschneider | 0:7185c344a97f | 51 | } |
ccschneider | 0:7185c344a97f | 52 | } |
ccschneider | 0:7185c344a97f | 53 | char SegConvert(char SegValue) // function 'SegConvert' |
ccschneider | 0:7185c344a97f | 54 | { |
ccschneider | 0:7185c344a97f | 55 | char SegByte=0x00; |
ccschneider | 0:7185c344a97f | 56 | switch (SegValue) { // DPGFEDCBA |
ccschneider | 0:7185c344a97f | 57 | case 0 : |
ccschneider | 0:7185c344a97f | 58 | SegByte = 0xC0; |
ccschneider | 0:7185c344a97f | 59 | break; // 00111111 binary |
ccschneider | 0:7185c344a97f | 60 | case 1 : |
ccschneider | 0:7185c344a97f | 61 | SegByte = 0xF9; |
ccschneider | 0:7185c344a97f | 62 | break; // 00000110 binary |
ccschneider | 0:7185c344a97f | 63 | case 2 : |
ccschneider | 0:7185c344a97f | 64 | SegByte = 0xA4; |
ccschneider | 0:7185c344a97f | 65 | break; // 01011011 binary |
ccschneider | 0:7185c344a97f | 66 | case 3 : |
ccschneider | 0:7185c344a97f | 67 | SegByte = 0xB0; |
ccschneider | 0:7185c344a97f | 68 | break; // 01001111 binary |
ccschneider | 0:7185c344a97f | 69 | case 4 : |
ccschneider | 0:7185c344a97f | 70 | SegByte = 0x99; |
ccschneider | 0:7185c344a97f | 71 | break; // 01100110 binary |
ccschneider | 0:7185c344a97f | 72 | case 5 : |
ccschneider | 0:7185c344a97f | 73 | SegByte = 0x92; |
ccschneider | 0:7185c344a97f | 74 | break; // 01101101 binary |
ccschneider | 0:7185c344a97f | 75 | case 6 : |
ccschneider | 0:7185c344a97f | 76 | SegByte = 0x82; |
ccschneider | 0:7185c344a97f | 77 | break; // 01111101 binary |
ccschneider | 0:7185c344a97f | 78 | case 7 : |
ccschneider | 0:7185c344a97f | 79 | SegByte = 0xF8; |
ccschneider | 0:7185c344a97f | 80 | break; // 00000111 binary |
ccschneider | 0:7185c344a97f | 81 | case 8 : |
ccschneider | 0:7185c344a97f | 82 | SegByte = 0x80; |
ccschneider | 0:7185c344a97f | 83 | break; // 01111111 binary |
ccschneider | 0:7185c344a97f | 84 | case 9 : |
ccschneider | 0:7185c344a97f | 85 | SegByte = 0x90; |
ccschneider | 0:7185c344a97f | 86 | break; // 01101111 binary |
ccschneider | 0:7185c344a97f | 87 | } |
ccschneider | 0:7185c344a97f | 88 | return SegByte; |
ccschneider | 0:7185c344a97f | 89 | } |