15A-ClassProjectFinal_masterfull-pae-za-leng

Dependencies:   LCD4884 MFRC522 eeprom mbed

Committer:
pppartyn
Date:
Wed Dec 09 06:36:39 2015 +0000
Revision:
0:985ed5cd6ed7
15A-ClassProject-Final pae-za-leng

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pppartyn 0:985ed5cd6ed7 1 /*#include "mbed.h"
pppartyn 0:985ed5cd6ed7 2
pppartyn 0:985ed5cd6ed7 3 //------------------------------------
pppartyn 0:985ed5cd6ed7 4 // Hyperterminal configuration
pppartyn 0:985ed5cd6ed7 5 // 9600 bauds, 8-bit data, no parity
pppartyn 0:985ed5cd6ed7 6 //------------------------------------
pppartyn 0:985ed5cd6ed7 7
pppartyn 0:985ed5cd6ed7 8 Serial pc(SERIAL_TX, SERIAL_RX);
pppartyn 0:985ed5cd6ed7 9
pppartyn 0:985ed5cd6ed7 10 DigitalOut myled(LED1);
pppartyn 0:985ed5cd6ed7 11
pppartyn 0:985ed5cd6ed7 12 int main() {
pppartyn 0:985ed5cd6ed7 13 int i = 1;
pppartyn 0:985ed5cd6ed7 14 pc.printf("Hello World !\n");
pppartyn 0:985ed5cd6ed7 15 while(1) {
pppartyn 0:985ed5cd6ed7 16 wait(1);
pppartyn 0:985ed5cd6ed7 17 pc.printf("This program runs since %d seconds.\n", i++);
pppartyn 0:985ed5cd6ed7 18 myled = !myled;
pppartyn 0:985ed5cd6ed7 19 }
pppartyn 0:985ed5cd6ed7 20 }
pppartyn 0:985ed5cd6ed7 21 */
pppartyn 0:985ed5cd6ed7 22
pppartyn 0:985ed5cd6ed7 23
pppartyn 0:985ed5cd6ed7 24 #include "mbed.h"
pppartyn 0:985ed5cd6ed7 25 #include "MFRC522.h"
pppartyn 0:985ed5cd6ed7 26 #include "eeprom.h"
pppartyn 0:985ed5cd6ed7 27 #include "LCD4884.h"
pppartyn 0:985ed5cd6ed7 28 //KL25Z Pins for MFRC522 SPI interface
pppartyn 0:985ed5cd6ed7 29 #define SPI_MOSI PB_15
pppartyn 0:985ed5cd6ed7 30 #define SPI_MISO PB_14
pppartyn 0:985ed5cd6ed7 31 #define SPI_CLK PB_13
pppartyn 0:985ed5cd6ed7 32 #define SPI_CS PB_12
pppartyn 0:985ed5cd6ed7 33 // KL25Z Pin for MFRC522 reset
pppartyn 0:985ed5cd6ed7 34 #define MF_RESET PH_1
pppartyn 0:985ed5cd6ed7 35 // KL25Z Pins for Debug UART port
pppartyn 0:985ed5cd6ed7 36 #define UART_RX D0
pppartyn 0:985ed5cd6ed7 37 #define UART_TX D1
pppartyn 0:985ed5cd6ed7 38
pppartyn 0:985ed5cd6ed7 39 Serial device(D8,D2);
pppartyn 0:985ed5cd6ed7 40 DigitalIn plusbutton(PA_11);
pppartyn 0:985ed5cd6ed7 41 DigitalIn minusbutton(PA_12);
pppartyn 0:985ed5cd6ed7 42 uint16_t command[7];
pppartyn 0:985ed5cd6ed7 43 uint16_t re_command[7];
pppartyn 0:985ed5cd6ed7 44 uint16_t ch;
pppartyn 0:985ed5cd6ed7 45 int color ,clear ;
pppartyn 0:985ed5cd6ed7 46 char random[4][4]={"x0","x1","x2","x3"};
pppartyn 0:985ed5cd6ed7 47 int num_random[4] ;
pppartyn 0:985ed5cd6ed7 48 int highb , lowb ; //Send Number of Bottle
pppartyn 0:985ed5cd6ed7 49 int total ;
pppartyn 0:985ed5cd6ed7 50 int t_score ;
pppartyn 0:985ed5cd6ed7 51 Serial pc(SERIAL_TX,SERIAL_RX);
pppartyn 0:985ed5cd6ed7 52 MFRC522 RFID(SPI_MOSI, SPI_MISO, SPI_CLK,SPI_CS, MF_RESET);
pppartyn 0:985ed5cd6ed7 53 EEPROM memory(D14,D15,0);
pppartyn 0:985ed5cd6ed7 54 AnalogIn LDR(PC_3);
pppartyn 0:985ed5cd6ed7 55 DigitalOut red(PA_1);
pppartyn 0:985ed5cd6ed7 56 DigitalOut green(PA_4);
pppartyn 0:985ed5cd6ed7 57 DigitalOut blue(PB_0);
pppartyn 0:985ed5cd6ed7 58 DigitalIn limitsw(PC_9);
pppartyn 0:985ed5cd6ed7 59 DigitalOut redled(D10);
pppartyn 0:985ed5cd6ed7 60 DigitalOut greenled(D9);
pppartyn 0:985ed5cd6ed7 61 DigitalIn rightbutton(D11);
pppartyn 0:985ed5cd6ed7 62 DigitalIn leftbutton(D12);
pppartyn 0:985ed5cd6ed7 63 DigitalOut ln1(PA_13);
pppartyn 0:985ed5cd6ed7 64 DigitalOut ln2(PA_14);
pppartyn 0:985ed5cd6ed7 65 DigitalOut Ena(PC_8);
pppartyn 0:985ed5cd6ed7 66 DigitalIn limitright(PC_10);
pppartyn 0:985ed5cd6ed7 67 DigitalIn limitcenter(PC_12);
pppartyn 0:985ed5cd6ed7 68 DigitalIn limitleft(PC_11);
pppartyn 0:985ed5cd6ed7 69 LCD4884 lcd;
pppartyn 0:985ed5cd6ed7 70 Timer t ;
pppartyn 0:985ed5cd6ed7 71 Timer t2 ;
pppartyn 0:985ed5cd6ed7 72 Timer t3 ;
pppartyn 0:985ed5cd6ed7 73 int16_t recieve ;
pppartyn 0:985ed5cd6ed7 74 int check;
pppartyn 0:985ed5cd6ed7 75 int counttran = 0 , countcolor = 0 ;
pppartyn 0:985ed5cd6ed7 76 float valuered,valueblue,valuegreen;
pppartyn 0:985ed5cd6ed7 77
pppartyn 0:985ed5cd6ed7 78 //MFRC522::MIFARE_Key key;
pppartyn 0:985ed5cd6ed7 79 class USER
pppartyn 0:985ed5cd6ed7 80 {
pppartyn 0:985ed5cd6ed7 81 public:
pppartyn 0:985ed5cd6ed7 82 char Name[20] ;
pppartyn 0:985ed5cd6ed7 83 char Surname[20] ;
pppartyn 0:985ed5cd6ed7 84 char StudentID[11] ;
pppartyn 0:985ed5cd6ed7 85 uint16_t point;
pppartyn 0:985ed5cd6ed7 86 int place ;
pppartyn 0:985ed5cd6ed7 87 USER(char name[],char surname[],char id[],int p) {
pppartyn 0:985ed5cd6ed7 88 for(int i=0; name[i]!='\0'; i++) {
pppartyn 0:985ed5cd6ed7 89 Name[i] = name[i];
pppartyn 0:985ed5cd6ed7 90 }
pppartyn 0:985ed5cd6ed7 91 for(int i=0; surname[i]!='\0'; i++) {
pppartyn 0:985ed5cd6ed7 92 Surname[i] =surname[i];
pppartyn 0:985ed5cd6ed7 93 }
pppartyn 0:985ed5cd6ed7 94 for(int i=0; id[i]!='\0'; i++) {
pppartyn 0:985ed5cd6ed7 95 StudentID[i] =id[i];
pppartyn 0:985ed5cd6ed7 96 }
pppartyn 0:985ed5cd6ed7 97 place = p ;
pppartyn 0:985ed5cd6ed7 98 memory.read(place,recieve);
pppartyn 0:985ed5cd6ed7 99 wait_ms(2);
pppartyn 0:985ed5cd6ed7 100 point = recieve ;
pppartyn 0:985ed5cd6ed7 101 }
pppartyn 0:985ed5cd6ed7 102 int getPoint() {
pppartyn 0:985ed5cd6ed7 103 memory.read(place,recieve);
pppartyn 0:985ed5cd6ed7 104 wait_ms(2);
pppartyn 0:985ed5cd6ed7 105 point = recieve ;
pppartyn 0:985ed5cd6ed7 106 return point ;
pppartyn 0:985ed5cd6ed7 107 }
pppartyn 0:985ed5cd6ed7 108 void UpdatePoint(int16_t s) {
pppartyn 0:985ed5cd6ed7 109 memory.read(place,recieve);
pppartyn 0:985ed5cd6ed7 110 point = recieve ;
pppartyn 0:985ed5cd6ed7 111 s = point + s;
pppartyn 0:985ed5cd6ed7 112 point = s ;
pppartyn 0:985ed5cd6ed7 113 memory.write(place,(uint16_t)s);
pppartyn 0:985ed5cd6ed7 114 wait_ms(2);
pppartyn 0:985ed5cd6ed7 115 }
pppartyn 0:985ed5cd6ed7 116 void SetPoint() {
pppartyn 0:985ed5cd6ed7 117 memory.write(place,NULL);
pppartyn 0:985ed5cd6ed7 118 wait_ms(2);
pppartyn 0:985ed5cd6ed7 119 }
pppartyn 0:985ed5cd6ed7 120 };
pppartyn 0:985ed5cd6ed7 121
pppartyn 0:985ed5cd6ed7 122
pppartyn 0:985ed5cd6ed7 123 void reverse(char *s)
pppartyn 0:985ed5cd6ed7 124 {
pppartyn 0:985ed5cd6ed7 125 char *j;
pppartyn 0:985ed5cd6ed7 126 int c;
pppartyn 0:985ed5cd6ed7 127
pppartyn 0:985ed5cd6ed7 128 j = s + strlen(s) - 1;
pppartyn 0:985ed5cd6ed7 129 while(s < j) {
pppartyn 0:985ed5cd6ed7 130 c = *s;
pppartyn 0:985ed5cd6ed7 131 *s++ = *j;
pppartyn 0:985ed5cd6ed7 132 *j-- = c;
pppartyn 0:985ed5cd6ed7 133 }
pppartyn 0:985ed5cd6ed7 134 }
pppartyn 0:985ed5cd6ed7 135 void itoa(int n, char s[])
pppartyn 0:985ed5cd6ed7 136 {
pppartyn 0:985ed5cd6ed7 137 int i, sign;
pppartyn 0:985ed5cd6ed7 138
pppartyn 0:985ed5cd6ed7 139 if ((sign = n) < 0) /* record sign */
pppartyn 0:985ed5cd6ed7 140 n = -n; /* make n positive */
pppartyn 0:985ed5cd6ed7 141 i = 0;
pppartyn 0:985ed5cd6ed7 142 do { /* generate digits in reverse order */
pppartyn 0:985ed5cd6ed7 143 s[i++] = n % 10 + '0'; /* get next digit */
pppartyn 0:985ed5cd6ed7 144 } while ((n /= 10) > 0); /* delete it */
pppartyn 0:985ed5cd6ed7 145 if (sign < 0)
pppartyn 0:985ed5cd6ed7 146 s[i++] = '-';
pppartyn 0:985ed5cd6ed7 147 s[i] = '\0';
pppartyn 0:985ed5cd6ed7 148 reverse(s);
pppartyn 0:985ed5cd6ed7 149 }
pppartyn 0:985ed5cd6ed7 150 void ShowUser(USER user)
pppartyn 0:985ed5cd6ed7 151 {
pppartyn 0:985ed5cd6ed7 152 char Sur[2] ;
pppartyn 0:985ed5cd6ed7 153 Sur[0] = user.Surname[0];
pppartyn 0:985ed5cd6ed7 154 Sur[1] = '.';
pppartyn 0:985ed5cd6ed7 155 char buff[50] ;
pppartyn 0:985ed5cd6ed7 156 itoa(user.point,buff);
pppartyn 0:985ed5cd6ed7 157 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 158 lcd.LCD_write_string(0,0,user.Name,0);
pppartyn 0:985ed5cd6ed7 159 lcd.LCD_write_string(55,0,Sur,0);
pppartyn 0:985ed5cd6ed7 160 lcd.LCD_write_string(0,2,user.StudentID,0);
pppartyn 0:985ed5cd6ed7 161 lcd.LCD_write_string(0,3,"Point : ",0);
pppartyn 0:985ed5cd6ed7 162 lcd.LCD_write_string(44,3,buff,0); //buff=point
pppartyn 0:985ed5cd6ed7 163
pppartyn 0:985ed5cd6ed7 164 }
pppartyn 0:985ed5cd6ed7 165 void motor()
pppartyn 0:985ed5cd6ed7 166 {
pppartyn 0:985ed5cd6ed7 167
pppartyn 0:985ed5cd6ed7 168
pppartyn 0:985ed5cd6ed7 169
pppartyn 0:985ed5cd6ed7 170 }
pppartyn 0:985ed5cd6ed7 171 void colorsensor(int &colors,int &clears)
pppartyn 0:985ed5cd6ed7 172 {
pppartyn 0:985ed5cd6ed7 173 char buff[40] ;
pppartyn 0:985ed5cd6ed7 174 char buff2[40] ;
pppartyn 0:985ed5cd6ed7 175 red = 1;
pppartyn 0:985ed5cd6ed7 176 blue = 1;
pppartyn 0:985ed5cd6ed7 177 green = 1 ;
pppartyn 0:985ed5cd6ed7 178 redled = 0 ;
pppartyn 0:985ed5cd6ed7 179 greenled = 1 ;
pppartyn 0:985ed5cd6ed7 180 //1=low 0=high
pppartyn 0:985ed5cd6ed7 181 // GREEN
pppartyn 0:985ed5cd6ed7 182 if(limitsw == 1) {
pppartyn 0:985ed5cd6ed7 183 sprintf(buff,"Clear: %d x2",counttran);
pppartyn 0:985ed5cd6ed7 184 lcd.LCD_write_string(0,2,buff,0);
pppartyn 0:985ed5cd6ed7 185 sprintf(buff2,"Color: %d x1",countcolor);
pppartyn 0:985ed5cd6ed7 186 lcd.LCD_write_string(0,3,buff2,0);
pppartyn 0:985ed5cd6ed7 187 t2.reset(); //30sec
pppartyn 0:985ed5cd6ed7 188 redled = 1 ;
pppartyn 0:985ed5cd6ed7 189 greenled = 0 ;
pppartyn 0:985ed5cd6ed7 190 //GReen
pppartyn 0:985ed5cd6ed7 191 red = 1;
pppartyn 0:985ed5cd6ed7 192 blue = 1;
pppartyn 0:985ed5cd6ed7 193 green = 0 ;
pppartyn 0:985ed5cd6ed7 194 wait(1);
pppartyn 0:985ed5cd6ed7 195 valuegreen = LDR.read();
pppartyn 0:985ed5cd6ed7 196 valuegreen = valuegreen*10000;
pppartyn 0:985ed5cd6ed7 197
pppartyn 0:985ed5cd6ed7 198 // BLUE
pppartyn 0:985ed5cd6ed7 199 red = 1;
pppartyn 0:985ed5cd6ed7 200 blue = 0;
pppartyn 0:985ed5cd6ed7 201 green = 1 ;
pppartyn 0:985ed5cd6ed7 202 wait(1);
pppartyn 0:985ed5cd6ed7 203 valueblue = LDR.read();
pppartyn 0:985ed5cd6ed7 204 valueblue = valueblue*10000;
pppartyn 0:985ed5cd6ed7 205
pppartyn 0:985ed5cd6ed7 206 // RED
pppartyn 0:985ed5cd6ed7 207 red = 0;
pppartyn 0:985ed5cd6ed7 208 blue = 1 ;
pppartyn 0:985ed5cd6ed7 209 green = 1 ;
pppartyn 0:985ed5cd6ed7 210 wait(1);
pppartyn 0:985ed5cd6ed7 211 valuered = LDR.read();
pppartyn 0:985ed5cd6ed7 212 valuered = valuered*10000;
pppartyn 0:985ed5cd6ed7 213
pppartyn 0:985ed5cd6ed7 214 pc.printf("%d %d %d\n",limitleft.read(),limitright.read(),limitcenter.read());
pppartyn 0:985ed5cd6ed7 215 pc.printf(" G = %f\n B = %f\nR = %f\n",valuegreen,valueblue,valuered);
pppartyn 0:985ed5cd6ed7 216 wait(1);
pppartyn 0:985ed5cd6ed7 217 if(valuegreen >= valuered && valuegreen >= valueblue && (valuered+valueblue)<=valuegreen ||valueblue >= valuered || valueblue >= valuegreen )
pppartyn 0:985ed5cd6ed7 218 {
pppartyn 0:985ed5cd6ed7 219 pc.printf("\n color\n");
pppartyn 0:985ed5cd6ed7 220 countcolor++ ;
pppartyn 0:985ed5cd6ed7 221 sprintf(buff2,"Color: %d x1",countcolor);
pppartyn 0:985ed5cd6ed7 222 lcd.LCD_write_string(0,3,buff2,0);
pppartyn 0:985ed5cd6ed7 223 do{
pppartyn 0:985ed5cd6ed7 224 ln1 = 0 ; // ทวนเข็ม
pppartyn 0:985ed5cd6ed7 225 ln2 = 1 ;
pppartyn 0:985ed5cd6ed7 226 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 227
pppartyn 0:985ed5cd6ed7 228 }while(limitleft == 0 );
pppartyn 0:985ed5cd6ed7 229 pc.printf("checklimitleft");
pppartyn 0:985ed5cd6ed7 230 ln1 = 1 ;
pppartyn 0:985ed5cd6ed7 231 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 232 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 233 wait(1.5);
pppartyn 0:985ed5cd6ed7 234
pppartyn 0:985ed5cd6ed7 235 ln1 = 0 ;
pppartyn 0:985ed5cd6ed7 236 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 237 Ena = 0 ;
pppartyn 0:985ed5cd6ed7 238 pc.printf("color bottle\n %d",countcolor);
pppartyn 0:985ed5cd6ed7 239
pppartyn 0:985ed5cd6ed7 240 }
pppartyn 0:985ed5cd6ed7 241 else
pppartyn 0:985ed5cd6ed7 242 {
pppartyn 0:985ed5cd6ed7 243 if(valuegreen >300 ||valuegreen-valueblue > 80 || valueblue-valuegreen > 100 && valuered -((valuegreen+valueblue)/2)<170)
pppartyn 0:985ed5cd6ed7 244 {
pppartyn 0:985ed5cd6ed7 245 pc.printf("\ncolor\n");
pppartyn 0:985ed5cd6ed7 246
pppartyn 0:985ed5cd6ed7 247 countcolor++ ;
pppartyn 0:985ed5cd6ed7 248 sprintf(buff2,"Color: %d x1",countcolor);
pppartyn 0:985ed5cd6ed7 249 lcd.LCD_write_string(0,3,buff2,0);
pppartyn 0:985ed5cd6ed7 250 do{
pppartyn 0:985ed5cd6ed7 251 ln1 = 0 ; // ทวนเข็ม
pppartyn 0:985ed5cd6ed7 252 ln2 = 1 ;
pppartyn 0:985ed5cd6ed7 253 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 254
pppartyn 0:985ed5cd6ed7 255 }while(limitleft == 0 );
pppartyn 0:985ed5cd6ed7 256 pc.printf("checklimitleft2");
pppartyn 0:985ed5cd6ed7 257 ln1 = 1 ;
pppartyn 0:985ed5cd6ed7 258 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 259 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 260 wait(1.5);
pppartyn 0:985ed5cd6ed7 261
pppartyn 0:985ed5cd6ed7 262 ln1 = 0 ;
pppartyn 0:985ed5cd6ed7 263 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 264 Ena = 0 ;
pppartyn 0:985ed5cd6ed7 265 pc.printf("color bottle\n %d",countcolor);
pppartyn 0:985ed5cd6ed7 266
pppartyn 0:985ed5cd6ed7 267
pppartyn 0:985ed5cd6ed7 268
pppartyn 0:985ed5cd6ed7 269 }
pppartyn 0:985ed5cd6ed7 270 else if(valuegreen <300 ||valuegreen-valueblue < 80 || valueblue-valuegreen < 100 && valuered -((valuegreen+valueblue)/2)>170)
pppartyn 0:985ed5cd6ed7 271 {
pppartyn 0:985ed5cd6ed7 272 pc.printf("\nclear\n");}
pppartyn 0:985ed5cd6ed7 273 counttran++ ;
pppartyn 0:985ed5cd6ed7 274
pppartyn 0:985ed5cd6ed7 275
pppartyn 0:985ed5cd6ed7 276 sprintf(buff,"Clear: %d x2",counttran);
pppartyn 0:985ed5cd6ed7 277 lcd.LCD_write_string(0,2,buff,0);
pppartyn 0:985ed5cd6ed7 278 do{
pppartyn 0:985ed5cd6ed7 279 ln1 = 1 ; //ตามเข็ม
pppartyn 0:985ed5cd6ed7 280 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 281 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 282
pppartyn 0:985ed5cd6ed7 283 }while(limitright == 0 );
pppartyn 0:985ed5cd6ed7 284 pc.printf("checklimitright");
pppartyn 0:985ed5cd6ed7 285 ln1 = 0 ;
pppartyn 0:985ed5cd6ed7 286 ln2 = 1 ;
pppartyn 0:985ed5cd6ed7 287 Ena = 1 ;
pppartyn 0:985ed5cd6ed7 288 wait(1.5);
pppartyn 0:985ed5cd6ed7 289
pppartyn 0:985ed5cd6ed7 290 ln1 = 0 ;
pppartyn 0:985ed5cd6ed7 291 ln2 = 0 ;
pppartyn 0:985ed5cd6ed7 292 Ena = 0 ;
pppartyn 0:985ed5cd6ed7 293
pppartyn 0:985ed5cd6ed7 294 pc.printf("transparent bottle\n %d ",counttran);
pppartyn 0:985ed5cd6ed7 295
pppartyn 0:985ed5cd6ed7 296 }
pppartyn 0:985ed5cd6ed7 297
pppartyn 0:985ed5cd6ed7 298
pppartyn 0:985ed5cd6ed7 299 }
pppartyn 0:985ed5cd6ed7 300 int total ;
pppartyn 0:985ed5cd6ed7 301 total = countcolor + (counttran * 2);
pppartyn 0:985ed5cd6ed7 302 colors = countcolor ;
pppartyn 0:985ed5cd6ed7 303 clears = counttran ;
pppartyn 0:985ed5cd6ed7 304 sprintf(buff2,"total: %d ",total);
pppartyn 0:985ed5cd6ed7 305 lcd.LCD_write_string(0,4,buff2,0);
pppartyn 0:985ed5cd6ed7 306
pppartyn 0:985ed5cd6ed7 307 red = 1;
pppartyn 0:985ed5cd6ed7 308 blue = 1;
pppartyn 0:985ed5cd6ed7 309 green = 1 ;
pppartyn 0:985ed5cd6ed7 310 while(limitsw == 1) {
pppartyn 0:985ed5cd6ed7 311
pppartyn 0:985ed5cd6ed7 312 }
pppartyn 0:985ed5cd6ed7 313 t2.reset();
pppartyn 0:985ed5cd6ed7 314 }
pppartyn 0:985ed5cd6ed7 315
pppartyn 0:985ed5cd6ed7 316 USER Jettanan("Jettanan","Homchanthanakul","57340500015",1);
pppartyn 0:985ed5cd6ed7 317 USER Nutthaya("Nutthaya","Hankla","57340500025",5);
pppartyn 0:985ed5cd6ed7 318 USER Kanokwan("Kanokwan","Toncheingsai","57340500001",9);
pppartyn 0:985ed5cd6ed7 319 char welcome[40] = {"Welcome to pae-za-leng"};
pppartyn 0:985ed5cd6ed7 320 char please[40] = {"please touch your card"};
pppartyn 0:985ed5cd6ed7 321 char selectstart[20] = {"start"};
pppartyn 0:985ed5cd6ed7 322 char selectcancel[20] = {"cancel"};
pppartyn 0:985ed5cd6ed7 323
pppartyn 0:985ed5cd6ed7 324 int main()
pppartyn 0:985ed5cd6ed7 325 {
pppartyn 0:985ed5cd6ed7 326 int check =0 ;
pppartyn 0:985ed5cd6ed7 327 red = 1;
pppartyn 0:985ed5cd6ed7 328 blue = 1;
pppartyn 0:985ed5cd6ed7 329 green = 1 ;
pppartyn 0:985ed5cd6ed7 330 uint8_t data,card[4]= {0};
pppartyn 0:985ed5cd6ed7 331 pc.baud(115200);
pppartyn 0:985ed5cd6ed7 332 Nutthaya.UpdatePoint(1000);
pppartyn 0:985ed5cd6ed7 333 RFID.PCD_Reset();
pppartyn 0:985ed5cd6ed7 334 wait(1.0);
pppartyn 0:985ed5cd6ed7 335 RFID.PCD_Init();
pppartyn 0:985ed5cd6ed7 336 lcd.LCD_init();
pppartyn 0:985ed5cd6ed7 337 lcd.backlight(OFF);
pppartyn 0:985ed5cd6ed7 338 while(1) {//e
pppartyn 0:985ed5cd6ed7 339 counttran = 0;
pppartyn 0:985ed5cd6ed7 340 countcolor = 0;
pppartyn 0:985ed5cd6ed7 341 lcd.backlight(ON);
pppartyn 0:985ed5cd6ed7 342 lcd.LCD_write_string(0,0,welcome,0);
pppartyn 0:985ed5cd6ed7 343 lcd.LCD_write_string(0,3,please,0);
pppartyn 0:985ed5cd6ed7 344 // Look for new cards // Select one of the cards
pppartyn 0:985ed5cd6ed7 345 if ( ! RFID.PICC_IsNewCardPresent() || ! RFID.PICC_ReadCardSerial()) {
pppartyn 0:985ed5cd6ed7 346 continue;
pppartyn 0:985ed5cd6ed7 347 }
pppartyn 0:985ed5cd6ed7 348
pppartyn 0:985ed5cd6ed7 349 // Print Card UID
pppartyn 0:985ed5cd6ed7 350 pc.printf("Card UID: ");
pppartyn 0:985ed5cd6ed7 351 for(int i=0; card[i]!='\0'; i++) {
pppartyn 0:985ed5cd6ed7 352 card[i] = 0;
pppartyn 0:985ed5cd6ed7 353 }
pppartyn 0:985ed5cd6ed7 354 for (uint8_t i = 0; RFID.uid.uidByte[i]!= '\0' ; i++) {
pppartyn 0:985ed5cd6ed7 355 card[i] = data = RFID.uid.uidByte[i] ;
pppartyn 0:985ed5cd6ed7 356 pc.printf(" %d",data);
pppartyn 0:985ed5cd6ed7 357
pppartyn 0:985ed5cd6ed7 358 }
pppartyn 0:985ed5cd6ed7 359
pppartyn 0:985ed5cd6ed7 360
pppartyn 0:985ed5cd6ed7 361 //////data card\\\\\\\
pppartyn 0:985ed5cd6ed7 362
pppartyn 0:985ed5cd6ed7 363 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 364 pc.printf("\n Name : Jettanan H. \n Student's ID : 57340500015 \n point : %d ",Jettanan.getPoint());
pppartyn 0:985ed5cd6ed7 365 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 366 }
pppartyn 0:985ed5cd6ed7 367 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 368 pc.printf("\n Name : Nutthaya H. \n Student's ID : 57340500025 \n point : %d ",Nutthaya.getPoint());
pppartyn 0:985ed5cd6ed7 369 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 370 }
pppartyn 0:985ed5cd6ed7 371 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 372 pc.printf("\n Name : Kanokwan T. \n Student's ID : 57340500001 \n point : %d ",Kanokwan.getPoint());
pppartyn 0:985ed5cd6ed7 373 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 374 }
pppartyn 0:985ed5cd6ed7 375 lcd.LCD_write_string(55,5,selectstart,1);
pppartyn 0:985ed5cd6ed7 376 lcd.LCD_write_string(0,5,selectcancel,1);
pppartyn 0:985ed5cd6ed7 377
pppartyn 0:985ed5cd6ed7 378 pc.printf("\n\r");
pppartyn 0:985ed5cd6ed7 379
pppartyn 0:985ed5cd6ed7 380 t.start();
pppartyn 0:985ed5cd6ed7 381 t.reset();
pppartyn 0:985ed5cd6ed7 382 while(t.read_ms()<10000) {
pppartyn 0:985ed5cd6ed7 383 //5
pppartyn 0:985ed5cd6ed7 384 if( rightbutton == 1 && leftbutton == 0) {
pppartyn 0:985ed5cd6ed7 385 //2
pppartyn 0:985ed5cd6ed7 386 greenled = 1;
pppartyn 0:985ed5cd6ed7 387
pppartyn 0:985ed5cd6ed7 388
pppartyn 0:985ed5cd6ed7 389
pppartyn 0:985ed5cd6ed7 390 while(rightbutton ==1)
pppartyn 0:985ed5cd6ed7 391 {wait(0.1);}
pppartyn 0:985ed5cd6ed7 392
pppartyn 0:985ed5cd6ed7 393 wait(0.5);
pppartyn 0:985ed5cd6ed7 394 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 395
pppartyn 0:985ed5cd6ed7 396 t2.start();
pppartyn 0:985ed5cd6ed7 397 t2.reset();
pppartyn 0:985ed5cd6ed7 398 lcd.LCD_write_string(0,0,"insert bottle",0);
pppartyn 0:985ed5cd6ed7 399 //lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 400 while(t2.read_ms()<30000) {
pppartyn 0:985ed5cd6ed7 401 //1
pppartyn 0:985ed5cd6ed7 402 check = 1 ;
pppartyn 0:985ed5cd6ed7 403 color = 0;
pppartyn 0:985ed5cd6ed7 404 clear = 0;
pppartyn 0:985ed5cd6ed7 405 colorsensor(color,clear);
pppartyn 0:985ed5cd6ed7 406 t3.start();
pppartyn 0:985ed5cd6ed7 407 t3.reset();
pppartyn 0:985ed5cd6ed7 408 while(t3.read_ms()<500) {
pppartyn 0:985ed5cd6ed7 409 lcd.LCD_write_string(44,5,"Submit",1);
pppartyn 0:985ed5cd6ed7 410 if(rightbutton == 1) {
pppartyn 0:985ed5cd6ed7 411 while(rightbutton ==1)
pppartyn 0:985ed5cd6ed7 412 {wait(0.1);}
pppartyn 0:985ed5cd6ed7 413 wait(0.5);
pppartyn 0:985ed5cd6ed7 414 goto LAND ;
pppartyn 0:985ed5cd6ed7 415 }
pppartyn 0:985ed5cd6ed7 416 }
pppartyn 0:985ed5cd6ed7 417 lcd.LCD_write_string(44,5," ",0);
pppartyn 0:985ed5cd6ed7 418 greenled = 0 ;
pppartyn 0:985ed5cd6ed7 419 }//1
pppartyn 0:985ed5cd6ed7 420
pppartyn 0:985ed5cd6ed7 421
pppartyn 0:985ed5cd6ed7 422 }//2
pppartyn 0:985ed5cd6ed7 423 else if(leftbutton == 1){break;}
pppartyn 0:985ed5cd6ed7 424
pppartyn 0:985ed5cd6ed7 425 }//5
pppartyn 0:985ed5cd6ed7 426 LAND :
pppartyn 0:985ed5cd6ed7 427 while(rightbutton ==1)
pppartyn 0:985ed5cd6ed7 428 {wait(0.1);}
pppartyn 0:985ed5cd6ed7 429 wait(0.5);
pppartyn 0:985ed5cd6ed7 430 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 431 while(check == 1) {
pppartyn 0:985ed5cd6ed7 432
pppartyn 0:985ed5cd6ed7 433 lcd.LCD_write_string(10,0,"Do you want",0);
pppartyn 0:985ed5cd6ed7 434 lcd.LCD_write_string(14,1,"to play a",0);
pppartyn 0:985ed5cd6ed7 435 lcd.LCD_write_string(20,3,"GAME ?",0);
pppartyn 0:985ed5cd6ed7 436 lcd.LCD_write_string(5,5,"No",0);
pppartyn 0:985ed5cd6ed7 437 lcd.LCD_write_string(40,5,"Yes",0);
pppartyn 0:985ed5cd6ed7 438 if(rightbutton == 1 && leftbutton == 0) {
pppartyn 0:985ed5cd6ed7 439 //3
pppartyn 0:985ed5cd6ed7 440 while(rightbutton ==1)
pppartyn 0:985ed5cd6ed7 441 {wait(0.1);}
pppartyn 0:985ed5cd6ed7 442
pppartyn 0:985ed5cd6ed7 443 lcd.LCD_write_string(0,3,"join the GAME!",0);
pppartyn 0:985ed5cd6ed7 444 wait(1);
pppartyn 0:985ed5cd6ed7 445 /*Extend*/
pppartyn 0:985ed5cd6ed7 446 lcd.backlight(ON);
pppartyn 0:985ed5cd6ed7 447 lcd.LCD_init();
pppartyn 0:985ed5cd6ed7 448 total = countcolor + (counttran*2);
pppartyn 0:985ed5cd6ed7 449 color = countcolor ;
pppartyn 0:985ed5cd6ed7 450 clear = counttran ;
pppartyn 0:985ed5cd6ed7 451 highb = color/256 ;
pppartyn 0:985ed5cd6ed7 452 lowb = color - (highb*256);
pppartyn 0:985ed5cd6ed7 453 command[3] = lowb ;
pppartyn 0:985ed5cd6ed7 454 command[2] = highb ;
pppartyn 0:985ed5cd6ed7 455 highb = clear/256 ;
pppartyn 0:985ed5cd6ed7 456 lowb = clear - (highb*256);
pppartyn 0:985ed5cd6ed7 457 command[5] = lowb ;
pppartyn 0:985ed5cd6ed7 458 command[4] = highb ;
pppartyn 0:985ed5cd6ed7 459 command[0] = 0x42 ;
pppartyn 0:985ed5cd6ed7 460 command[1] = 0x52 ;
pppartyn 0:985ed5cd6ed7 461 command[6] = 0x4D ;
pppartyn 0:985ed5cd6ed7 462
pppartyn 0:985ed5cd6ed7 463 for(int i=0;i<7;i++)
pppartyn 0:985ed5cd6ed7 464 {
pppartyn 0:985ed5cd6ed7 465 wait(0.1);
pppartyn 0:985ed5cd6ed7 466 device.putc(command[i]);
pppartyn 0:985ed5cd6ed7 467 pc.printf("%x\n",command[i]);
pppartyn 0:985ed5cd6ed7 468
pppartyn 0:985ed5cd6ed7 469 }
pppartyn 0:985ed5cd6ed7 470
pppartyn 0:985ed5cd6ed7 471 //After allow to play game
pppartyn 0:985ed5cd6ed7 472 if(total<=1)
pppartyn 0:985ed5cd6ed7 473 {
pppartyn 0:985ed5cd6ed7 474 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 475 lcd.LCD_write_string(0,2,"Sorry you don't",0);
pppartyn 0:985ed5cd6ed7 476 lcd.LCD_write_string(0,3,"have any point",0);
pppartyn 0:985ed5cd6ed7 477 wait(3);
pppartyn 0:985ed5cd6ed7 478 uint16_t sim ;
pppartyn 0:985ed5cd6ed7 479 sim = total ;
pppartyn 0:985ed5cd6ed7 480 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 481 Jettanan.UpdatePoint(sim);
pppartyn 0:985ed5cd6ed7 482 wait(1);
pppartyn 0:985ed5cd6ed7 483 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 484 }
pppartyn 0:985ed5cd6ed7 485 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 486 Nutthaya.UpdatePoint(sim);
pppartyn 0:985ed5cd6ed7 487 wait(1);
pppartyn 0:985ed5cd6ed7 488 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 489 }
pppartyn 0:985ed5cd6ed7 490 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 491 Kanokwan.UpdatePoint(sim);
pppartyn 0:985ed5cd6ed7 492 wait(1);
pppartyn 0:985ed5cd6ed7 493 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 494 }
pppartyn 0:985ed5cd6ed7 495 wait(3);
pppartyn 0:985ed5cd6ed7 496 goto EXIT;
pppartyn 0:985ed5cd6ed7 497 }
pppartyn 0:985ed5cd6ed7 498
pppartyn 0:985ed5cd6ed7 499 int totalsim;
pppartyn 0:985ed5cd6ed7 500 uint16_t credits;
pppartyn 0:985ed5cd6ed7 501 totalsim = total;
pppartyn 0:985ed5cd6ed7 502 credits = 0;
pppartyn 0:985ed5cd6ed7 503 pc.printf("Game mode");
pppartyn 0:985ed5cd6ed7 504 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 505
pppartyn 0:985ed5cd6ed7 506 while(1)//select credits
pppartyn 0:985ed5cd6ed7 507 {
pppartyn 0:985ed5cd6ed7 508
pppartyn 0:985ed5cd6ed7 509 lcd.LCD_write_string(0,0,"total P :",0);
pppartyn 0:985ed5cd6ed7 510 lcd.LCD_write_string(10,1,"credits :",0);
pppartyn 0:985ed5cd6ed7 511 lcd.LCD_write_string(0,3,"2 Point = 1 Credits",0);
pppartyn 0:985ed5cd6ed7 512 char buff[4];
pppartyn 0:985ed5cd6ed7 513 sprintf(buff,"%d",totalsim);
pppartyn 0:985ed5cd6ed7 514 lcd.LCD_write_string(67,0,buff,0);
pppartyn 0:985ed5cd6ed7 515
pppartyn 0:985ed5cd6ed7 516 char buff2[4];
pppartyn 0:985ed5cd6ed7 517 sprintf(buff2,"%d",credits);
pppartyn 0:985ed5cd6ed7 518 lcd.LCD_write_string(67,1,buff2,1);
pppartyn 0:985ed5cd6ed7 519 if(plusbutton ==1)
pppartyn 0:985ed5cd6ed7 520 {
pppartyn 0:985ed5cd6ed7 521 while(plusbutton==1)
pppartyn 0:985ed5cd6ed7 522 {wait(0.2);}
pppartyn 0:985ed5cd6ed7 523 if((totalsim-2)>=0)
pppartyn 0:985ed5cd6ed7 524 {
pppartyn 0:985ed5cd6ed7 525 credits = credits +1 ;
pppartyn 0:985ed5cd6ed7 526 totalsim = totalsim - 2;
pppartyn 0:985ed5cd6ed7 527 pc.printf("credits + 1");
pppartyn 0:985ed5cd6ed7 528 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 529 }
pppartyn 0:985ed5cd6ed7 530 }
pppartyn 0:985ed5cd6ed7 531 if(minusbutton ==1)
pppartyn 0:985ed5cd6ed7 532 {
pppartyn 0:985ed5cd6ed7 533 while(minusbutton==1)
pppartyn 0:985ed5cd6ed7 534 {wait(0.2);}
pppartyn 0:985ed5cd6ed7 535 if((credits-1)>=0)
pppartyn 0:985ed5cd6ed7 536 {
pppartyn 0:985ed5cd6ed7 537 credits = credits - 1 ;
pppartyn 0:985ed5cd6ed7 538 totalsim = totalsim + 2;
pppartyn 0:985ed5cd6ed7 539 pc.printf("credits - 1");
pppartyn 0:985ed5cd6ed7 540 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 541 }
pppartyn 0:985ed5cd6ed7 542 }
pppartyn 0:985ed5cd6ed7 543 if(leftbutton ==1)
pppartyn 0:985ed5cd6ed7 544 {
pppartyn 0:985ed5cd6ed7 545 uint16_t pointsim ;
pppartyn 0:985ed5cd6ed7 546 pointsim = total ;
pppartyn 0:985ed5cd6ed7 547 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 548 Jettanan.UpdatePoint(pointsim);
pppartyn 0:985ed5cd6ed7 549 wait(1);
pppartyn 0:985ed5cd6ed7 550 pc.printf("point sim = %d\n",pointsim);
pppartyn 0:985ed5cd6ed7 551 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 552 }
pppartyn 0:985ed5cd6ed7 553 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 554 Nutthaya.UpdatePoint(pointsim);
pppartyn 0:985ed5cd6ed7 555 wait(1);
pppartyn 0:985ed5cd6ed7 556 pc.printf("point sim = %d\n",pointsim);
pppartyn 0:985ed5cd6ed7 557 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 558 }
pppartyn 0:985ed5cd6ed7 559 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 560 Kanokwan.UpdatePoint(pointsim);
pppartyn 0:985ed5cd6ed7 561 wait(1);
pppartyn 0:985ed5cd6ed7 562 pc.printf("point sim = %d\n",pointsim);
pppartyn 0:985ed5cd6ed7 563 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 564 }
pppartyn 0:985ed5cd6ed7 565 wait(3);
pppartyn 0:985ed5cd6ed7 566 pc.printf("left");
pppartyn 0:985ed5cd6ed7 567 goto LEFT ;
pppartyn 0:985ed5cd6ed7 568 }
pppartyn 0:985ed5cd6ed7 569 if(rightbutton ==1)
pppartyn 0:985ed5cd6ed7 570 {
pppartyn 0:985ed5cd6ed7 571 if(credits ==0)
pppartyn 0:985ed5cd6ed7 572 {
pppartyn 0:985ed5cd6ed7 573 pc.printf("continue");
pppartyn 0:985ed5cd6ed7 574 continue;
pppartyn 0:985ed5cd6ed7 575 }
pppartyn 0:985ed5cd6ed7 576 else if(credits >=1)
pppartyn 0:985ed5cd6ed7 577 {
pppartyn 0:985ed5cd6ed7 578 command[0]=0x42;
pppartyn 0:985ed5cd6ed7 579 command[1]=0x50;
pppartyn 0:985ed5cd6ed7 580 command[2]=0x00;
pppartyn 0:985ed5cd6ed7 581 command[3]=0x00;
pppartyn 0:985ed5cd6ed7 582 command[4]=0x00;
pppartyn 0:985ed5cd6ed7 583 command[5]=credits;
pppartyn 0:985ed5cd6ed7 584 command[6]=0x4D;
pppartyn 0:985ed5cd6ed7 585 for(int i=0;i<7;i++)
pppartyn 0:985ed5cd6ed7 586 {
pppartyn 0:985ed5cd6ed7 587 wait(0.1);
pppartyn 0:985ed5cd6ed7 588 device.putc(command[i]);
pppartyn 0:985ed5cd6ed7 589 pc.printf("%x\n",command[i]);
pppartyn 0:985ed5cd6ed7 590
pppartyn 0:985ed5cd6ed7 591 }
pppartyn 0:985ed5cd6ed7 592 uint16_t simm ;
pppartyn 0:985ed5cd6ed7 593 simm = total-(credits*2) ;
pppartyn 0:985ed5cd6ed7 594 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 595 Jettanan.UpdatePoint(simm);
pppartyn 0:985ed5cd6ed7 596 wait(0.3);
pppartyn 0:985ed5cd6ed7 597 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 598 }
pppartyn 0:985ed5cd6ed7 599 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 600 Nutthaya.UpdatePoint(simm);
pppartyn 0:985ed5cd6ed7 601 wait(0.3);
pppartyn 0:985ed5cd6ed7 602 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 603 }
pppartyn 0:985ed5cd6ed7 604 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 605 Kanokwan.UpdatePoint(simm);
pppartyn 0:985ed5cd6ed7 606 wait(0.3);
pppartyn 0:985ed5cd6ed7 607 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 608 }
pppartyn 0:985ed5cd6ed7 609 pc.printf("left");
pppartyn 0:985ed5cd6ed7 610 break;
pppartyn 0:985ed5cd6ed7 611 }
pppartyn 0:985ed5cd6ed7 612 }
pppartyn 0:985ed5cd6ed7 613
pppartyn 0:985ed5cd6ed7 614 }//select credits
pppartyn 0:985ed5cd6ed7 615 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 616 for(int w=0;w<credits;w++)
pppartyn 0:985ed5cd6ed7 617 {
pppartyn 0:985ed5cd6ed7 618 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 619 lcd.LCD_write_string(0,0,"Credits:",0);
pppartyn 0:985ed5cd6ed7 620 char buff[4];
pppartyn 0:985ed5cd6ed7 621 sprintf(buff,"%d",credits-w);
pppartyn 0:985ed5cd6ed7 622 for(int i=0;i<7;i++)
pppartyn 0:985ed5cd6ed7 623 {
pppartyn 0:985ed5cd6ed7 624 re_command[i]=device.getc();
pppartyn 0:985ed5cd6ed7 625 pc.printf("%x\n",re_command[i]);
pppartyn 0:985ed5cd6ed7 626 }
pppartyn 0:985ed5cd6ed7 627 if(re_command[0]==0x42 && re_command[1]==0x45 && re_command[6]==0x4D)
pppartyn 0:985ed5cd6ed7 628 {
pppartyn 0:985ed5cd6ed7 629 pc.printf("command not found");
pppartyn 0:985ed5cd6ed7 630 break;
pppartyn 0:985ed5cd6ed7 631 }
pppartyn 0:985ed5cd6ed7 632 lcd.LCD_write_string(46,0,buff,0);
pppartyn 0:985ed5cd6ed7 633 lcd.LCD_write_string(58,0,"1 :",0);
pppartyn 0:985ed5cd6ed7 634 lcd.LCD_write_string(66,0,"??",0);
pppartyn 0:985ed5cd6ed7 635 lcd.LCD_write_string(58,1,"2 :",0);
pppartyn 0:985ed5cd6ed7 636 lcd.LCD_write_string(66,1,"??",0);
pppartyn 0:985ed5cd6ed7 637 lcd.LCD_write_string(58,2,"3 :",0);
pppartyn 0:985ed5cd6ed7 638 lcd.LCD_write_string(66,2,"??",0);
pppartyn 0:985ed5cd6ed7 639 lcd.LCD_write_string(58,3,"4 :",0);
pppartyn 0:985ed5cd6ed7 640 lcd.LCD_write_string(66,3,"??",0);
pppartyn 0:985ed5cd6ed7 641 lcd.LCD_write_string(0,4,"Pick up ball",0);
pppartyn 0:985ed5cd6ed7 642 lcd.LCD_write_string(0,5,"Dropto Gripper",0);
pppartyn 0:985ed5cd6ed7 643 ch = device.getc();
pppartyn 0:985ed5cd6ed7 644 lcd.LCD_write_string(0,4," ",0);
pppartyn 0:985ed5cd6ed7 645 lcd.LCD_write_string(0,5," ",0);
pppartyn 0:985ed5cd6ed7 646 ch = device.getc();
pppartyn 0:985ed5cd6ed7 647 if(ch == 0x53)
pppartyn 0:985ed5cd6ed7 648 {
pppartyn 0:985ed5cd6ed7 649 lcd.LCD_write_string(58,0,"1 :",0);
pppartyn 0:985ed5cd6ed7 650 lcd.LCD_write_string(66,0,random[re_command[2]],0);
pppartyn 0:985ed5cd6ed7 651 lcd.LCD_write_string(58,1,"2 :",0);
pppartyn 0:985ed5cd6ed7 652 lcd.LCD_write_string(66,1,random[re_command[3]],0);
pppartyn 0:985ed5cd6ed7 653 lcd.LCD_write_string(58,2,"3 :",0);
pppartyn 0:985ed5cd6ed7 654 lcd.LCD_write_string(66,2,random[re_command[4]],0);
pppartyn 0:985ed5cd6ed7 655 lcd.LCD_write_string(58,3,"4 :",0);
pppartyn 0:985ed5cd6ed7 656 lcd.LCD_write_string(66,3,random[re_command[5]],0);
pppartyn 0:985ed5cd6ed7 657 lcd.LCD_write_string(0,4," ",0);
pppartyn 0:985ed5cd6ed7 658 lcd.LCD_write_string(0,5," ",0);
pppartyn 0:985ed5cd6ed7 659 pc.printf("Start");
pppartyn 0:985ed5cd6ed7 660 }
pppartyn 0:985ed5cd6ed7 661 ch = device.getc();
pppartyn 0:985ed5cd6ed7 662 char checkc[4];
pppartyn 0:985ed5cd6ed7 663 //char random[4][4]={"x0","x1","x2","x3"};
pppartyn 0:985ed5cd6ed7 664 if(ch == 1)
pppartyn 0:985ed5cd6ed7 665 {
pppartyn 0:985ed5cd6ed7 666 lcd.LCD_write_string(58,0,"1 :",1);
pppartyn 0:985ed5cd6ed7 667 lcd.LCD_write_string(66,0,random[re_command[2]],1);
pppartyn 0:985ed5cd6ed7 668 sprintf(checkc,"%s",random[re_command[2]]) ;
pppartyn 0:985ed5cd6ed7 669
pppartyn 0:985ed5cd6ed7 670 }
pppartyn 0:985ed5cd6ed7 671 else if(ch == 2)
pppartyn 0:985ed5cd6ed7 672 {
pppartyn 0:985ed5cd6ed7 673 lcd.LCD_write_string(58,1,"2 :",1);
pppartyn 0:985ed5cd6ed7 674 lcd.LCD_write_string(66,1,random[re_command[3]],1);
pppartyn 0:985ed5cd6ed7 675 sprintf(checkc,"%s",random[re_command[3]]) ;
pppartyn 0:985ed5cd6ed7 676 }
pppartyn 0:985ed5cd6ed7 677 else if(ch == 3)
pppartyn 0:985ed5cd6ed7 678 {
pppartyn 0:985ed5cd6ed7 679 lcd.LCD_write_string(58,2,"3 :",1);
pppartyn 0:985ed5cd6ed7 680 lcd.LCD_write_string(66,2,random[re_command[4]],1);
pppartyn 0:985ed5cd6ed7 681 sprintf(checkc,"%s",random[re_command[4]]) ;
pppartyn 0:985ed5cd6ed7 682 }
pppartyn 0:985ed5cd6ed7 683 else if(ch == 4)
pppartyn 0:985ed5cd6ed7 684 {
pppartyn 0:985ed5cd6ed7 685 lcd.LCD_write_string(58,3,"4 :",1);
pppartyn 0:985ed5cd6ed7 686 lcd.LCD_write_string(66,3,random[re_command[5]],1);
pppartyn 0:985ed5cd6ed7 687 sprintf(checkc,"%s",random[re_command[5]]) ;
pppartyn 0:985ed5cd6ed7 688 }
pppartyn 0:985ed5cd6ed7 689 if(checkc[1] == '0')
pppartyn 0:985ed5cd6ed7 690 {
pppartyn 0:985ed5cd6ed7 691 t_score = t_score+0;
pppartyn 0:985ed5cd6ed7 692 pc.printf("t_t");
pppartyn 0:985ed5cd6ed7 693 }
pppartyn 0:985ed5cd6ed7 694 else if(checkc[1] == '1')
pppartyn 0:985ed5cd6ed7 695 {
pppartyn 0:985ed5cd6ed7 696 t_score = t_score+2;
pppartyn 0:985ed5cd6ed7 697 pc.printf("t_t");
pppartyn 0:985ed5cd6ed7 698 }
pppartyn 0:985ed5cd6ed7 699 else if(checkc[1] == '2')
pppartyn 0:985ed5cd6ed7 700 {
pppartyn 0:985ed5cd6ed7 701 t_score = t_score+4;
pppartyn 0:985ed5cd6ed7 702 pc.printf("t_t");
pppartyn 0:985ed5cd6ed7 703 }
pppartyn 0:985ed5cd6ed7 704 else if(checkc[1] == '3')
pppartyn 0:985ed5cd6ed7 705 {
pppartyn 0:985ed5cd6ed7 706 t_score = t_score+6;
pppartyn 0:985ed5cd6ed7 707 pc.printf("t_t");
pppartyn 0:985ed5cd6ed7 708 }
pppartyn 0:985ed5cd6ed7 709 uint16_t gg;
pppartyn 0:985ed5cd6ed7 710 gg = device.getc();
pppartyn 0:985ed5cd6ed7 711 }
pppartyn 0:985ed5cd6ed7 712
pppartyn 0:985ed5cd6ed7 713 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 714 lcd.LCD_write_string(0,0,"Total Score :",0);
pppartyn 0:985ed5cd6ed7 715 char buff3[6];
pppartyn 0:985ed5cd6ed7 716 sprintf(buff3,"%d",t_score);
pppartyn 0:985ed5cd6ed7 717 lcd.LCD_write_string(0,1,buff3,1);
pppartyn 0:985ed5cd6ed7 718 LEFT :
pppartyn 0:985ed5cd6ed7 719
pppartyn 0:985ed5cd6ed7 720 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 721 Jettanan.UpdatePoint(t_score);
pppartyn 0:985ed5cd6ed7 722 wait(0.3);
pppartyn 0:985ed5cd6ed7 723 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 724 }
pppartyn 0:985ed5cd6ed7 725 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 726 Nutthaya.UpdatePoint(t_score);
pppartyn 0:985ed5cd6ed7 727 wait(0.3);
pppartyn 0:985ed5cd6ed7 728 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 729 }
pppartyn 0:985ed5cd6ed7 730 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 731 Kanokwan.UpdatePoint(t_score);
pppartyn 0:985ed5cd6ed7 732 wait(0.3);
pppartyn 0:985ed5cd6ed7 733 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 734 }
pppartyn 0:985ed5cd6ed7 735 wait(3);
pppartyn 0:985ed5cd6ed7 736 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 737 /*End Extend*/
pppartyn 0:985ed5cd6ed7 738 EXIT :
pppartyn 0:985ed5cd6ed7 739 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 740 break;
pppartyn 0:985ed5cd6ed7 741 }//3
pppartyn 0:985ed5cd6ed7 742 else if(leftbutton == 1) {
pppartyn 0:985ed5cd6ed7 743 //4
pppartyn 0:985ed5cd6ed7 744 while(leftbutton ==1)
pppartyn 0:985ed5cd6ed7 745 {wait(0.1);}
pppartyn 0:985ed5cd6ed7 746 total = countcolor + (counttran*2);
pppartyn 0:985ed5cd6ed7 747 color = countcolor ;
pppartyn 0:985ed5cd6ed7 748 clear = counttran ;
pppartyn 0:985ed5cd6ed7 749 highb = color/256 ;
pppartyn 0:985ed5cd6ed7 750 lowb = color - (highb*256);
pppartyn 0:985ed5cd6ed7 751 command[3] = lowb ;
pppartyn 0:985ed5cd6ed7 752 command[2] = highb ;
pppartyn 0:985ed5cd6ed7 753 highb = clear/256 ;
pppartyn 0:985ed5cd6ed7 754 lowb = clear - (highb*256);
pppartyn 0:985ed5cd6ed7 755 command[5] = lowb ;
pppartyn 0:985ed5cd6ed7 756 command[4] = highb ;
pppartyn 0:985ed5cd6ed7 757 command[0] = 0x42 ;
pppartyn 0:985ed5cd6ed7 758 command[1] = 0x52 ;
pppartyn 0:985ed5cd6ed7 759 command[6] = 0x4D ;
pppartyn 0:985ed5cd6ed7 760
pppartyn 0:985ed5cd6ed7 761 for(int i=0;i<7;i++)
pppartyn 0:985ed5cd6ed7 762 {
pppartyn 0:985ed5cd6ed7 763 wait(0.1);
pppartyn 0:985ed5cd6ed7 764 device.putc(command[i]);
pppartyn 0:985ed5cd6ed7 765 pc.printf("%x\n",command[i]);
pppartyn 0:985ed5cd6ed7 766
pppartyn 0:985ed5cd6ed7 767 }
pppartyn 0:985ed5cd6ed7 768 uint16_t sim2 ;
pppartyn 0:985ed5cd6ed7 769 sim2 = total;
pppartyn 0:985ed5cd6ed7 770 if(card[0] == 106 && card[1] == 230 && card[2] == 38 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 771 Jettanan.UpdatePoint(sim2);
pppartyn 0:985ed5cd6ed7 772 wait(1);
pppartyn 0:985ed5cd6ed7 773 ShowUser(Jettanan);
pppartyn 0:985ed5cd6ed7 774 }
pppartyn 0:985ed5cd6ed7 775 if(card[0] == 186 && card[1] == 151 && card[2] == 37 && card[3] == 231) {
pppartyn 0:985ed5cd6ed7 776 Nutthaya.UpdatePoint(sim2);
pppartyn 0:985ed5cd6ed7 777 wait(1);
pppartyn 0:985ed5cd6ed7 778 ShowUser(Nutthaya);
pppartyn 0:985ed5cd6ed7 779 }
pppartyn 0:985ed5cd6ed7 780 if(card[0] == 199 && card[1] == 230 && card[2] == 46 ) {
pppartyn 0:985ed5cd6ed7 781 Kanokwan.UpdatePoint(sim2);
pppartyn 0:985ed5cd6ed7 782 wait(1);
pppartyn 0:985ed5cd6ed7 783 ShowUser(Kanokwan);
pppartyn 0:985ed5cd6ed7 784 }
pppartyn 0:985ed5cd6ed7 785 wait(3);
pppartyn 0:985ed5cd6ed7 786 card[0] = 0;
pppartyn 0:985ed5cd6ed7 787 card[1] = 0;
pppartyn 0:985ed5cd6ed7 788 card[2] = 0;
pppartyn 0:985ed5cd6ed7 789 card[3] = 0;
pppartyn 0:985ed5cd6ed7 790 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 791 break;
pppartyn 0:985ed5cd6ed7 792 }//4
pppartyn 0:985ed5cd6ed7 793 }
pppartyn 0:985ed5cd6ed7 794
pppartyn 0:985ed5cd6ed7 795
pppartyn 0:985ed5cd6ed7 796 lcd.LCD_clear();
pppartyn 0:985ed5cd6ed7 797 check = 0;
pppartyn 0:985ed5cd6ed7 798 }//e
pppartyn 0:985ed5cd6ed7 799 }