Program to read Temperature Sensor

Dependencies:   max32630fthr USBDevice

Files at this revision

API Documentation at this revision

Comitter:
tlyp
Date:
Fri Jun 21 00:00:47 2019 +0000
Commit message:
Simple program to read and control Temperature Sensor.;

Changed in this revision

USBDevice.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
max32630fthr.lib Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBDevice.lib	Fri Jun 21 00:00:47 2019 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/#dad310740b28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jun 21 00:00:47 2019 +0000
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include "max32630fthr.h"
+#include "USBSerial.h"
+#include "math.h"
+
+MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
+
+// Hardware serial port over DAPLink
+Serial daplink(P2_1, P2_0);
+
+// Virtual serial port over USB
+USBSerial microUSB; 
+I2C i2c(P5_7, P6_0);  //sda,scl
+
+const int Write_Addr = 0x90;                            //Write Addres for Ev Kit per data sheet for temperature sensor
+const int Read_Addr = 0x91;                             //Last bit set to 1 in order to read (not write)
+const int Temperature_Register_Addr = 0x00;             //Address of Register holding Temperature data
+char Configuration_Register_Addr[1];           //Address of Register holding Configuration Settings
+char Configuration_Sleep_Data[1];                 //Initialize Sensor into Sleep mode
+char Configuration_OneShot_Data[1];                  //Send signal for temperature reading, and then device goes back to sleep
+
+int main()
+{
+microUSB.printf("=================STARTING=================\r\n");
+
+
+char data[1];          //Hold Hexidecimal Value
+char bdata [15];        //Hold Binary Value
+microUSB.printf("Program beginingin now\r\n");
+
+Configuration_Register_Addr[0] = 0x01;
+Configuration_Register_Addr[1] = 0x00;
+
+Configuration_Sleep_Data[0] = 0x01;
+Configuration_Sleep_Data[1] = 0x01;
+
+Configuration_OneShot_Data[0] = 0x01;
+Configuration_OneShot_Data[1] = 0x81;
+
+i2c.write(Write_Addr, Configuration_Sleep_Data , 2, false);                    //Set into Sleep Mode
+   
+   
+    while(1){
+        microUSB.printf("Reading initialzing\r\n");
+
+        i2c.write(Write_Addr, Configuration_OneShot_Data , 2, false);                    //Set into Sleep Mode
+        wait_ms(1);
+        
+        i2c.write(Write_Addr, Temperature_Register_Addr , 1, true);                          //Send Address to begin communication, but leave true so we can 
+        i2c.read(Read_Addr, data, 2, false);                               //Read the 2 bytes of temperature info collected by the sensor
+            //for (int i = 0; i<2;i++){
+            //    microUSB.printf("%d   ",data[i]);                //Confirm values are being read from sensor via I2C            
+            //}
+            //microUSB.printf("\r\n");                                                     
+        int count =15;                                              //Loading bits from most significant to least
+        microUSB.printf("Starting Temperature Caluclation\r\n");
+        for (int k = 0; k<2;k++){                                   //Go through both bytes
+        //microUSB.printf("Converting %d from decimal to binary \r\n",data[k]);
+            for (int j = 7;j>=0;j--){
+                int r = data[k]>>j;                                 //Check all 8 bits
+                if(r&1)                                             //Binary 1
+                     bdata[count] = 1;                              //Load 1 into array
+                else                                                //Binary 0
+                     bdata[count] = 0;                              //Load 0 into array
+                count --;                                           //Move to next array position
+            }
+        }
+        double temp = 0;
+        int index = 14;
+        for (float z=6;z>=-8;z--){                                  //Calculate temperature from array holding binary value
+            float factor = pow (2,z);                               //Calculate Added Temperature for each bit (Per data sheet)
+            temp += bdata[index] * factor;                          //Combine all bit temperature to aquire total sum
+            index--;
+        }
+        microUSB.printf("Temperature is %f degrees Celcius\r\n", temp);
+        float fahrenheit = (((temp*9)/5) + 32);                                         //Calculate temperature in F
+        microUSB.printf("Temperature is %f degrees fahrenheit\r\n", fahrenheit);
+        microUSB.printf("Reading Complete\r\n");
+        microUSB.printf("\r\n\n\n\n\n\n");
+        wait(5);                                                   //Sensor measures every 10 seconds
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/max32630fthr.lib	Fri Jun 21 00:00:47 2019 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/#8f6e6a800f2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Fri Jun 21 00:00:47 2019 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/mbed-os/#78474a5129e18e136cc7e872adbaa5b74fbb8f6a