map
Dependencies: mbed APDS_9960 Servo TM1636 RTC-DS1307 RC522
main.cpp@0:3854371f105a, 2018-12-18 (annotated)
- Committer:
- poom10490
- Date:
- Tue Dec 18 11:53:37 2018 +0000
- Revision:
- 0:3854371f105a
- Child:
- 1:8017931b98cb
job;
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 | 0:3854371f105a | 10 | Serial esp(D8,D2); |
poom10490 | 0:3854371f105a | 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 | 0:3854371f105a | 21 | Rtc_Ds1307 rtc(D3, D6); |
poom10490 | 0:3854371f105a | 22 | DigitalIn button_K3(A5); |
poom10490 | 0:3854371f105a | 23 | TM1636 tm1636(D7,D8); |
poom10490 | 0:3854371f105a | 24 | Serial pc(USBTX, USBRX, "pc"); |
poom10490 | 0:3854371f105a | 25 | |
poom10490 | 0:3854371f105a | 26 | uint16_t color, red, green, blue, ambient; |
poom10490 | 0:3854371f105a | 27 | string tagRFID; |
poom10490 | 0:3854371f105a | 28 | int goodProduct, badProduct, allProduct; |
poom10490 | 0:3854371f105a | 29 | float Quality; |
poom10490 | 0:3854371f105a | 30 | //int allProduct, goodProduct, badProduct; |
poom10490 | 0:3854371f105a | 31 | float Performance, Ability; |
poom10490 | 0:3854371f105a | 32 | int8_t temp[4]; |
poom10490 | 0:3854371f105a | 33 | int main(){ |
poom10490 | 0:3854371f105a | 34 | //int8_t temp[4]; |
poom10490 | 0:3854371f105a | 35 | button_K3.mode(PullUp); |
poom10490 | 0:3854371f105a | 36 | tm1636.init(); |
poom10490 | 0:3854371f105a | 37 | Rtc_Ds1307::Time_rtc tm = {}; |
poom10490 | 0:3854371f105a | 38 | tm.date = 1 ; |
poom10490 | 0:3854371f105a | 39 | tm.mon = 1 ; |
poom10490 | 0:3854371f105a | 40 | tm.year = 12 ; |
poom10490 | 0:3854371f105a | 41 | tm.hour = 0; |
poom10490 | 0:3854371f105a | 42 | tm.min = 0; |
poom10490 | 0:3854371f105a | 43 | tm.sec = 0; |
poom10490 | 0:3854371f105a | 44 | rtc.setTime(tm, false, false); |
poom10490 | 0:3854371f105a | 45 | rtc.startClock(); |
poom10490 | 0:3854371f105a | 46 | string DataCode; |
poom10490 | 0:3854371f105a | 47 | esp.baud(115200); |
poom10490 | 0:3854371f105a | 48 | pc.baud(115200); |
poom10490 | 0:3854371f105a | 49 | RfChip.PCD_Init(); |
poom10490 | 0:3854371f105a | 50 | Color.setMode(0,1); |
poom10490 | 0:3854371f105a | 51 | Color.enableLightSensor(true); |
poom10490 | 0:3854371f105a | 52 | Color.enablePower(); |
poom10490 | 0:3854371f105a | 53 | //rtc.startClock(); |
poom10490 | 0:3854371f105a | 54 | while(1){ |
poom10490 | 0:3854371f105a | 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 | 0:3854371f105a | 61 | tm1636.display(temp); |
poom10490 | 0:3854371f105a | 62 | if(RfChip.PICC_IsNewCardPresent()){ |
poom10490 | 0:3854371f105a | 63 | pc.printf("Card Read\n"); |
poom10490 | 0:3854371f105a | 64 | RfChip.PICC_ReadCardSerial(); |
poom10490 | 0:3854371f105a | 65 | pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec); |
poom10490 | 0:3854371f105a | 66 | |
poom10490 | 0:3854371f105a | 67 | string str = ""; |
poom10490 | 0:3854371f105a | 68 | 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 | 0:3854371f105a | 69 | uint16_t newstr = (RfChip.uid.uidByte[0] += RfChip.uid.uidByte[1]) |= 0x1010; |
poom10490 | 0:3854371f105a | 70 | pc.printf("%d\n",newstr); |
poom10490 | 0:3854371f105a | 71 | if(newstr == 145){ |
poom10490 | 0:3854371f105a | 72 | pc.printf("Order B\n"); |
poom10490 | 0:3854371f105a | 73 | tagRFID = "B"; |
poom10490 | 0:3854371f105a | 74 | DataCode = "$B032"; |
poom10490 | 0:3854371f105a | 75 | } |
poom10490 | 0:3854371f105a | 76 | if(newstr == 213){ |
poom10490 | 0:3854371f105a | 77 | pc.printf("Order W\n"); |
poom10490 | 0:3854371f105a | 78 | tagRFID = "W"; |
poom10490 | 0:3854371f105a | 79 | DataCode = "$W402"; |
poom10490 | 0:3854371f105a | 80 | } |
poom10490 | 0:3854371f105a | 81 | } |
poom10490 | 0:3854371f105a | 82 | if(tagRFID == "B"){ |
poom10490 | 0:3854371f105a | 83 | float distance = DistanceI.read()*100; |
poom10490 | 0:3854371f105a | 84 | //pc.printf("%.2f",distance); |
poom10490 | 0:3854371f105a | 85 | if(distance <= 65){ |
poom10490 | 0:3854371f105a | 86 | pc.printf("Distance read\n"); |
poom10490 | 0:3854371f105a | 87 | allProduct += 1; |
poom10490 | 0:3854371f105a | 88 | wait(12); |
poom10490 | 0:3854371f105a | 89 | uint16_t red, green, blue; |
poom10490 | 0:3854371f105a | 90 | Color.readRedLight(red); |
poom10490 | 0:3854371f105a | 91 | Color.readGreenLight(green); |
poom10490 | 0:3854371f105a | 92 | Color.readBlueLight(blue); |
poom10490 | 0:3854371f105a | 93 | pc.printf("Red = %d\n",red); |
poom10490 | 0:3854371f105a | 94 | pc.printf("Green = %d\n",green); |
poom10490 | 0:3854371f105a | 95 | pc.printf("Blue = %d\n",blue); |
poom10490 | 0:3854371f105a | 96 | int Colors = red + green + blue; |
poom10490 | 0:3854371f105a | 97 | if(Colors >= 4 && Colors <= 6 && blue >= 1){ |
poom10490 | 0:3854371f105a | 98 | pc.printf("Blue\n"); |
poom10490 | 0:3854371f105a | 99 | wait(1); |
poom10490 | 0:3854371f105a | 100 | if(Proximity == 1){ |
poom10490 | 0:3854371f105a | 101 | goodProduct+=1; |
poom10490 | 0:3854371f105a | 102 | } |
poom10490 | 0:3854371f105a | 103 | } |
poom10490 | 0:3854371f105a | 104 | if(Colors >= 16 && Colors <= 21){ |
poom10490 | 0:3854371f105a | 105 | badProduct += 1; |
poom10490 | 0:3854371f105a | 106 | if(Proximity != 1){ |
poom10490 | 0:3854371f105a | 107 | badProduct+=1; |
poom10490 | 0:3854371f105a | 108 | } |
poom10490 | 0:3854371f105a | 109 | } |
poom10490 | 0:3854371f105a | 110 | } |
poom10490 | 0:3854371f105a | 111 | pc.printf("%d\n",goodProduct); |
poom10490 | 0:3854371f105a | 112 | Quality = ((goodProduct-badProduct)/allProduct)*100; |
poom10490 | 0:3854371f105a | 113 | pc.printf("%.2f\n",Quality) ; |
poom10490 | 0:3854371f105a | 114 | } |
poom10490 | 0:3854371f105a | 115 | if(tagRFID == "W"){ |
poom10490 | 0:3854371f105a | 116 | float distance = DistanceI.read()*100; |
poom10490 | 0:3854371f105a | 117 | //pc.printf("%.2f",distance); |
poom10490 | 0:3854371f105a | 118 | if(distance <= 65){ |
poom10490 | 0:3854371f105a | 119 | pc.printf("Distance read\n"); |
poom10490 | 0:3854371f105a | 120 | allProduct += 1; |
poom10490 | 0:3854371f105a | 121 | wait(12); |
poom10490 | 0:3854371f105a | 122 | uint16_t red, green, blue; |
poom10490 | 0:3854371f105a | 123 | Color.readRedLight(red); |
poom10490 | 0:3854371f105a | 124 | Color.readGreenLight(green); |
poom10490 | 0:3854371f105a | 125 | Color.readBlueLight(blue); |
poom10490 | 0:3854371f105a | 126 | pc.printf("Red = %d\n",red); |
poom10490 | 0:3854371f105a | 127 | pc.printf("Green = %d\n",green); |
poom10490 | 0:3854371f105a | 128 | pc.printf("Blue = %d\n",blue); |
poom10490 | 0:3854371f105a | 129 | int Colors = red + green + blue; |
poom10490 | 0:3854371f105a | 130 | if(Colors >= 20){ |
poom10490 | 0:3854371f105a | 131 | pc.printf("White\n"); |
poom10490 | 0:3854371f105a | 132 | wait(1); |
poom10490 | 0:3854371f105a | 133 | Proximity.read(); |
poom10490 | 0:3854371f105a | 134 | pc.printf("%d\n",Proximity.read()); |
poom10490 | 0:3854371f105a | 135 | if(Proximity == 1){ |
poom10490 | 0:3854371f105a | 136 | goodProduct+=1; |
poom10490 | 0:3854371f105a | 137 | } |
poom10490 | 0:3854371f105a | 138 | } |
poom10490 | 0:3854371f105a | 139 | if(Colors >= 4 && Colors <= 6 && blue >= 1){ |
poom10490 | 0:3854371f105a | 140 | wait(1); |
poom10490 | 0:3854371f105a | 141 | if(Proximity != 1){ |
poom10490 | 0:3854371f105a | 142 | badProduct += 1; |
poom10490 | 0:3854371f105a | 143 | } |
poom10490 | 0:3854371f105a | 144 | } |
poom10490 | 0:3854371f105a | 145 | Quality = (goodProduct/allProduct)*100; |
poom10490 | 0:3854371f105a | 146 | pc.printf("%.2f\n",Quality) ; |
poom10490 | 0:3854371f105a | 147 | } |
poom10490 | 0:3854371f105a | 148 | } |
poom10490 | 0:3854371f105a | 149 | } |
poom10490 | 0:3854371f105a | 150 | } |