temperature and pressure sensor
Dependencies: BMP180 beep N5110 PowerControl mbed
main.cpp@0:0d59691c1dd5, 2015-05-12 (annotated)
- Committer:
- T_AlKurdi
- Date:
- Tue May 12 23:00:47 2015 +0000
- Revision:
- 0:0d59691c1dd5
final code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
T_AlKurdi | 0:0d59691c1dd5 | 1 | /** |
T_AlKurdi | 0:0d59691c1dd5 | 2 | @file main.cpp |
T_AlKurdi | 0:0d59691c1dd5 | 3 | @brief Program implementation |
T_AlKurdi | 0:0d59691c1dd5 | 4 | |
T_AlKurdi | 0:0d59691c1dd5 | 5 | */ |
T_AlKurdi | 0:0d59691c1dd5 | 6 | |
T_AlKurdi | 0:0d59691c1dd5 | 7 | #include "main.h" |
T_AlKurdi | 0:0d59691c1dd5 | 8 | |
T_AlKurdi | 0:0d59691c1dd5 | 9 | |
T_AlKurdi | 0:0d59691c1dd5 | 10 | |
T_AlKurdi | 0:0d59691c1dd5 | 11 | void buttonPressed() { |
T_AlKurdi | 0:0d59691c1dd5 | 12 | buttonFlag=!buttonFlag; |
T_AlKurdi | 0:0d59691c1dd5 | 13 | } |
T_AlKurdi | 0:0d59691c1dd5 | 14 | |
T_AlKurdi | 0:0d59691c1dd5 | 15 | int main() |
T_AlKurdi | 0:0d59691c1dd5 | 16 | { |
T_AlKurdi | 0:0d59691c1dd5 | 17 | |
T_AlKurdi | 0:0d59691c1dd5 | 18 | /// initiliase the barometer |
T_AlKurdi | 0:0d59691c1dd5 | 19 | |
T_AlKurdi | 0:0d59691c1dd5 | 20 | bmp180.init(); |
T_AlKurdi | 0:0d59691c1dd5 | 21 | lcd.init(); // initialise display |
T_AlKurdi | 0:0d59691c1dd5 | 22 | |
T_AlKurdi | 0:0d59691c1dd5 | 23 | lcd.printString("Welcome to",15,1); // display text on screen |
T_AlKurdi | 0:0d59691c1dd5 | 24 | lcd.printString("Weather Station",20,2); |
T_AlKurdi | 0:0d59691c1dd5 | 25 | lcd.printString("Project",6,3); |
T_AlKurdi | 0:0d59691c1dd5 | 26 | lcd.printString("Tarek I. AlKurdi",0,5); |
T_AlKurdi | 0:0d59691c1dd5 | 27 | wait(5.0); // wait for 5 seconds before refreshing the LCD to display the temperature |
T_AlKurdi | 0:0d59691c1dd5 | 28 | |
T_AlKurdi | 0:0d59691c1dd5 | 29 | lcd.clear(); |
T_AlKurdi | 0:0d59691c1dd5 | 30 | lcd.refresh(); |
T_AlKurdi | 0:0d59691c1dd5 | 31 | |
T_AlKurdi | 0:0d59691c1dd5 | 32 | |
T_AlKurdi | 0:0d59691c1dd5 | 33 | button.rise(&buttonPressed); |
T_AlKurdi | 0:0d59691c1dd5 | 34 | |
T_AlKurdi | 0:0d59691c1dd5 | 35 | while(1) { |
T_AlKurdi | 0:0d59691c1dd5 | 36 | |
T_AlKurdi | 0:0d59691c1dd5 | 37 | lcd.setBrightness(1.0); // put LED backlight on full |
T_AlKurdi | 0:0d59691c1dd5 | 38 | |
T_AlKurdi | 0:0d59691c1dd5 | 39 | P = mypotentiometer; |
T_AlKurdi | 0:0d59691c1dd5 | 40 | lcd.setBrightness(P); |
T_AlKurdi | 0:0d59691c1dd5 | 41 | |
T_AlKurdi | 0:0d59691c1dd5 | 42 | if(buttonFlag) { |
T_AlKurdi | 0:0d59691c1dd5 | 43 | |
T_AlKurdi | 0:0d59691c1dd5 | 44 | |
T_AlKurdi | 0:0d59691c1dd5 | 45 | lcd.clear(); |
T_AlKurdi | 0:0d59691c1dd5 | 46 | lcd.refresh(); |
T_AlKurdi | 0:0d59691c1dd5 | 47 | |
T_AlKurdi | 0:0d59691c1dd5 | 48 | char buffer[14]; |
T_AlKurdi | 0:0d59691c1dd5 | 49 | |
T_AlKurdi | 0:0d59691c1dd5 | 50 | Measurement value; // measurement structure declared in BMP180 class |
T_AlKurdi | 0:0d59691c1dd5 | 51 | value = bmp180.readValues(); |
T_AlKurdi | 0:0d59691c1dd5 | 52 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 53 | |
T_AlKurdi | 0:0d59691c1dd5 | 54 | int length = sprintf(buffer, "T = %.2f K", value.temperature+273); // configuration of celsis to kelvin conversion |
T_AlKurdi | 0:0d59691c1dd5 | 55 | if (length <= 14) |
T_AlKurdi | 0:0d59691c1dd5 | 56 | lcd.printString(buffer,0,1);// display value on LCD screen |
T_AlKurdi | 0:0d59691c1dd5 | 57 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 58 | |
T_AlKurdi | 0:0d59691c1dd5 | 59 | length = sprintf(buffer, "P =%.2f P", value.pressure/1000); // coverting mili Pascal to pascal |
T_AlKurdi | 0:0d59691c1dd5 | 60 | if (length <=14) |
T_AlKurdi | 0:0d59691c1dd5 | 61 | lcd.printString(buffer,0,2); // display the value on the LCD screen |
T_AlKurdi | 0:0d59691c1dd5 | 62 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 63 | |
T_AlKurdi | 0:0d59691c1dd5 | 64 | } |
T_AlKurdi | 0:0d59691c1dd5 | 65 | else{ |
T_AlKurdi | 0:0d59691c1dd5 | 66 | |
T_AlKurdi | 0:0d59691c1dd5 | 67 | lcd.clear(); |
T_AlKurdi | 0:0d59691c1dd5 | 68 | lcd.refresh(); // refresh the screen |
T_AlKurdi | 0:0d59691c1dd5 | 69 | |
T_AlKurdi | 0:0d59691c1dd5 | 70 | char buffer[14]; |
T_AlKurdi | 0:0d59691c1dd5 | 71 | |
T_AlKurdi | 0:0d59691c1dd5 | 72 | Measurement value; // measurement structure declared in BMP180 class |
T_AlKurdi | 0:0d59691c1dd5 | 73 | value = bmp180.readValues(); // set the value to the sensors reading |
T_AlKurdi | 0:0d59691c1dd5 | 74 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 75 | |
T_AlKurdi | 0:0d59691c1dd5 | 76 | int length = sprintf(buffer, "T = %.2f C", value.temperature); |
T_AlKurdi | 0:0d59691c1dd5 | 77 | if (length <= 14) |
T_AlKurdi | 0:0d59691c1dd5 | 78 | lcd.printString(buffer,0,1); // Display the temperature on the first line |
T_AlKurdi | 0:0d59691c1dd5 | 79 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 80 | |
T_AlKurdi | 0:0d59691c1dd5 | 81 | length = sprintf(buffer, "P =%.2f mP", value.pressure); // Display the pressure on the 2nd line under the temp. |
T_AlKurdi | 0:0d59691c1dd5 | 82 | if (length <=14) |
T_AlKurdi | 0:0d59691c1dd5 | 83 | lcd.printString(buffer,0,2); |
T_AlKurdi | 0:0d59691c1dd5 | 84 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 85 | //lcd.refresh(); |
T_AlKurdi | 0:0d59691c1dd5 | 86 | } |
T_AlKurdi | 0:0d59691c1dd5 | 87 | |
T_AlKurdi | 0:0d59691c1dd5 | 88 | Measurement value; // measurement structure declared in BMP180 class |
T_AlKurdi | 0:0d59691c1dd5 | 89 | value = bmp180.readValues(); // set values of sensor reading on the screen |
T_AlKurdi | 0:0d59691c1dd5 | 90 | wait(0.1); |
T_AlKurdi | 0:0d59691c1dd5 | 91 | |
T_AlKurdi | 0:0d59691c1dd5 | 92 | |
T_AlKurdi | 0:0d59691c1dd5 | 93 | if (value.temperature>22 && value.temperature<=28) { // if the temp is between 22 and 28 celsius |
T_AlKurdi | 0:0d59691c1dd5 | 94 | greenled= 0; // LED OFF |
T_AlKurdi | 0:0d59691c1dd5 | 95 | redled=1; // LED ON |
T_AlKurdi | 0:0d59691c1dd5 | 96 | } |
T_AlKurdi | 0:0d59691c1dd5 | 97 | |
T_AlKurdi | 0:0d59691c1dd5 | 98 | else if (value.temperature>28 && value.temperature<=31) { // if temp. between 28 and 31 celsius |
T_AlKurdi | 0:0d59691c1dd5 | 99 | greenled=1; //LED ON |
T_AlKurdi | 0:0d59691c1dd5 | 100 | redled=0; // LED OFF |
T_AlKurdi | 0:0d59691c1dd5 | 101 | } |
T_AlKurdi | 0:0d59691c1dd5 | 102 | |
T_AlKurdi | 0:0d59691c1dd5 | 103 | else { |
T_AlKurdi | 0:0d59691c1dd5 | 104 | greenled=0; // LED OFF |
T_AlKurdi | 0:0d59691c1dd5 | 105 | redled=0; // LED OFF |
T_AlKurdi | 0:0d59691c1dd5 | 106 | buzzer.beep(1000,0.5); // Buzzer will be activated when the temp increases above 31 celsius |
T_AlKurdi | 0:0d59691c1dd5 | 107 | } |
T_AlKurdi | 0:0d59691c1dd5 | 108 | |
T_AlKurdi | 0:0d59691c1dd5 | 109 | wait(0.01); |
T_AlKurdi | 0:0d59691c1dd5 | 110 | |
T_AlKurdi | 0:0d59691c1dd5 | 111 | } |
T_AlKurdi | 0:0d59691c1dd5 | 112 | |
T_AlKurdi | 0:0d59691c1dd5 | 113 | } |