smart-home
/
smart-home-final-version
main.cpp@2:6acc2f4efd39, 2018-09-30 (annotated)
- 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?
User | Revision | Line number | New 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 |