map

Dependencies:   mbed APDS_9960 Servo TM1636 RTC-DS1307 RC522

Committer:
poom10490
Date:
Tue Dec 18 21:57:09 2018 +0000
Revision:
1:8017931b98cb
Parent:
0:3854371f105a
map

Who changed what in which revision?

UserRevisionLine numberNew contents of line
poom10490 0:3854371f105a 1 #include "mbed.h"
poom10490 0:3854371f105a 2 #include "Rtc_Ds1307.h"
poom10490 0:3854371f105a 3 #include "TM1636.h" //ClockShield
poom10490 0:3854371f105a 4 #include "glibr.h" // Color
poom10490 0:3854371f105a 5 #include "Servo.h" // Motor
poom10490 0:3854371f105a 6 #include "MFRC522.h" // RFID
poom10490 0:3854371f105a 7 #include <string>
poom10490 0:3854371f105a 8 #include <iostream>
poom10490 0:3854371f105a 9 //Serial///////////////////////////////
poom10490 1:8017931b98cb 10 //Serial esp(D8,D2);
poom10490 1:8017931b98cb 11 Serial pc(USBTX,USBRX);
poom10490 0:3854371f105a 12 //////////////////////////////////////
poom10490 0:3854371f105a 13 //Sensor//////////////////////////////
poom10490 0:3854371f105a 14 AnalogIn DistanceI(A0);
poom10490 0:3854371f105a 15 AnalogIn DistanceII(A1);
poom10490 0:3854371f105a 16 DigitalIn Proximity(D2);
poom10490 0:3854371f105a 17 glibr Color(D14,D15);//SDA, SCL
poom10490 0:3854371f105a 18 MFRC522 RfChip(D11, D12, D13, D10, D9);//MOSI, MISO, SCK, SDA, RST
poom10490 0:3854371f105a 19 /////////////////////////////////////
poom10490 0:3854371f105a 20 //ClockShield////////////////////////
poom10490 1:8017931b98cb 21 Rtc_Ds1307 rtc(D3, D6); //I2C
poom10490 0:3854371f105a 22 DigitalIn button_K3(A5);
poom10490 1:8017931b98cb 23 TM1636 tm1636(D7,D4);
poom10490 0:3854371f105a 24
poom10490 0:3854371f105a 25 uint16_t color, red, green, blue, ambient;
poom10490 0:3854371f105a 26 string tagRFID;
poom10490 1:8017931b98cb 27 //int goodProduct, badProduct, allProduct;
poom10490 1:8017931b98cb 28 //int Quality = (goodProduct/allProduct)*100;
poom10490 0:3854371f105a 29 //int allProduct, goodProduct, badProduct;
poom10490 0:3854371f105a 30 float Performance, Ability;
poom10490 1:8017931b98cb 31 //int8_t temp[4];
poom10490 0:3854371f105a 32 int main(){
poom10490 1:8017931b98cb 33 int8_t temp[4];
poom10490 0:3854371f105a 34 button_K3.mode(PullUp);
poom10490 0:3854371f105a 35 tm1636.init();
poom10490 0:3854371f105a 36 Rtc_Ds1307::Time_rtc tm = {};
poom10490 0:3854371f105a 37 tm.date = 1 ;
poom10490 0:3854371f105a 38 tm.mon = 1 ;
poom10490 0:3854371f105a 39 tm.year = 12 ;
poom10490 0:3854371f105a 40 tm.hour = 0;
poom10490 0:3854371f105a 41 tm.min = 0;
poom10490 0:3854371f105a 42 tm.sec = 0;
poom10490 0:3854371f105a 43 rtc.setTime(tm, false, false);
poom10490 0:3854371f105a 44 rtc.startClock();
poom10490 1:8017931b98cb 45 char DataCode[];
poom10490 0:3854371f105a 46 esp.baud(115200);
poom10490 0:3854371f105a 47 pc.baud(115200);
poom10490 0:3854371f105a 48 RfChip.PCD_Init();
poom10490 0:3854371f105a 49 Color.setMode(0,1);
poom10490 0:3854371f105a 50 Color.enableLightSensor(true);
poom10490 0:3854371f105a 51 Color.enablePower();
poom10490 1:8017931b98cb 52 rtc.startClock();
poom10490 0:3854371f105a 53 while(1){
poom10490 1:8017931b98cb 54 pc.printf(".");
poom10490 1:8017931b98cb 55 rtc.getTime(tm);
poom10490 0:3854371f105a 56 pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
poom10490 0:3854371f105a 57 temp[0] = tm.min / 10;
poom10490 0:3854371f105a 58 temp[1] = tm.min % 10;
poom10490 0:3854371f105a 59 temp[2] = tm.sec / 10;
poom10490 0:3854371f105a 60 temp[3] = tm.sec % 10;
poom10490 1:8017931b98cb 61 tm1636.display(temp);
poom10490 1:8017931b98cb 62 int Status = pc.read()
poom10490 1:8017931b98cb 63 if(Status == 1){//Online Checking
poom10490 1:8017931b98cb 64 if(RfChip.PICC_IsNewCardPresent()){
poom10490 1:8017931b98cb 65 pc.printf("Card Read\n");
poom10490 1:8017931b98cb 66 RfChip.PICC_ReadCardSerial();
poom10490 1:8017931b98cb 67 //pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
poom10490 1:8017931b98cb 68 string str = "";
poom10490 1:8017931b98cb 69 pc.printf("\nTAG SERIAL : %X02", RfChip.uid.uidByte[0]); pc.printf(" %X02",RfChip.uid.uidByte[1]); pc.printf(" %X02",RfChip.uid.uidByte[2]); pc.printf(" %X02\n",RfChip.uid.uidByte[3]);
poom10490 1:8017931b98cb 70 uint16_t newstr = (RfChip.uid.uidByte[0] += RfChip.uid.uidByte[1]) |= 0x1010;
poom10490 1:8017931b98cb 71 pc.printf("%d\n",newstr);
poom10490 1:8017931b98cb 72 if(newstr == 145){
poom10490 1:8017931b98cb 73 pc.printf("Order B\n");
poom10490 1:8017931b98cb 74 tagRFID = "B";
poom10490 1:8017931b98cb 75 DataCode = "$B032";
poom10490 1:8017931b98cb 76 }
poom10490 1:8017931b98cb 77 if(newstr == 213){
poom10490 1:8017931b98cb 78 pc.printf("Order W\n");
poom10490 1:8017931b98cb 79 tagRFID = "W";
poom10490 1:8017931b98cb 80 DataCode = "$W402";
poom10490 1:8017931b98cb 81 }
poom10490 1:8017931b98cb 82 }
poom10490 1:8017931b98cb 83 if(tagRFID == "B"){
poom10490 1:8017931b98cb 84 float distance = DistanceI.read()*100;
poom10490 1:8017931b98cb 85 //pc.printf("%.2f",distance);
poom10490 1:8017931b98cb 86 if(distance <= 65){
poom10490 1:8017931b98cb 87 pc.printf("Distance read\n");
poom10490 1:8017931b98cb 88 allProduct += 1;
poom10490 1:8017931b98cb 89 wait(12);
poom10490 1:8017931b98cb 90 uint16_t red, green, blue;
poom10490 1:8017931b98cb 91 Color.readRedLight(red);
poom10490 1:8017931b98cb 92 Color.readGreenLight(green);
poom10490 1:8017931b98cb 93 Color.readBlueLight(blue);
poom10490 1:8017931b98cb 94 pc.printf("Red = %d\n",red);
poom10490 1:8017931b98cb 95 pc.printf("Green = %d\n",green);
poom10490 1:8017931b98cb 96 pc.printf("Blue = %d\n",blue);
poom10490 1:8017931b98cb 97 int Colors = red + green + blue;
poom10490 1:8017931b98cb 98 if(Colors >= 4 && Colors <= 6 && blue >= 1){
poom10490 1:8017931b98cb 99 pc.printf("Blue\n");
poom10490 1:8017931b98cb 100 wait(1);
poom10490 1:8017931b98cb 101 if(Proximity == 1){
poom10490 1:8017931b98cb 102 goodProduct+=1;
poom10490 1:8017931b98cb 103 }
poom10490 1:8017931b98cb 104 }
poom10490 1:8017931b98cb 105 if(Colors >= 16 && Colors <= 21){
poom10490 1:8017931b98cb 106 badProduct += 1;
poom10490 1:8017931b98cb 107 if(Proximity != 1){
poom10490 1:8017931b98cb 108 badProduct+=1;
poom10490 1:8017931b98cb 109 }
poom10490 1:8017931b98cb 110 }
poom10490 1:8017931b98cb 111 }
poom10490 1:8017931b98cb 112 }
poom10490 1:8017931b98cb 113 if(tagRFID == "W"){
poom10490 1:8017931b98cb 114 float distance = DistanceI.read()*100;
poom10490 1:8017931b98cb 115 //pc.printf("%.2f",distance);
poom10490 1:8017931b98cb 116 if(distance <= 65){
poom10490 1:8017931b98cb 117 pc.printf("Distance read\n");
poom10490 1:8017931b98cb 118 allProduct += 1;
poom10490 1:8017931b98cb 119 wait(12);
poom10490 1:8017931b98cb 120 uint16_t red, green, blue;
poom10490 1:8017931b98cb 121 Color.readRedLight(red);
poom10490 1:8017931b98cb 122 Color.readGreenLight(green);
poom10490 1:8017931b98cb 123 Color.readBlueLight(blue);
poom10490 1:8017931b98cb 124 pc.printf("Red = %d\n",red);
poom10490 1:8017931b98cb 125 pc.printf("Green = %d\n",green);
poom10490 1:8017931b98cb 126 pc.printf("Blue = %d\n",blue);
poom10490 1:8017931b98cb 127 int Colors = red + green + blue;
poom10490 1:8017931b98cb 128 if(Colors >= 20){
poom10490 1:8017931b98cb 129 pc.printf("White\n");
poom10490 1:8017931b98cb 130 wait(1);
poom10490 1:8017931b98cb 131 Proximity.read();
poom10490 1:8017931b98cb 132 //pc.printf("%d\n",Proximity.read());
poom10490 1:8017931b98cb 133 if(Proximity == 1){
poom10490 1:8017931b98cb 134 goodProduct+=1;
poom10490 1:8017931b98cb 135 }
poom10490 1:8017931b98cb 136 }
poom10490 1:8017931b98cb 137 if(Colors >= 4 && Colors <= 6 && blue >= 1){
poom10490 1:8017931b98cb 138 wait(1);
poom10490 1:8017931b98cb 139 if(Proximity != 1){
poom10490 1:8017931b98cb 140 badProduct += 1;
poom10490 1:8017931b98cb 141 }
poom10490 1:8017931b98cb 142 }
poom10490 1:8017931b98cb 143 }
poom10490 1:8017931b98cb 144 }
poom10490 1:8017931b98cb 145 int Quality = (goodProduct/allProduct)*100;
poom10490 1:8017931b98cb 146 //int Performance = RealTIme/StartTime;
poom10490 1:8017931b98cb 147 //int Ability = (goodProduct*RealTime)/StartTime;
poom10490 1:8017931b98cb 148 DataCode = DataCode + string(Quality) + string(Performance) + string(Ability);
poom10490 1:8017931b98cb 149 int len_Data;
poom10490 1:8017931b98cb 150 for(len_Data = 0;len_Data < 14;len_Data++){
poom10490 1:8017931b98cb 151 esp.putc(DataCode[i]);
poom10490 1:8017931b98cb 152 wait(0.01);
poom10490 1:8017931b98cb 153 }
poom10490 0:3854371f105a 154 }
poom10490 1:8017931b98cb 155 if(Status == 0){
poom10490 1:8017931b98cb 156 if(RfChip.PICC_IsNewCardPresent()){
poom10490 1:8017931b98cb 157 pc.printf("Card Read\n");
poom10490 1:8017931b98cb 158 RfChip.PICC_ReadCardSerial();
poom10490 1:8017931b98cb 159 //pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
poom10490 1:8017931b98cb 160 string str = "";
poom10490 1:8017931b98cb 161 pc.printf("\nTAG SERIAL : %X02", RfChip.uid.uidByte[0]); pc.printf(" %X02",RfChip.uid.uidByte[1]); pc.printf(" %X02",RfChip.uid.uidByte[2]); pc.printf(" %X02\n",RfChip.uid.uidByte[3]);
poom10490 1:8017931b98cb 162 uint16_t newstr = (RfChip.uid.uidByte[0] += RfChip.uid.uidByte[1]) |= 0x1010;
poom10490 1:8017931b98cb 163 pc.printf("%d\n",newstr);
poom10490 1:8017931b98cb 164 if(newstr == 145){
poom10490 1:8017931b98cb 165 pc.printf("Order B\n");
poom10490 1:8017931b98cb 166 tagRFID = "B";
poom10490 1:8017931b98cb 167 DataCode = "$B032";
poom10490 1:8017931b98cb 168 }
poom10490 1:8017931b98cb 169 if(newstr == 213){
poom10490 1:8017931b98cb 170 pc.printf("Order W\n");
poom10490 1:8017931b98cb 171 tagRFID = "W";
poom10490 1:8017931b98cb 172 DataCode = "$W402";
poom10490 1:8017931b98cb 173 }
poom10490 1:8017931b98cb 174 }
poom10490 1:8017931b98cb 175 if(tagRFID == "B"){
poom10490 1:8017931b98cb 176 float distance = DistanceI.read()*100;
poom10490 1:8017931b98cb 177 //pc.printf("%.2f",distance);
poom10490 1:8017931b98cb 178 if(distance <= 65){
poom10490 1:8017931b98cb 179 pc.printf("Distance read\n");
poom10490 1:8017931b98cb 180 allProduct += 1;
poom10490 1:8017931b98cb 181 wait(12);
poom10490 1:8017931b98cb 182 uint16_t red, green, blue;
poom10490 1:8017931b98cb 183 Color.readRedLight(red);
poom10490 1:8017931b98cb 184 Color.readGreenLight(green);
poom10490 1:8017931b98cb 185 Color.readBlueLight(blue);
poom10490 1:8017931b98cb 186 pc.printf("Red = %d\n",red);
poom10490 1:8017931b98cb 187 pc.printf("Green = %d\n",green);
poom10490 1:8017931b98cb 188 pc.printf("Blue = %d\n",blue);
poom10490 1:8017931b98cb 189 int Colors = red + green + blue;
poom10490 1:8017931b98cb 190 if(Colors >= 4 && Colors <= 6 && blue >= 1){
poom10490 1:8017931b98cb 191 pc.printf("Blue\n");
poom10490 1:8017931b98cb 192 wait(1);
poom10490 1:8017931b98cb 193 if(Proximity == 1){
poom10490 1:8017931b98cb 194 goodProduct+=1;
poom10490 1:8017931b98cb 195 }
poom10490 1:8017931b98cb 196 }
poom10490 1:8017931b98cb 197 if(Colors >= 16 && Colors <= 21){
poom10490 1:8017931b98cb 198 badProduct += 1;
poom10490 1:8017931b98cb 199 if(Proximity != 1){
poom10490 1:8017931b98cb 200 badProduct+=1;
poom10490 1:8017931b98cb 201 }
poom10490 1:8017931b98cb 202 }
poom10490 0:3854371f105a 203 }
poom10490 1:8017931b98cb 204 }
poom10490 1:8017931b98cb 205 if(tagRFID == "W"){
poom10490 1:8017931b98cb 206 float distance = DistanceI.read()*100;
poom10490 1:8017931b98cb 207 //pc.printf("%.2f",distance);
poom10490 1:8017931b98cb 208 if(distance <= 65){
poom10490 1:8017931b98cb 209 pc.printf("Distance read\n");
poom10490 1:8017931b98cb 210 allProduct += 1;
poom10490 1:8017931b98cb 211 wait(12);
poom10490 1:8017931b98cb 212 uint16_t red, green, blue;
poom10490 1:8017931b98cb 213 Color.readRedLight(red);
poom10490 1:8017931b98cb 214 Color.readGreenLight(green);
poom10490 1:8017931b98cb 215 Color.readBlueLight(blue);
poom10490 1:8017931b98cb 216 pc.printf("Red = %d\n",red);
poom10490 1:8017931b98cb 217 pc.printf("Green = %d\n",green);
poom10490 1:8017931b98cb 218 pc.printf("Blue = %d\n",blue);
poom10490 1:8017931b98cb 219 int Colors = red + green + blue;
poom10490 1:8017931b98cb 220 if(Colors >= 20){
poom10490 1:8017931b98cb 221 pc.printf("White\n");
poom10490 1:8017931b98cb 222 wait(1);
poom10490 1:8017931b98cb 223 Proximity.read();
poom10490 1:8017931b98cb 224 //pc.printf("%d\n",Proximity.read());
poom10490 1:8017931b98cb 225 if(Proximity == 1){
poom10490 1:8017931b98cb 226 goodProduct+=1;
poom10490 1:8017931b98cb 227 }
poom10490 1:8017931b98cb 228 }
poom10490 1:8017931b98cb 229 if(Colors >= 4 && Colors <= 6 && blue >= 1){
poom10490 1:8017931b98cb 230 wait(1);
poom10490 1:8017931b98cb 231 if(Proximity != 1){
poom10490 1:8017931b98cb 232 badProduct += 1;
poom10490 1:8017931b98cb 233 }
poom10490 1:8017931b98cb 234 }
poom10490 1:8017931b98cb 235 }
poom10490 0:3854371f105a 236 }
poom10490 1:8017931b98cb 237 int Quality = (goodProduct/allProduct)*100;
poom10490 1:8017931b98cb 238 //int Performance = RealTIme/StartTime;
poom10490 1:8017931b98cb 239 //int Ability = (goodProduct*RealTime)/StartTime;
poom10490 1:8017931b98cb 240 DataCode = DataCode + string(Quality) + string(Performance) + string(Ability);
poom10490 1:8017931b98cb 241 }//while
poom10490 1:8017931b98cb 242 }//int(main)