smart-home / Mbed 2 deprecated smart-home-final-version

Dependencies:   mbed TextLCD

Committer:
osamugint
Date:
Mon Oct 08 04:19:57 2018 +0000
Revision:
3:abe0c74fd74d
Parent:
2:6acc2f4efd39
working on light sensor

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();
osamugint 3:abe0c74fd74d 7 void count();
osamugint 3:abe0c74fd74d 8 void light();
m_fazel 0:3e6bb88dd7ee 9 AnalogIn temp_sen(A0);
m_fazel 0:3e6bb88dd7ee 10 TextLCD lcd(PTC7,PTC0,PTC3,PTC4,PTC5,PTC6);
m_fazel 0:3e6bb88dd7ee 11 InterruptIn button(D0);
osamugint 3:abe0c74fd74d 12 InterruptIn rising_edge(A4);
m_fazel 0:3e6bb88dd7ee 13 DigitalIn push2(D1);
m_fazel 0:3e6bb88dd7ee 14 DigitalIn push1(D2);
m_fazel 0:3e6bb88dd7ee 15 DigitalIn push3(D3);
m_fazel 0:3e6bb88dd7ee 16 PwmOut mypwm(A5);
osamugint 3:abe0c74fd74d 17 Timer tm1;
m_fazel 0:3e6bb88dd7ee 18 //DigitalOut myled(A);
m_fazel 0:3e6bb88dd7ee 19
osamugint 3:abe0c74fd74d 20 int counter = 0;
m_fazel 0:3e6bb88dd7ee 21 int temp = 25;
valorad 2:6acc2f4efd39 22 //float tempC, tempF, tempSamp[10];
m_fazel 0:3e6bb88dd7ee 23
m_fazel 0:3e6bb88dd7ee 24 int main() {
osamugint 3:abe0c74fd74d 25 //tempmenu();
osamugint 3:abe0c74fd74d 26 int duration = 0;
osamugint 3:abe0c74fd74d 27 while(1){
osamugint 3:abe0c74fd74d 28 if (duration == 0){
osamugint 3:abe0c74fd74d 29 tm1.start();
osamugint 3:abe0c74fd74d 30 }
osamugint 3:abe0c74fd74d 31 duration = tm1.read_ms();
osamugint 3:abe0c74fd74d 32 light();
osamugint 3:abe0c74fd74d 33 if (duration == 5000){
osamugint 3:abe0c74fd74d 34 lcd.printf("counter: %i",counter);
osamugint 3:abe0c74fd74d 35 tm1.reset();
osamugint 3:abe0c74fd74d 36 duration = 0;
osamugint 3:abe0c74fd74d 37 }
osamugint 3:abe0c74fd74d 38 }
m_fazel 0:3e6bb88dd7ee 39 }
m_fazel 0:3e6bb88dd7ee 40
m_fazel 0:3e6bb88dd7ee 41 void settemp(){
m_fazel 0:3e6bb88dd7ee 42 lcd.cls();
m_fazel 0:3e6bb88dd7ee 43 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 44 wait(0.2);
m_fazel 0:3e6bb88dd7ee 45 while(1){
m_fazel 0:3e6bb88dd7ee 46
m_fazel 0:3e6bb88dd7ee 47 // temp up
valorad 2:6acc2f4efd39 48 if(push2 == 0){
m_fazel 0:3e6bb88dd7ee 49 temp++;
m_fazel 0:3e6bb88dd7ee 50 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 51 }
m_fazel 0:3e6bb88dd7ee 52
m_fazel 0:3e6bb88dd7ee 53 // temp down
valorad 2:6acc2f4efd39 54 if(push1 == 0){
m_fazel 0:3e6bb88dd7ee 55 temp--;
m_fazel 0:3e6bb88dd7ee 56 lcd.printf("enter temp: %d",temp);
m_fazel 0:3e6bb88dd7ee 57 }
m_fazel 0:3e6bb88dd7ee 58
m_fazel 0:3e6bb88dd7ee 59 // confirm
m_fazel 0:3e6bb88dd7ee 60 if(push3 == 0){
m_fazel 0:3e6bb88dd7ee 61 break;
m_fazel 0:3e6bb88dd7ee 62 }
valorad 2:6acc2f4efd39 63 lcd.cls();
valorad 2:6acc2f4efd39 64 wait(0.2);
m_fazel 0:3e6bb88dd7ee 65 }
m_fazel 0:3e6bb88dd7ee 66 }
m_fazel 0:3e6bb88dd7ee 67
m_fazel 0:3e6bb88dd7ee 68 void tempmenu() {
valorad 2:6acc2f4efd39 69
valorad 2:6acc2f4efd39 70 // interrupt
valorad 2:6acc2f4efd39 71 button.fall(&settemp);
valorad 2:6acc2f4efd39 72 while(1) {
m_fazel 0:3e6bb88dd7ee 73 lcd.cls();
valorad 2:6acc2f4efd39 74 mypwm.period_ms(10);
m_fazel 0:3e6bb88dd7ee 75 // display menu
valorad 2:6acc2f4efd39 76 lcd.printf("T:%.2f \n", getTemp());
m_fazel 0:3e6bb88dd7ee 77 lcd.printf("1 to mod temp");
m_fazel 0:3e6bb88dd7ee 78 wait(0.2);
valorad 2:6acc2f4efd39 79 if(getTemp() < temp){
valorad 2:6acc2f4efd39 80 // if current temp is below temp set
valorad 2:6acc2f4efd39 81 wait(0.5);
valorad 2:6acc2f4efd39 82 mypwm.pulsewidth_ms(8);
valorad 2:6acc2f4efd39 83 } else {
valorad 2:6acc2f4efd39 84 mypwm.pulsewidth_ms(2);
valorad 2:6acc2f4efd39 85 }
m_fazel 0:3e6bb88dd7ee 86 }
m_fazel 0:3e6bb88dd7ee 87 }
m_fazel 0:3e6bb88dd7ee 88
valorad 2:6acc2f4efd39 89 float getTemp() {
valorad 2:6acc2f4efd39 90
valorad 2:6acc2f4efd39 91 float avg = 0.0;
valorad 2:6acc2f4efd39 92 float tempC, tempF, tempSamp[10];
valorad 2:6acc2f4efd39 93 int i;
valorad 2:6acc2f4efd39 94
valorad 2:6acc2f4efd39 95 // read temp from sensor
valorad 2:6acc2f4efd39 96 for(i = 0; i < 10; i++) {
valorad 2:6acc2f4efd39 97 tempSamp[i] = temp_sen.read();
valorad 2:6acc2f4efd39 98 wait(.05);
valorad 2:6acc2f4efd39 99 }
valorad 2:6acc2f4efd39 100
valorad 2:6acc2f4efd39 101 // calc average temp
valorad 2:6acc2f4efd39 102 for(i = 0; i < 10; i++){
valorad 2:6acc2f4efd39 103 avg = avg + (tempSamp[i] / 10);
valorad 2:6acc2f4efd39 104 }
valorad 2:6acc2f4efd39 105
valorad 2:6acc2f4efd39 106 // calc result
valorad 2:6acc2f4efd39 107 tempC = (avg * 3.685503686 * 100);
valorad 2:6acc2f4efd39 108 tempF = (9.0 * tempC) / 5.0 + 32.0;
valorad 2:6acc2f4efd39 109 return tempC;
m_fazel 0:3e6bb88dd7ee 110 }
m_fazel 0:3e6bb88dd7ee 111
osamugint 3:abe0c74fd74d 112 void light(){
osamugint 3:abe0c74fd74d 113 rising_edge.rise(&count);
osamugint 3:abe0c74fd74d 114 }
osamugint 3:abe0c74fd74d 115
osamugint 3:abe0c74fd74d 116 void count(){
osamugint 3:abe0c74fd74d 117 counter++;
osamugint 3:abe0c74fd74d 118 }