![](/media/cache/group/WeatherStation.jpg.50x50_q85.jpg)
test receiver for weather peeps
Dependencies: LCDTFT_ssd0139 mbed
main.cpp@1:a1c10567ccf0, 2015-06-12 (annotated)
- Committer:
- lewisjfish
- Date:
- Fri Jun 12 11:25:43 2015 +0000
- Revision:
- 1:a1c10567ccf0
- Parent:
- 0:d69865abf42a
- Child:
- 2:c773fddffb50
working version of receiver (screen) including weather visuals
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 | 0:d69865abf42a | 24 | char message[20]; |
lewisjfish | 0:d69865abf42a | 25 | |
lewisjfish | 0:d69865abf42a | 26 | |
lewisjfish | 0:d69865abf42a | 27 | int main() { |
lewisjfish | 1:a1c10567ccf0 | 28 | unlock =1; // send a high level to the locker |
lewisjfish | 1:a1c10567ccf0 | 29 | MyLCD.vLCDTFTInit(1); // sets LCD to landscape mode |
lewisjfish | 1:a1c10567ccf0 | 30 | MyLCD.vLCDTFTFillScreen(Cyan); |
lewisjfish | 1:a1c10567ccf0 | 31 | |
lewisjfish | 1:a1c10567ccf0 | 32 | MyLCD.vLCDTFTLine(0,120,320,120,Black); // separates weather data from RFID info |
lewisjfish | 1:a1c10567ccf0 | 33 | |
lewisjfish | 1:a1c10567ccf0 | 34 | MyLCD.vLCDTFTSetParametersPrintf(5,130,0,320,2,Black,Cyan); // display labels for all time FOREVER |
lewisjfish | 1:a1c10567ccf0 | 35 | MyLCD.printf("Temperature:"); |
lewisjfish | 1:a1c10567ccf0 | 36 | |
lewisjfish | 1:a1c10567ccf0 | 37 | MyLCD.vLCDTFTSetParametersPrintf(5,160,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 38 | MyLCD.printf("Humidity:"); |
lewisjfish | 1:a1c10567ccf0 | 39 | |
lewisjfish | 1:a1c10567ccf0 | 40 | MyLCD.vLCDTFTSetParametersPrintf(5,190,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 41 | MyLCD.printf("Light:"); |
lewisjfish | 1:a1c10567ccf0 | 42 | |
lewisjfish | 1:a1c10567ccf0 | 43 | MyLCD.vLCDTFTSetParametersPrintf(5,220,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 44 | MyLCD.printf("Pressure:"); |
lewisjfish | 1:a1c10567ccf0 | 45 | |
lewisjfish | 1:a1c10567ccf0 | 46 | |
lewisjfish | 1:a1c10567ccf0 | 47 | |
lewisjfish | 0:d69865abf42a | 48 | |
lewisjfish | 0:d69865abf42a | 49 | |
lewisjfish | 0:d69865abf42a | 50 | while(1) { |
lewisjfish | 0:d69865abf42a | 51 | |
lewisjfish | 1:a1c10567ccf0 | 52 | if(doorOpen == 1){ // prints to terminal when door is open - for use later |
lewisjfish | 0:d69865abf42a | 53 | pc.printf("Door is Open"); |
lewisjfish | 0:d69865abf42a | 54 | } |
lewisjfish | 0:d69865abf42a | 55 | |
lewisjfish | 1:a1c10567ccf0 | 56 | if(infoin.readable()) { // if serial bus has data, read it character by character |
lewisjfish | 0:d69865abf42a | 57 | c=infoin.getc(); |
lewisjfish | 1:a1c10567ccf0 | 58 | message[i] = c; // store in character array 'message' |
lewisjfish | 0:d69865abf42a | 59 | i++; |
lewisjfish | 0:d69865abf42a | 60 | |
lewisjfish | 1:a1c10567ccf0 | 61 | if(c=='a'){ //if the first letter is a, we're getting an RFID |
lewisjfish | 1:a1c10567ccf0 | 62 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 63 | } |
lewisjfish | 0:d69865abf42a | 64 | |
lewisjfish | 1:a1c10567ccf0 | 65 | if(c=='A'){ //if we get 'A', we reach the end of the RFID |
lewisjfish | 1:a1c10567ccf0 | 66 | MyLCD.vLCDTFTSetParametersPrintf(5,5,0,320,3,Fuchsia,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 67 | MyLCD.printf("Welcome, "); |
lewisjfish | 1:a1c10567ccf0 | 68 | sscanf(message,"%d",&tagNumber); // save tagNumber as integer |
lewisjfish | 1:a1c10567ccf0 | 69 | if(tagNumber == Fish) MyLCD.printf("Lew"); // match tagNumber to Name |
lewisjfish | 1:a1c10567ccf0 | 70 | if(tagNumber == Rawl) MyLCD.printf("Tom"); |
lewisjfish | 1:a1c10567ccf0 | 71 | |
lewisjfish | 1:a1c10567ccf0 | 72 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 73 | |
lewisjfish | 1:a1c10567ccf0 | 74 | unlock = 0; // send pulse to locker |
lewisjfish | 1:a1c10567ccf0 | 75 | wait(0.2); |
lewisjfish | 1:a1c10567ccf0 | 76 | unlock = 1; |
lewisjfish | 1:a1c10567ccf0 | 77 | } |
lewisjfish | 1:a1c10567ccf0 | 78 | |
lewisjfish | 1:a1c10567ccf0 | 79 | |
lewisjfish | 1:a1c10567ccf0 | 80 | |
lewisjfish | 1:a1c10567ccf0 | 81 | //Here begin the if statements for weather data |
lewisjfish | 0:d69865abf42a | 82 | |
lewisjfish | 1:a1c10567ccf0 | 83 | if ( c == 'l') { // start of light data |
lewisjfish | 1:a1c10567ccf0 | 84 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 85 | } |
lewisjfish | 0:d69865abf42a | 86 | |
lewisjfish | 1:a1c10567ccf0 | 87 | if ( c == 'L') { // end of light data |
lewisjfish | 1:a1c10567ccf0 | 88 | |
lewisjfish | 1:a1c10567ccf0 | 89 | MyLCD.vLCDTFTSetParametersPrintf(5,190,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 90 | |
lewisjfish | 1:a1c10567ccf0 | 91 | sscanf(message,"%f",&light); // convert string to float |
lewisjfish | 1:a1c10567ccf0 | 92 | MyLCD.printf("Light: %5.2f",light); |
lewisjfish | 1:a1c10567ccf0 | 93 | |
lewisjfish | 1:a1c10567ccf0 | 94 | MyLCD.vLCDTFTRectangle(260,190,315,200,1,Cyan); // needed to clear the visuals |
lewisjfish | 1:a1c10567ccf0 | 95 | |
lewisjfish | 1:a1c10567ccf0 | 96 | if(light>0) MyLCD.vLCDTFTCircle(265,195,5,1,Yellow); // if statements for number of suns |
lewisjfish | 1:a1c10567ccf0 | 97 | |
lewisjfish | 1:a1c10567ccf0 | 98 | if(light>25) MyLCD.vLCDTFTCircle(280,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 99 | |
lewisjfish | 1:a1c10567ccf0 | 100 | if(light>50) MyLCD.vLCDTFTCircle(295,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 101 | |
lewisjfish | 1:a1c10567ccf0 | 102 | if(light>75) MyLCD.vLCDTFTCircle(310,195,5,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 103 | |
lewisjfish | 1:a1c10567ccf0 | 104 | |
lewisjfish | 1:a1c10567ccf0 | 105 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 106 | wait(1); |
lewisjfish | 0:d69865abf42a | 107 | } |
lewisjfish | 0:d69865abf42a | 108 | |
lewisjfish | 1:a1c10567ccf0 | 109 | if ( c == 't') { // start of temperature data |
lewisjfish | 1:a1c10567ccf0 | 110 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 111 | } |
lewisjfish | 1:a1c10567ccf0 | 112 | |
lewisjfish | 1:a1c10567ccf0 | 113 | if ( c == 'T') { // end of temperature data |
lewisjfish | 1:a1c10567ccf0 | 114 | |
lewisjfish | 1:a1c10567ccf0 | 115 | MyLCD.vLCDTFTSetParametersPrintf(5,130,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 116 | |
lewisjfish | 1:a1c10567ccf0 | 117 | sscanf(message,"%f",&temperature); // convert string to float |
lewisjfish | 1:a1c10567ccf0 | 118 | MyLCD.printf("Temperature: %5.2f",temperature); |
lewisjfish | 1:a1c10567ccf0 | 119 | |
lewisjfish | 1:a1c10567ccf0 | 120 | MyLCD.vLCDTFTRectangle(260,130,315,140,1,Cyan); // needed to clear visuals |
lewisjfish | 1:a1c10567ccf0 | 121 | |
lewisjfish | 1:a1c10567ccf0 | 122 | if(temperature>0) MyLCD.vLCDTFTRectangle(260,130,270,140,1,Lime); // if statements for temperature bar |
lewisjfish | 1:a1c10567ccf0 | 123 | |
lewisjfish | 1:a1c10567ccf0 | 124 | if(temperature>10) MyLCD.vLCDTFTRectangle(275,130,285,140,1,Yellow); |
lewisjfish | 1:a1c10567ccf0 | 125 | |
lewisjfish | 1:a1c10567ccf0 | 126 | if(temperature>20) MyLCD.vLCDTFTRectangle(290,130,300,140,1,Orange); |
lewisjfish | 1:a1c10567ccf0 | 127 | |
lewisjfish | 1:a1c10567ccf0 | 128 | if(temperature>30) MyLCD.vLCDTFTRectangle(305,130,315,140,1,Red); |
lewisjfish | 1:a1c10567ccf0 | 129 | |
lewisjfish | 1:a1c10567ccf0 | 130 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 131 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 132 | } |
lewisjfish | 1:a1c10567ccf0 | 133 | |
lewisjfish | 1:a1c10567ccf0 | 134 | if ( c == 'p') { // start of pressure data |
lewisjfish | 1:a1c10567ccf0 | 135 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 136 | } |
lewisjfish | 1:a1c10567ccf0 | 137 | |
lewisjfish | 1:a1c10567ccf0 | 138 | if ( c == 'P') { // end of pressure data |
lewisjfish | 1:a1c10567ccf0 | 139 | |
lewisjfish | 1:a1c10567ccf0 | 140 | MyLCD.vLCDTFTSetParametersPrintf(5,220,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 141 | MyLCD.printf("Pressure: "); |
lewisjfish | 1:a1c10567ccf0 | 142 | |
lewisjfish | 1:a1c10567ccf0 | 143 | for (int j =0;j<i-1;j++) { // to print the pressure data character by character |
lewisjfish | 1:a1c10567ccf0 | 144 | MyLCD.printf("%c",message[j]); |
lewisjfish | 1:a1c10567ccf0 | 145 | } |
lewisjfish | 1:a1c10567ccf0 | 146 | |
lewisjfish | 1:a1c10567ccf0 | 147 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 148 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 149 | } |
lewisjfish | 1:a1c10567ccf0 | 150 | |
lewisjfish | 1:a1c10567ccf0 | 151 | if ( c == 'h') { // start of humidity data |
lewisjfish | 1:a1c10567ccf0 | 152 | i = 0; |
lewisjfish | 1:a1c10567ccf0 | 153 | } |
lewisjfish | 1:a1c10567ccf0 | 154 | |
lewisjfish | 1:a1c10567ccf0 | 155 | if ( c == 'H') { // end of humidity data |
lewisjfish | 1:a1c10567ccf0 | 156 | |
lewisjfish | 1:a1c10567ccf0 | 157 | MyLCD.vLCDTFTSetParametersPrintf(5,160,0,320,2,Black,Cyan); |
lewisjfish | 1:a1c10567ccf0 | 158 | MyLCD.printf("Humidity: "); |
lewisjfish | 1:a1c10567ccf0 | 159 | |
lewisjfish | 1:a1c10567ccf0 | 160 | for (int j =0;j<i-1;j++) { // print to the humidity data character by character |
lewisjfish | 1:a1c10567ccf0 | 161 | MyLCD.printf("%c",message[j]); |
lewisjfish | 1:a1c10567ccf0 | 162 | } |
lewisjfish | 1:a1c10567ccf0 | 163 | |
lewisjfish | 1:a1c10567ccf0 | 164 | MyLCD.printf("\n\r"); |
lewisjfish | 1:a1c10567ccf0 | 165 | i=0; |
lewisjfish | 1:a1c10567ccf0 | 166 | wait(1); |
lewisjfish | 1:a1c10567ccf0 | 167 | } |
lewisjfish | 1:a1c10567ccf0 | 168 | |
lewisjfish | 0:d69865abf42a | 169 | } |
lewisjfish | 0:d69865abf42a | 170 | |
lewisjfish | 0:d69865abf42a | 171 | } |
lewisjfish | 0:d69865abf42a | 172 | } |