Orla Gilson / Mbed 2 deprecated WeatherLogger

Dependencies:   BMP180 N5110 mbed

Committer:
orlagilson
Date:
Thu Apr 30 12:32:57 2015 +0000
Revision:
1:1accd82f4281
Parent:
0:2fd314d76f37
Child:
2:6b564e388747
Second commit.; Tickers in function for temperature and pressure.; No light measurements yet.; Build system down, not tested.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
orlagilson 0:2fd314d76f37 1 #include "mbed.h"
orlagilson 0:2fd314d76f37 2 #include "BMP180.h"
orlagilson 0:2fd314d76f37 3 #include "N5110.h"
orlagilson 0:2fd314d76f37 4
orlagilson 0:2fd314d76f37 5 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
orlagilson 0:2fd314d76f37 6 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
orlagilson 0:2fd314d76f37 7 // Can also power (VCC) directly from VOUT (3.3 V) -
orlagilson 0:2fd314d76f37 8 // Can give better performance due to current limitation from GPIO pin
orlagilson 0:2fd314d76f37 9
orlagilson 0:2fd314d76f37 10 BMP180 bmp180(p28,p27); // SDA, SCL
orlagilson 0:2fd314d76f37 11 Serial serial(USBTX,USBRX);
orlagilson 0:2fd314d76f37 12
orlagilson 0:2fd314d76f37 13 AnalogIn BUT1(p15);
orlagilson 0:2fd314d76f37 14 AnalogIn BUT2(p16);
orlagilson 0:2fd314d76f37 15 AnalogIn POT(p20);
orlagilson 0:2fd314d76f37 16
orlagilson 0:2fd314d76f37 17 int nx=84;
orlagilson 0:2fd314d76f37 18 int ny=48;
orlagilson 0:2fd314d76f37 19 int i,j;
orlagilson 0:2fd314d76f37 20
orlagilson 0:2fd314d76f37 21 void clearCells();
orlagilson 0:2fd314d76f37 22
orlagilson 1:1accd82f4281 23 Ticker timerT;
orlagilson 1:1accd82f4281 24 Ticker timerP;
orlagilson 1:1accd82f4281 25
orlagilson 1:1accd82f4281 26 int timerTFlag = 0;
orlagilson 1:1accd82f4281 27 int timerPFlag = 0;
orlagilson 1:1accd82f4281 28
orlagilson 1:1accd82f4281 29 void timerTExpired(){
orlagilson 1:1accd82f4281 30 timerTFlag = 1;
orlagilson 1:1accd82f4281 31 }
orlagilson 1:1accd82f4281 32 void timerPExpired(){
orlagilson 1:1accd82f4281 33 timerPFlag = 1;
orlagilson 1:1accd82f4281 34 }
orlagilson 1:1accd82f4281 35
orlagilson 0:2fd314d76f37 36 void readTemp(){
orlagilson 0:2fd314d76f37 37 while(1){
orlagilson 1:1accd82f4281 38 if (timerTFlag){
orlagilson 1:1accd82f4281 39 timerTFlag=0;
orlagilson 1:1accd82f4281 40 clearCells();
orlagilson 1:1accd82f4281 41 char bufferT[14];
orlagilson 1:1accd82f4281 42 measurement = bmp180.readValues();
orlagilson 1:1accd82f4281 43 int length=sprintf(bufferT,"T = %.2f C",measurement.temperature);
orlagilson 1:1accd82f4281 44 if (length<=14){
orlagilson 1:1accd82f4281 45 lcd.printString(bufferT,10,2);
orlagilson 1:1accd82f4281 46 }
orlagilson 0:2fd314d76f37 47 }
orlagilson 0:2fd314d76f37 48 }
orlagilson 0:2fd314d76f37 49 }
orlagilson 0:2fd314d76f37 50
orlagilson 0:2fd314d76f37 51 void readPress(){
orlagilson 0:2fd314d76f37 52 while(1){
orlagilson 1:1accd82f4281 53 if (timerPFlag){
orlagilson 1:1accd82f4281 54 timerPFlag=0;
orlagilson 1:1accd82f4281 55 clearCells();
orlagilson 1:1accd82f4281 56 char bufferP[14];
orlagilson 1:1accd82f4281 57 measurement = bmp180.readValues();
orlagilson 1:1accd82f4281 58 int length=sprintf(bufferP,"P = %.2f mb",measurement.pressure);
orlagilson 1:1accd82f4281 59 if (length<=14){
orlagilson 1:1accd82f4281 60 lcd.printString(bufferP,0,2);
orlagilson 1:1accd82f4281 61 }
orlagilson 0:2fd314d76f37 62 }
orlagilson 0:2fd314d76f37 63 }
orlagilson 0:2fd314d76f37 64 }
orlagilson 0:2fd314d76f37 65
orlagilson 0:2fd314d76f37 66 void menu()
orlagilson 0:2fd314d76f37 67 {
orlagilson 0:2fd314d76f37 68 while(1) {
orlagilson 0:2fd314d76f37 69 lcd.normalMode(); //normal LCD colour mode
orlagilson 0:2fd314d76f37 70 lcd.setBrightness(0.5); //LCD backlight set to 50% brightness
orlagilson 0:2fd314d76f37 71 if (POT>(2.0/3.0)) {
orlagilson 0:2fd314d76f37 72 clearCells();
orlagilson 0:2fd314d76f37 73 lcd.printString("Temperature",10,1);
orlagilson 0:2fd314d76f37 74 lcd.printString(">",80,2);
orlagilson 0:2fd314d76f37 75 lcd.printString("Graph",0,5);
orlagilson 0:2fd314d76f37 76 lcd.printString("Current",43,5);
orlagilson 0:2fd314d76f37 77 if (BUT1>0.9) { //left button takes the user to the graph option
orlagilson 0:2fd314d76f37 78 clearCells();
orlagilson 0:2fd314d76f37 79 //tempGraph();
orlagilson 0:2fd314d76f37 80 }
orlagilson 0:2fd314d76f37 81 if (BUT2>0.9) { //right button takes the user to the current reading
orlagilson 0:2fd314d76f37 82 clearCells();
orlagilson 0:2fd314d76f37 83 readTemp();
orlagilson 0:2fd314d76f37 84 }
orlagilson 0:2fd314d76f37 85 }
orlagilson 0:2fd314d76f37 86 if ((POT>1.0/3.0)&&(POT<2.0/3.0)) {
orlagilson 0:2fd314d76f37 87 clearCells();
orlagilson 0:2fd314d76f37 88 lcd.printString("Pressure",20,1);
orlagilson 0:2fd314d76f37 89 lcd.printString("<",0,2);
orlagilson 0:2fd314d76f37 90 lcd.printString(">",80,2);
orlagilson 0:2fd314d76f37 91 lcd.printString("Graph",0,5);
orlagilson 0:2fd314d76f37 92 lcd.printString("Current",43,5);
orlagilson 0:2fd314d76f37 93 if (BUT1>0.9) {
orlagilson 0:2fd314d76f37 94 clearCells();
orlagilson 0:2fd314d76f37 95 //pressGraph();
orlagilson 0:2fd314d76f37 96 }
orlagilson 0:2fd314d76f37 97 if (BUT2>0.9) {
orlagilson 0:2fd314d76f37 98 clearCells();
orlagilson 0:2fd314d76f37 99 readPress();
orlagilson 0:2fd314d76f37 100 }
orlagilson 0:2fd314d76f37 101 }
orlagilson 0:2fd314d76f37 102 if (POT<(1.0/3.0)) {
orlagilson 0:2fd314d76f37 103 clearCells();
orlagilson 0:2fd314d76f37 104 lcd.printString("Light",30,1);
orlagilson 0:2fd314d76f37 105 lcd.printString("<",0,2);
orlagilson 0:2fd314d76f37 106 lcd.printString("Graph",0,5);
orlagilson 0:2fd314d76f37 107 lcd.printString("Current",43,5);
orlagilson 0:2fd314d76f37 108 if (BUT1>0.9) {
orlagilson 0:2fd314d76f37 109 clearCells();
orlagilson 0:2fd314d76f37 110 //lightGraph();
orlagilson 0:2fd314d76f37 111 }
orlagilson 0:2fd314d76f37 112 if (BUT2>0.9) {
orlagilson 0:2fd314d76f37 113 clearCells();
orlagilson 0:2fd314d76f37 114 //readLight();
orlagilson 0:2fd314d76f37 115 }
orlagilson 0:2fd314d76f37 116 }
orlagilson 0:2fd314d76f37 117 }
orlagilson 0:2fd314d76f37 118 }
orlagilson 0:2fd314d76f37 119
orlagilson 0:2fd314d76f37 120 void clearCells ()
orlagilson 0:2fd314d76f37 121 {
orlagilson 0:2fd314d76f37 122 //loop through cells and clear
orlagilson 0:2fd314d76f37 123 for (int i=0; i<nx; i++) {
orlagilson 0:2fd314d76f37 124 for (int j=0; j<ny; j++) {
orlagilson 0:2fd314d76f37 125 lcd.clearPixel(i,j);
orlagilson 0:2fd314d76f37 126 }
orlagilson 0:2fd314d76f37 127 }
orlagilson 0:2fd314d76f37 128 lcd.refresh (); //must refresh to write buffer to display
orlagilson 0:2fd314d76f37 129 }
orlagilson 0:2fd314d76f37 130
orlagilson 1:1accd82f4281 131 int main(){
orlagilson 1:1accd82f4281 132 lcd.init();
orlagilson 1:1accd82f4281 133 bmp180.init();
orlagilson 1:1accd82f4281 134 timer.attach(&timerTExpired,60);
orlagilson 1:1accd82f4281 135 timer.attach(&timerPExpired,1800);
orlagilson 1:1accd82f4281 136 Measurement measurement;
orlagilson 1:1accd82f4281 137 menu();
orlagilson 0:2fd314d76f37 138 }