Hello world for MAX31855 thermocouple

Dependencies:   4DGL-uLCD-SE MAX31855 mbed-rtos mbed

Fork of Thermo_MAX31855 by Eric Patterson

Committer:
ericspatterson
Date:
Wed Oct 22 16:22:13 2014 +0000
Revision:
2:0525f2f1dd95
Parent:
1:04f483a4edc0
Display F and C temperature

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ericspatterson 0:1f8e362f558b 1 #include "mbed.h"
ericspatterson 0:1f8e362f558b 2 #include "uLCD_4DGL.h"
ericspatterson 0:1f8e362f558b 3 #include "rtos.h"
ericspatterson 0:1f8e362f558b 4 #include "stdio.h"
ericspatterson 0:1f8e362f558b 5 #include "max31855.h"
ericspatterson 0:1f8e362f558b 6
ericspatterson 0:1f8e362f558b 7 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
ericspatterson 0:1f8e362f558b 8 SPI thermoSPI(p5,p6,p7); // setup SPI interface
ericspatterson 0:1f8e362f558b 9 max31855 max1(thermoSPI, p20); //setup max31855 interface
ericspatterson 0:1f8e362f558b 10 Mutex lcd_mutex; // mutex to make the lcd lib thread safe
ericspatterson 0:1f8e362f558b 11 Semaphore four_slots(1); //Activate semaphore
ericspatterson 0:1f8e362f558b 12
ericspatterson 0:1f8e362f558b 13
ericspatterson 0:1f8e362f558b 14 // Thread t1
ericspatterson 0:1f8e362f558b 15 // print the elapsed time on line 1 of the uLCD (i.e., HH:MM:SS)
ericspatterson 0:1f8e362f558b 16 void elapsedtime(void const *args) { //line 2
ericspatterson 0:1f8e362f558b 17 int s = 00;
ericspatterson 0:1f8e362f558b 18 int m = 00;
ericspatterson 0:1f8e362f558b 19 int h = 00;
ericspatterson 0:1f8e362f558b 20
ericspatterson 0:1f8e362f558b 21 while(true){
ericspatterson 0:1f8e362f558b 22 s++;
ericspatterson 0:1f8e362f558b 23 if(s>59){
ericspatterson 0:1f8e362f558b 24 s=00;
ericspatterson 0:1f8e362f558b 25 m++;
ericspatterson 0:1f8e362f558b 26 }
ericspatterson 0:1f8e362f558b 27 if(m>59){
ericspatterson 0:1f8e362f558b 28 m=00;
ericspatterson 0:1f8e362f558b 29 h++;
ericspatterson 0:1f8e362f558b 30 }
ericspatterson 0:1f8e362f558b 31 four_slots.wait();
ericspatterson 0:1f8e362f558b 32 //lcd_mutex.lock();
ericspatterson 0:1f8e362f558b 33 uLCD.color(0xFFFF00);
ericspatterson 2:0525f2f1dd95 34 uLCD.locate(0,0); //col,row
ericspatterson 0:1f8e362f558b 35 wait(0.1);
ericspatterson 0:1f8e362f558b 36 uLCD.printf("ET: %2d:%2d:%2d", h,m,s);
ericspatterson 0:1f8e362f558b 37 //lcd_mutex.unlock();
ericspatterson 0:1f8e362f558b 38 four_slots.release();
ericspatterson 1:04f483a4edc0 39 Thread::wait(1000); // update once per secon
ericspatterson 0:1f8e362f558b 40 }
ericspatterson 0:1f8e362f558b 41 }
ericspatterson 0:1f8e362f558b 42
ericspatterson 0:1f8e362f558b 43
ericspatterson 0:1f8e362f558b 44 // Thread t2
ericspatterson 0:1f8e362f558b 45 // print the temperature from the thermocouple - MAX31855 device
ericspatterson 0:1f8e362f558b 46 void thermoread(void const *args) { //line 2
ericspatterson 0:1f8e362f558b 47
ericspatterson 0:1f8e362f558b 48 float ftemperature = 0; // float variable for temperature
ericspatterson 2:0525f2f1dd95 49 float ctemperature = 0; // float variable for temperature
ericspatterson 0:1f8e362f558b 50 while(true){
ericspatterson 0:1f8e362f558b 51 if (max1.ready()==1){
ericspatterson 2:0525f2f1dd95 52 ctemperature = max1.read_temp(); //Get the reading
ericspatterson 2:0525f2f1dd95 53 ftemperature = (ctemperature)*(9.0/5.0)+32.0;
ericspatterson 0:1f8e362f558b 54 four_slots.wait();
ericspatterson 0:1f8e362f558b 55 uLCD.color(0xFFFF00);
ericspatterson 2:0525f2f1dd95 56 uLCD.locate(0,2); //col,row
ericspatterson 0:1f8e362f558b 57 wait(0.1);
ericspatterson 2:0525f2f1dd95 58 uLCD.printf("Temp. F: %4.2f", ftemperature);
ericspatterson 2:0525f2f1dd95 59 uLCD.color(0xFFFF00);
ericspatterson 2:0525f2f1dd95 60 uLCD.locate(0,4); //col,row
ericspatterson 2:0525f2f1dd95 61 wait(0.1);
ericspatterson 2:0525f2f1dd95 62 uLCD.printf("Temp. C: %4.2f", ctemperature);
ericspatterson 0:1f8e362f558b 63 four_slots.release();
ericspatterson 0:1f8e362f558b 64
ericspatterson 0:1f8e362f558b 65 }
ericspatterson 0:1f8e362f558b 66 }
ericspatterson 0:1f8e362f558b 67 }
ericspatterson 0:1f8e362f558b 68
ericspatterson 0:1f8e362f558b 69
ericspatterson 0:1f8e362f558b 70 int main() {
ericspatterson 0:1f8e362f558b 71 max1.initialise(); //initialize thermocouple IC
ericspatterson 0:1f8e362f558b 72 uLCD.baudrate(3000000); //set LCD baudrate
ericspatterson 0:1f8e362f558b 73 Thread t1(elapsedtime); //run elapsed time counter
ericspatterson 0:1f8e362f558b 74 Thread t2(thermoread); //read and display temperature from thermocouple
ericspatterson 0:1f8e362f558b 75
ericspatterson 0:1f8e362f558b 76 while(1){ //While so program doesn't end
ericspatterson 0:1f8e362f558b 77
ericspatterson 0:1f8e362f558b 78 }
ericspatterson 0:1f8e362f558b 79 }