Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:abe0c74fd74d, 2018-10-08 (annotated)
- 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?
| 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(); |
| 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 | } |