map
Dependencies: mbed APDS_9960 Servo TM1636 RTC-DS1307 RC522
main.cpp@1:8017931b98cb, 2018-12-18 (annotated)
- Committer:
- poom10490
- Date:
- Tue Dec 18 21:57:09 2018 +0000
- Revision:
- 1:8017931b98cb
- Parent:
- 0:3854371f105a
map
Who changed what in which revision?
User | Revision | Line number | New 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) |