Dependencies:   mbed TextLCD

Committer:
valorad
Date:
Sun Sep 30 17:49:50 2018 +0000
Revision:
2:6acc2f4efd39
Parent:
0:3e6bb88dd7ee
Child:
3:abe0c74fd74d
format & optimize code for temp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m_fazel 0:3e6bb88dd7ee 1 #include "mbed.h"
m_fazel 0:3e6bb88dd7ee 2 #include "TextLCD.h"
m_fazel 0:3e6bb88dd7ee 3
m_fazel 0:3e6bb88dd7ee 4 void settemp();
m_fazel 0:3e6bb88dd7ee 5 void tempmenu();
valorad 2:6acc2f4efd39 6 float getTemp();
m_fazel 0:3e6bb88dd7ee 7 AnalogIn temp_sen(A0);
m_fazel 0:3e6bb88dd7ee 8 TextLCD lcd(PTC7,PTC0,PTC3,PTC4,PTC5,PTC6);
m_fazel 0:3e6bb88dd7ee 9 InterruptIn button(D0);
m_fazel 0:3e6bb88dd7ee 10 DigitalIn push2(D1);
m_fazel 0:3e6bb88dd7ee 11 DigitalIn push1(D2);
m_fazel 0:3e6bb88dd7ee 12 DigitalIn push3(D3);
m_fazel 0:3e6bb88dd7ee 13 PwmOut mypwm(A5);
m_fazel 0:3e6bb88dd7ee 14 //DigitalOut myled(A);
m_fazel 0:3e6bb88dd7ee 15
m_fazel 0:3e6bb88dd7ee 16 int temp = 25;
valorad 2:6acc2f4efd39 17 //float tempC, tempF, tempSamp[10];
m_fazel 0:3e6bb88dd7ee 18
m_fazel 0:3e6bb88dd7ee 19 int main() {
m_fazel 0:3e6bb88dd7ee 20 tempmenu();
m_fazel 0:3e6bb88dd7ee 21 }
m_fazel 0:3e6bb88dd7ee 22
m_fazel 0:3e6bb88dd7ee 23 void settemp(){
m_fazel 0:3e6bb88dd7ee 24 lcd.cls();
m_fazel 0:3e6bb88dd7ee 25 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 26 wait(0.2);
m_fazel 0:3e6bb88dd7ee 27 while(1){
m_fazel 0:3e6bb88dd7ee 28
m_fazel 0:3e6bb88dd7ee 29 // temp up
valorad 2:6acc2f4efd39 30 if(push2 == 0){
m_fazel 0:3e6bb88dd7ee 31 temp++;
m_fazel 0:3e6bb88dd7ee 32 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 33 }
m_fazel 0:3e6bb88dd7ee 34
m_fazel 0:3e6bb88dd7ee 35 // temp down
valorad 2:6acc2f4efd39 36 if(push1 == 0){
m_fazel 0:3e6bb88dd7ee 37 temp--;
m_fazel 0:3e6bb88dd7ee 38 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 39 }
m_fazel 0:3e6bb88dd7ee 40
m_fazel 0:3e6bb88dd7ee 41 // confirm
m_fazel 0:3e6bb88dd7ee 42 if(push3 == 0){
m_fazel 0:3e6bb88dd7ee 43 break;
m_fazel 0:3e6bb88dd7ee 44 }
valorad 2:6acc2f4efd39 45 lcd.cls();
valorad 2:6acc2f4efd39 46 wait(0.2);
m_fazel 0:3e6bb88dd7ee 47 }
m_fazel 0:3e6bb88dd7ee 48 }
m_fazel 0:3e6bb88dd7ee 49
m_fazel 0:3e6bb88dd7ee 50 void tempmenu() {
valorad 2:6acc2f4efd39 51
valorad 2:6acc2f4efd39 52 // interrupt
valorad 2:6acc2f4efd39 53 button.fall(&settemp);
valorad 2:6acc2f4efd39 54 while(1) {
m_fazel 0:3e6bb88dd7ee 55 lcd.cls();
valorad 2:6acc2f4efd39 56 mypwm.period_ms(10);
m_fazel 0:3e6bb88dd7ee 57 // display menu
valorad 2:6acc2f4efd39 58 lcd.printf("T:%.2f \n", getTemp());
m_fazel 0:3e6bb88dd7ee 59 lcd.printf("1 to mod temp");
m_fazel 0:3e6bb88dd7ee 60 wait(0.2);
valorad 2:6acc2f4efd39 61 if(getTemp() < temp){
valorad 2:6acc2f4efd39 62 // if current temp is below temp set
valorad 2:6acc2f4efd39 63 wait(0.5);
valorad 2:6acc2f4efd39 64 mypwm.pulsewidth_ms(8);
valorad 2:6acc2f4efd39 65 } else {
valorad 2:6acc2f4efd39 66 mypwm.pulsewidth_ms(2);
valorad 2:6acc2f4efd39 67 }
m_fazel 0:3e6bb88dd7ee 68 }
m_fazel 0:3e6bb88dd7ee 69 }
m_fazel 0:3e6bb88dd7ee 70
valorad 2:6acc2f4efd39 71 float getTemp() {
valorad 2:6acc2f4efd39 72
valorad 2:6acc2f4efd39 73 float avg = 0.0;
valorad 2:6acc2f4efd39 74 float tempC, tempF, tempSamp[10];
valorad 2:6acc2f4efd39 75 int i;
valorad 2:6acc2f4efd39 76
valorad 2:6acc2f4efd39 77 // read temp from sensor
valorad 2:6acc2f4efd39 78 for(i = 0; i < 10; i++) {
valorad 2:6acc2f4efd39 79 tempSamp[i] = temp_sen.read();
valorad 2:6acc2f4efd39 80 wait(.05);
valorad 2:6acc2f4efd39 81 }
valorad 2:6acc2f4efd39 82
valorad 2:6acc2f4efd39 83 // calc average temp
valorad 2:6acc2f4efd39 84 for(i = 0; i < 10; i++){
valorad 2:6acc2f4efd39 85 avg = avg + (tempSamp[i] / 10);
valorad 2:6acc2f4efd39 86 }
valorad 2:6acc2f4efd39 87
valorad 2:6acc2f4efd39 88 // calc result
valorad 2:6acc2f4efd39 89 tempC = (avg * 3.685503686 * 100);
valorad 2:6acc2f4efd39 90 tempF = (9.0 * tempC) / 5.0 + 32.0;
valorad 2:6acc2f4efd39 91 return tempC;
m_fazel 0:3e6bb88dd7ee 92 }
m_fazel 0:3e6bb88dd7ee 93
m_fazel 0:3e6bb88dd7ee 94