temperature and pressure sensor

Dependencies:   BMP180 beep N5110 PowerControl mbed

Committer:
T_AlKurdi
Date:
Tue May 12 23:00:47 2015 +0000
Revision:
0:0d59691c1dd5
final code

Who changed what in which revision?

UserRevisionLine numberNew 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 }