Orla Gilson / Mbed 2 deprecated WeatherLogger

Dependencies:   BMP180 N5110 mbed

Committer:
orlagilson
Date:
Thu Apr 30 11:46:15 2015 +0000
Revision:
0:2fd314d76f37
Child:
1:1accd82f4281
Initial commit.; Reading current temperature and pressure from the menu screen.; Reads value every 2 seconds.; No light measurements yet.

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 0:2fd314d76f37 23 void readTemp(){
orlagilson 0:2fd314d76f37 24 while(1){
orlagilson 0:2fd314d76f37 25 Measurement measurement;
orlagilson 0:2fd314d76f37 26 clearCells();
orlagilson 0:2fd314d76f37 27 char buffer1[14];
orlagilson 0:2fd314d76f37 28 measurement = bmp180.readValues();
orlagilson 0:2fd314d76f37 29 int length=sprintf(buffer1,"T = %.2f C",measurement.temperature);
orlagilson 0:2fd314d76f37 30 if (length<=14){
orlagilson 0:2fd314d76f37 31 lcd.printString(buffer1,10,2);
orlagilson 0:2fd314d76f37 32 }
orlagilson 0:2fd314d76f37 33 wait(2.0);
orlagilson 0:2fd314d76f37 34 }
orlagilson 0:2fd314d76f37 35 }
orlagilson 0:2fd314d76f37 36
orlagilson 0:2fd314d76f37 37 void readPress(){
orlagilson 0:2fd314d76f37 38 while(1){
orlagilson 0:2fd314d76f37 39 Measurement measurement;
orlagilson 0:2fd314d76f37 40 clearCells();
orlagilson 0:2fd314d76f37 41 char buffer2[14];
orlagilson 0:2fd314d76f37 42 measurement = bmp180.readValues();
orlagilson 0:2fd314d76f37 43 int length=sprintf(buffer2,"P = %.2f mb",measurement.pressure);
orlagilson 0:2fd314d76f37 44 if (length<=14){
orlagilson 0:2fd314d76f37 45 lcd.printString(buffer2,0,2);
orlagilson 0:2fd314d76f37 46 }
orlagilson 0:2fd314d76f37 47 wait(2.0);
orlagilson 0:2fd314d76f37 48 }
orlagilson 0:2fd314d76f37 49 }
orlagilson 0:2fd314d76f37 50
orlagilson 0:2fd314d76f37 51 void menu()
orlagilson 0:2fd314d76f37 52 {
orlagilson 0:2fd314d76f37 53 while(1) {
orlagilson 0:2fd314d76f37 54 lcd.normalMode(); //normal LCD colour mode
orlagilson 0:2fd314d76f37 55 lcd.setBrightness(0.5); //LCD backlight set to 50% brightness
orlagilson 0:2fd314d76f37 56 if (POT>(2.0/3.0)) {
orlagilson 0:2fd314d76f37 57 clearCells();
orlagilson 0:2fd314d76f37 58 lcd.printString("Temperature",10,1);
orlagilson 0:2fd314d76f37 59 lcd.printString(">",80,2);
orlagilson 0:2fd314d76f37 60 lcd.printString("Graph",0,5);
orlagilson 0:2fd314d76f37 61 lcd.printString("Current",43,5);
orlagilson 0:2fd314d76f37 62 if (BUT1>0.9) { //left button takes the user to the graph option
orlagilson 0:2fd314d76f37 63 clearCells();
orlagilson 0:2fd314d76f37 64 //tempGraph();
orlagilson 0:2fd314d76f37 65 }
orlagilson 0:2fd314d76f37 66 if (BUT2>0.9) { //right button takes the user to the current reading
orlagilson 0:2fd314d76f37 67 clearCells();
orlagilson 0:2fd314d76f37 68 readTemp();
orlagilson 0:2fd314d76f37 69 }
orlagilson 0:2fd314d76f37 70 }
orlagilson 0:2fd314d76f37 71 if ((POT>1.0/3.0)&&(POT<2.0/3.0)) {
orlagilson 0:2fd314d76f37 72 clearCells();
orlagilson 0:2fd314d76f37 73 lcd.printString("Pressure",20,1);
orlagilson 0:2fd314d76f37 74 lcd.printString("<",0,2);
orlagilson 0:2fd314d76f37 75 lcd.printString(">",80,2);
orlagilson 0:2fd314d76f37 76 lcd.printString("Graph",0,5);
orlagilson 0:2fd314d76f37 77 lcd.printString("Current",43,5);
orlagilson 0:2fd314d76f37 78 if (BUT1>0.9) {
orlagilson 0:2fd314d76f37 79 clearCells();
orlagilson 0:2fd314d76f37 80 //pressGraph();
orlagilson 0:2fd314d76f37 81 }
orlagilson 0:2fd314d76f37 82 if (BUT2>0.9) {
orlagilson 0:2fd314d76f37 83 clearCells();
orlagilson 0:2fd314d76f37 84 readPress();
orlagilson 0:2fd314d76f37 85 }
orlagilson 0:2fd314d76f37 86 }
orlagilson 0:2fd314d76f37 87 if (POT<(1.0/3.0)) {
orlagilson 0:2fd314d76f37 88 clearCells();
orlagilson 0:2fd314d76f37 89 lcd.printString("Light",30,1);
orlagilson 0:2fd314d76f37 90 lcd.printString("<",0,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 //lightGraph();
orlagilson 0:2fd314d76f37 96 }
orlagilson 0:2fd314d76f37 97 if (BUT2>0.9) {
orlagilson 0:2fd314d76f37 98 clearCells();
orlagilson 0:2fd314d76f37 99 //readLight();
orlagilson 0:2fd314d76f37 100 }
orlagilson 0:2fd314d76f37 101 }
orlagilson 0:2fd314d76f37 102 }
orlagilson 0:2fd314d76f37 103 }
orlagilson 0:2fd314d76f37 104
orlagilson 0:2fd314d76f37 105 void clearCells ()
orlagilson 0:2fd314d76f37 106 {
orlagilson 0:2fd314d76f37 107 //loop through cells and clear
orlagilson 0:2fd314d76f37 108 for (int i=0; i<nx; i++) {
orlagilson 0:2fd314d76f37 109 for (int j=0; j<ny; j++) {
orlagilson 0:2fd314d76f37 110 lcd.clearPixel(i,j);
orlagilson 0:2fd314d76f37 111 }
orlagilson 0:2fd314d76f37 112 }
orlagilson 0:2fd314d76f37 113 lcd.refresh (); //must refresh to write buffer to display
orlagilson 0:2fd314d76f37 114 }
orlagilson 0:2fd314d76f37 115
orlagilson 0:2fd314d76f37 116 int main()
orlagilson 0:2fd314d76f37 117 {
orlagilson 0:2fd314d76f37 118 lcd.init();
orlagilson 0:2fd314d76f37 119 bmp180.init();
orlagilson 0:2fd314d76f37 120 menu();
orlagilson 0:2fd314d76f37 121 }