Functions

Dependencies:   mbed

Committer:
ccschneider
Date:
Sun Dec 23 17:05:40 2018 +0000
Revision:
0:7185c344a97f
Functions

Who changed what in which revision?

UserRevisionLine numberNew 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 }