test receiver for weather peeps

Dependencies:   LCDTFT_ssd0139 mbed

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?

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