![](/media/cache/group/WeatherStation.jpg.50x50_q85.jpg)
test receiver for weather peeps
Dependencies: LCDTFT_ssd0139 mbed
main.cpp@2:c773fddffb50, 2015-06-12 (annotated)
- Committer:
- lewisjfish
- Date:
- Fri Jun 12 13:19:27 2015 +0000
- Revision:
- 2:c773fddffb50
- Parent:
- 1:a1c10567ccf0
receiving weather data and displaying to screen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lewisjfish | 0:d69865abf42a | 1 | #include "mbed.h" |
lewisjfish | 0:d69865abf42a | 2 | #include "LCDTFT.h" |
lewisjfish | 0:d69865abf42a | 3 | |
lewisjfish | 0:d69865abf42a | 4 | BusOut MyBus(PTA13,PTD5,PTD4,PTA12,PTA4,PTA5,PTC8,PTC9); // 8 bit bus on these dvices |
lewisjfish | 0:d69865abf42a | 5 | LCDTFT MyLCD(PTB0,PTB1,PTB2,PTB3,PTC2,&MyBus); //LCDTFT(PinName PIN_RD,PinName PIN_WR,PinName PIN_RS,PinName PIN_CS,PinName PIN_RESET, BusOut *BUSLCD); |
lewisjfish | 0:d69865abf42a | 6 | |
lewisjfish | 1:a1c10567ccf0 | 7 | DigitalOut myled(LED1); // define status LED |
lewisjfish | 1:a1c10567ccf0 | 8 | Serial infoin(PTE0,PTE1); // define serial |
lewisjfish | 1:a1c10567ccf0 | 9 | Serial pc(USBTX,USBRX); // for use with pc terminal |
lewisjfish | 1:a1c10567ccf0 | 10 | DigitalOut unlock(PTB8); // flag pin to output to locker |
lewisjfish | 1:a1c10567ccf0 | 11 | DigitalIn doorOpen(PTB9); // flag pin for input from locker |
lewisjfish | 1:a1c10567ccf0 | 12 | |
lewisjfish | 1:a1c10567ccf0 | 13 | int Rawl = 22319109; //define two integers to associate the tagnumbers with people |
lewisjfish | 1:a1c10567ccf0 | 14 | int Fish = 22312052; |
lewisjfish | 1:a1c10567ccf0 | 15 | int tagNumber; |
lewisjfish | 0:d69865abf42a | 16 | |
lewisjfish | 0:d69865abf42a | 17 | char c; |
lewisjfish | 0:d69865abf42a | 18 | int i; |
lewisjfish | 0:d69865abf42a | 19 | |
lewisjfish | 1:a1c10567ccf0 | 20 | //define required flags and initialize floats for te weather data. |
lewisjfish | 0:d69865abf42a | 21 | |
lewisjfish | 1:a1c10567ccf0 | 22 | float temperature = 45; |
lewisjfish | 1:a1c10567ccf0 | 23 | float light = 100; |
lewisjfish | 2:c773fddffb50 | 24 | float pressure; |
lewisjfish | 2:c773fddffb50 | 25 | float humidity; |
lewisjfish | 0:d69865abf42a | 26 | char message[20]; |
lewisjfish | 0:d69865abf42a | 27 | |
lewisjfish | 0:d69865abf42a | 28 | |
lewisjfish | 0:d69865abf42a | 29 | int main() { |
lewisjfish | 1:a1c10567ccf0 | 30 | unlock =1; // send a high level to the locker |
lewisjfish | 1:a1c10567ccf0 | 31 | MyLCD.vLCDTFTInit(1); // sets LCD to landscape mode |
lewisjfish | 1:a1c10567ccf0 | 32 | MyLCD.vLCDTFTFillScreen(Cyan); |
lewisjfish | 1:a1c10567ccf0 | 33 | |
lewisjfish | 1:a1c10567ccf0 | 34 | MyLCD.vLCDTFTLine(0,120,320,120,Black); // separates weather data from RFID info |
lewisjfish | 1:a1c10567ccf0 | 35 | |
lewisjfish | 1:a1c10567ccf0 | 36 | MyLCD.vLCDTFTSetParametersPrintf(5,130,0,320,2,Black,Cyan); // display labels for all time FOREVER |
lewisjfish | 1:a1c10567ccf0 | 37 | MyLCD.printf("Temperature:"); |
lewisjfish | 1:a1c10567ccf0 | 38 | |
lewisjfish | 1:a1c10567ccf0 | 39 | MyLCD.vLCDTFTSetParametersPrintf(5,160,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 40 | MyLCD.printf("Humidity:"); |
lewisjfish | 1:a1c10567ccf0 | 41 | |
lewisjfish | 1:a1c10567ccf0 | 42 | MyLCD.vLCDTFTSetParametersPrintf(5,190,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 43 | MyLCD.printf("Light:"); |
lewisjfish | 1:a1c10567ccf0 | 44 | |
lewisjfish | 1:a1c10567ccf0 | 45 | MyLCD.vLCDTFTSetParametersPrintf(5,220,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 46 | MyLCD.printf("Pressure:"); |
lewisjfish | 1:a1c10567ccf0 | 47 | |
lewisjfish | 1:a1c10567ccf0 | 48 | |
lewisjfish | 1:a1c10567ccf0 | 49 | |
lewisjfish | 0:d69865abf42a | 50 | |
lewisjfish | 0:d69865abf42a | 51 | |
lewisjfish | 0:d69865abf42a | 52 | while(1) { |
lewisjfish | 0:d69865abf42a | 53 | |
lewisjfish | 1:a1c10567ccf0 | 54 | if(doorOpen == 1){ // prints to terminal when door is open - for use later |
lewisjfish | 0:d69865abf42a | 55 | pc.printf("Door is Open"); |
lewisjfish | 0:d69865abf42a | 56 | } |
lewisjfish | 0:d69865abf42a | 57 | |
lewisjfish | 1:a1c10567ccf0 | 58 | if(infoin.readable()) { // if serial bus has data, read it character by character |
lewisjfish | 0:d69865abf42a | 59 | c=infoin.getc(); |
lewisjfish | 1:a1c10567ccf0 | 60 | message[i] = c; // store in character array 'message' |
lewisjfish | 0:d69865abf42a | 61 | i++; |
lewisjfish | 0:d69865abf42a | 62 | |
lewisjfish | 1:a1c10567ccf0 | 63 | if(c=='a'){ //if the first letter is a, we're getting an RFID |
lewisjfish | 1:a1c10567ccf0 | 64 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 65 | } |
lewisjfish | 0:d69865abf42a | 66 | |
lewisjfish | 1:a1c10567ccf0 | 67 | if(c=='A'){ //if we get 'A', we reach the end of the RFID |
lewisjfish | 1:a1c10567ccf0 | 68 | MyLCD.vLCDTFTSetParametersPrintf(5,5,0,320,3,Fuchsia,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 69 | MyLCD.printf("Welcome, "); |
lewisjfish | 1:a1c10567ccf0 | 70 | sscanf(message,"%d",&tagNumber); // save tagNumber as integer |
lewisjfish | 1:a1c10567ccf0 | 71 | if(tagNumber == Fish) MyLCD.printf("Lew"); // match tagNumber to Name |
lewisjfish | 1:a1c10567ccf0 | 72 | if(tagNumber == Rawl) MyLCD.printf("Tom"); |
lewisjfish | 1:a1c10567ccf0 | 73 | |
lewisjfish | 1:a1c10567ccf0 | 74 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 75 | |
lewisjfish | 1:a1c10567ccf0 | 76 | unlock = 0; // send pulse to locker |
lewisjfish | 1:a1c10567ccf0 | 77 | wait(0.2); |
lewisjfish | 1:a1c10567ccf0 | 78 | unlock = 1; |
lewisjfish | 1:a1c10567ccf0 | 79 | } |
lewisjfish | 1:a1c10567ccf0 | 80 | |
lewisjfish | 1:a1c10567ccf0 | 81 | |
lewisjfish | 1:a1c10567ccf0 | 82 | |
lewisjfish | 1:a1c10567ccf0 | 83 | //Here begin the if statements for weather data |
lewisjfish | 0:d69865abf42a | 84 | |
lewisjfish | 1:a1c10567ccf0 | 85 | if ( c == 'l') { // start of light data |
lewisjfish | 1:a1c10567ccf0 | 86 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 87 | } |
lewisjfish | 0:d69865abf42a | 88 | |
lewisjfish | 1:a1c10567ccf0 | 89 | if ( c == 'L') { // end of light data |
lewisjfish | 1:a1c10567ccf0 | 90 | |
lewisjfish | 1:a1c10567ccf0 | 91 | MyLCD.vLCDTFTSetParametersPrintf(5,190,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 92 | |
lewisjfish | 1:a1c10567ccf0 | 93 | sscanf(message,"%f",&light); // convert string to float |
lewisjfish | 1:a1c10567ccf0 | 94 | MyLCD.printf("Light: %5.2f",light); |
lewisjfish | 1:a1c10567ccf0 | 95 | |
lewisjfish | 1:a1c10567ccf0 | 96 | MyLCD.vLCDTFTRectangle(260,190,315,200,1,Cyan); // needed to clear the visuals |
lewisjfish | 1:a1c10567ccf0 | 97 | |
lewisjfish | 1:a1c10567ccf0 | 98 | if(light>0) MyLCD.vLCDTFTCircle(265,195,5,1,Yellow); // if statements for number of suns |
lewisjfish | 1:a1c10567ccf0 | 99 | |
lewisjfish | 1:a1c10567ccf0 | 100 | if(light>25) MyLCD.vLCDTFTCircle(280,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 101 | |
lewisjfish | 1:a1c10567ccf0 | 102 | if(light>50) MyLCD.vLCDTFTCircle(295,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 103 | |
lewisjfish | 1:a1c10567ccf0 | 104 | if(light>75) MyLCD.vLCDTFTCircle(310,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 105 | |
lewisjfish | 1:a1c10567ccf0 | 106 | |
lewisjfish | 1:a1c10567ccf0 | 107 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 108 | wait(1); |
lewisjfish | 0:d69865abf42a | 109 | } |
lewisjfish | 0:d69865abf42a | 110 | |
lewisjfish | 1:a1c10567ccf0 | 111 | if ( c == 't') { // start of temperature data |
lewisjfish | 1:a1c10567ccf0 | 112 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 113 | } |
lewisjfish | 1:a1c10567ccf0 | 114 | |
lewisjfish | 1:a1c10567ccf0 | 115 | if ( c == 'T') { // end of temperature data |
lewisjfish | 1:a1c10567ccf0 | 116 | |
lewisjfish | 1:a1c10567ccf0 | 117 | MyLCD.vLCDTFTSetParametersPrintf(5,130,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 118 | |
lewisjfish | 1:a1c10567ccf0 | 119 | sscanf(message,"%f",&temperature); // convert string to float |
lewisjfish | 1:a1c10567ccf0 | 120 | MyLCD.printf("Temperature: %5.2f",temperature); |
lewisjfish | 1:a1c10567ccf0 | 121 | |
lewisjfish | 1:a1c10567ccf0 | 122 | MyLCD.vLCDTFTRectangle(260,130,315,140,1,Cyan); // needed to clear visuals |
lewisjfish | 1:a1c10567ccf0 | 123 | |
lewisjfish | 1:a1c10567ccf0 | 124 | if(temperature>0) MyLCD.vLCDTFTRectangle(260,130,270,140,1,Lime); // if statements for temperature bar |
lewisjfish | 1:a1c10567ccf0 | 125 | |
lewisjfish | 1:a1c10567ccf0 | 126 | if(temperature>10) MyLCD.vLCDTFTRectangle(275,130,285,140,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 127 | |
lewisjfish | 1:a1c10567ccf0 | 128 | if(temperature>20) MyLCD.vLCDTFTRectangle(290,130,300,140,1,Orange); |
lewisjfish | 1:a1c10567ccf0 | 129 | |
lewisjfish | 1:a1c10567ccf0 | 130 | if(temperature>30) MyLCD.vLCDTFTRectangle(305,130,315,140,1,Red); |
lewisjfish | 1:a1c10567ccf0 | 131 | |
lewisjfish | 1:a1c10567ccf0 | 132 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 133 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 134 | } |
lewisjfish | 1:a1c10567ccf0 | 135 | |
lewisjfish | 1:a1c10567ccf0 | 136 | if ( c == 'p') { // start of pressure data |
lewisjfish | 1:a1c10567ccf0 | 137 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 138 | } |
lewisjfish | 1:a1c10567ccf0 | 139 | |
lewisjfish | 1:a1c10567ccf0 | 140 | if ( c == 'P') { // end of pressure data |
lewisjfish | 1:a1c10567ccf0 | 141 | |
lewisjfish | 1:a1c10567ccf0 | 142 | MyLCD.vLCDTFTSetParametersPrintf(5,220,0,320,2,Black,Cyan); |
lewisjfish | 2:c773fddffb50 | 143 | |
lewisjfish | 2:c773fddffb50 | 144 | sscanf(message,"%f",&pressure); // convert string to float |
lewisjfish | 2:c773fddffb50 | 145 | MyLCD.printf("Pressure: %5.2f",pressure); |
lewisjfish | 1:a1c10567ccf0 | 146 | |
lewisjfish | 2:c773fddffb50 | 147 | |
lewisjfish | 1:a1c10567ccf0 | 148 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 149 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 150 | } |
lewisjfish | 1:a1c10567ccf0 | 151 | |
lewisjfish | 1:a1c10567ccf0 | 152 | if ( c == 'h') { // start of humidity data |
lewisjfish | 1:a1c10567ccf0 | 153 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 154 | } |
lewisjfish | 1:a1c10567ccf0 | 155 | |
lewisjfish | 1:a1c10567ccf0 | 156 | if ( c == 'H') { // end of humidity data |
lewisjfish | 1:a1c10567ccf0 | 157 | |
lewisjfish | 2:c773fddffb50 | 158 | MyLCD.vLCDTFTSetParametersPrintf(5,160,0,320,2,Black,Cyan); |
lewisjfish | 2:c773fddffb50 | 159 | |
lewisjfish | 2:c773fddffb50 | 160 | sscanf(message,"%f",&humidity); // convert string to float |
lewisjfish | 2:c773fddffb50 | 161 | MyLCD.printf("Humidity: %5.2f",humidity); |
lewisjfish | 1:a1c10567ccf0 | 162 | |
lewisjfish | 2:c773fddffb50 | 163 | //MyLCD.printf("\n\r"); |
lewisjfish | 1:a1c10567ccf0 | 164 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 165 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 166 | } |
lewisjfish | 1:a1c10567ccf0 | 167 | |
lewisjfish | 0:d69865abf42a | 168 | } |
lewisjfish | 0:d69865abf42a | 169 | |
lewisjfish | 0:d69865abf42a | 170 | } |
lewisjfish | 0:d69865abf42a | 171 | } |