map

Dependencies:   mbed APDS_9960 Servo TM1636 RTC-DS1307 RC522

main.cpp

Committer:
poom10490
Date:
2018-12-18
Revision:
1:8017931b98cb
Parent:
0:3854371f105a

File content as of revision 1:8017931b98cb:

#include "mbed.h"
#include "Rtc_Ds1307.h"
#include "TM1636.h" //ClockShield
#include "glibr.h" // Color
#include "Servo.h" // Motor
#include "MFRC522.h" // RFID
#include <string>
#include <iostream>
//Serial/////////////////////////////// 
//Serial esp(D8,D2);
Serial pc(USBTX,USBRX);
//////////////////////////////////////
//Sensor//////////////////////////////
AnalogIn DistanceI(A0);
AnalogIn DistanceII(A1);
DigitalIn Proximity(D2);
glibr Color(D14,D15);//SDA, SCL
MFRC522 RfChip(D11, D12, D13, D10, D9);//MOSI, MISO, SCK, SDA, RST 
/////////////////////////////////////
//ClockShield////////////////////////
Rtc_Ds1307 rtc(D3, D6); //I2C
DigitalIn  button_K3(A5);
TM1636 tm1636(D7,D4);  

uint16_t color, red, green, blue, ambient;
string tagRFID;
//int goodProduct, badProduct, allProduct;
//int Quality = (goodProduct/allProduct)*100;
//int allProduct, goodProduct, badProduct;
float Performance, Ability;
//int8_t temp[4];
int main(){
    int8_t temp[4];
    button_K3.mode(PullUp);
    tm1636.init();
    Rtc_Ds1307::Time_rtc tm = {};
    tm.date = 1 ;
    tm.mon = 1 ;
    tm.year = 12 ;
    tm.hour = 0;
    tm.min = 0;
    tm.sec = 0;
    rtc.setTime(tm, false, false);
    rtc.startClock();
    char DataCode[];
    esp.baud(115200);
    pc.baud(115200);
    RfChip.PCD_Init();
    Color.setMode(0,1);
    Color.enableLightSensor(true);
    Color.enablePower();
    rtc.startClock();
    while(1){
            pc.printf(".");
            rtc.getTime(tm);
            pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
            temp[0] = tm.min / 10;
            temp[1] = tm.min % 10;
            temp[2] = tm.sec / 10;
            temp[3] = tm.sec % 10;                 
            tm1636.display(temp);
        int Status = pc.read()
        if(Status == 1){//Online Checking              
            if(RfChip.PICC_IsNewCardPresent()){ 
                pc.printf("Card Read\n");
                RfChip.PICC_ReadCardSerial();
                //pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
                string str = "";
                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]);
                uint16_t newstr = (RfChip.uid.uidByte[0] += RfChip.uid.uidByte[1]) |= 0x1010;
                pc.printf("%d\n",newstr);
                if(newstr == 145){
                    pc.printf("Order B\n");
                    tagRFID = "B";      
                    DataCode = "$B032";              
                }
                if(newstr == 213){
                    pc.printf("Order W\n");
                    tagRFID = "W";
                    DataCode = "$W402";
                }
            }        
            if(tagRFID == "B"){
                    float distance = DistanceI.read()*100;
                    //pc.printf("%.2f",distance);
                    if(distance <= 65){
                        pc.printf("Distance read\n");
                        allProduct += 1;
                        wait(12);
                        uint16_t red, green, blue;
                        Color.readRedLight(red);
                        Color.readGreenLight(green);
                        Color.readBlueLight(blue);
                        pc.printf("Red = %d\n",red);
                        pc.printf("Green = %d\n",green);
                        pc.printf("Blue = %d\n",blue);
                        int Colors = red + green + blue;
                            if(Colors >= 4 && Colors <= 6 && blue >= 1){
                                pc.printf("Blue\n");
                                wait(1);
                                if(Proximity == 1){
                                    goodProduct+=1;
                                }
                            }
                            if(Colors >= 16 && Colors <= 21){
                                badProduct += 1;
                                if(Proximity != 1){
                                    badProduct+=1;
                                }
                            }
                    }
                }
                if(tagRFID == "W"){
                    float distance = DistanceI.read()*100;
                    //pc.printf("%.2f",distance);
                    if(distance <= 65){
                        pc.printf("Distance read\n");
                        allProduct += 1;
                        wait(12);
                        uint16_t red, green, blue;
                        Color.readRedLight(red);
                        Color.readGreenLight(green);
                        Color.readBlueLight(blue);
                        pc.printf("Red = %d\n",red);
                        pc.printf("Green = %d\n",green);
                        pc.printf("Blue = %d\n",blue);
                        int Colors = red + green + blue;
                            if(Colors >= 20){
                                pc.printf("White\n");
                                wait(1);
                                Proximity.read();
                                //pc.printf("%d\n",Proximity.read());
                                if(Proximity == 1){
                                    goodProduct+=1;
                                }
                            }
                            if(Colors >= 4 && Colors <= 6 && blue >= 1){
                                wait(1);
                                if(Proximity != 1){
                                    badProduct += 1;
                                }
                            }
                        }                                               
                    }
                    int Quality = (goodProduct/allProduct)*100;
                    //int Performance = RealTIme/StartTime;
                    //int Ability = (goodProduct*RealTime)/StartTime;
                    DataCode = DataCode + string(Quality) + string(Performance) + string(Ability);
                    int len_Data;
                    for(len_Data = 0;len_Data < 14;len_Data++){
                        esp.putc(DataCode[i]);
                        wait(0.01);    
                    }
            }
            if(Status == 0){             
                if(RfChip.PICC_IsNewCardPresent()){ 
                    pc.printf("Card Read\n");
                    RfChip.PICC_ReadCardSerial();
                    //pc.printf("%02d:%02d:%02d\n",tm.hour,tm.min,tm.sec);
                    string str = "";
                    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]);
                    uint16_t newstr = (RfChip.uid.uidByte[0] += RfChip.uid.uidByte[1]) |= 0x1010;
                    pc.printf("%d\n",newstr);
                    if(newstr == 145){
                        pc.printf("Order B\n");
                        tagRFID = "B";      
                        DataCode = "$B032";              
                    }
                    if(newstr == 213){
                        pc.printf("Order W\n");
                        tagRFID = "W";
                        DataCode = "$W402";
                    }
                }        
                if(tagRFID == "B"){
                        float distance = DistanceI.read()*100;
                        //pc.printf("%.2f",distance);
                        if(distance <= 65){
                            pc.printf("Distance read\n");
                            allProduct += 1;
                            wait(12);
                            uint16_t red, green, blue;
                            Color.readRedLight(red);
                            Color.readGreenLight(green);
                            Color.readBlueLight(blue);
                            pc.printf("Red = %d\n",red);
                            pc.printf("Green = %d\n",green);
                            pc.printf("Blue = %d\n",blue);
                            int Colors = red + green + blue;
                                if(Colors >= 4 && Colors <= 6 && blue >= 1){
                                    pc.printf("Blue\n");
                                    wait(1);
                                    if(Proximity == 1){
                                        goodProduct+=1;
                                    }
                                }
                                if(Colors >= 16 && Colors <= 21){
                                    badProduct += 1;
                                    if(Proximity != 1){
                                        badProduct+=1;
                                    }
                                }
                        }
                    }
                    if(tagRFID == "W"){
                        float distance = DistanceI.read()*100;
                        //pc.printf("%.2f",distance);
                        if(distance <= 65){
                            pc.printf("Distance read\n");
                            allProduct += 1;
                            wait(12);
                            uint16_t red, green, blue;
                            Color.readRedLight(red);
                            Color.readGreenLight(green);
                            Color.readBlueLight(blue);
                            pc.printf("Red = %d\n",red);
                            pc.printf("Green = %d\n",green);
                            pc.printf("Blue = %d\n",blue);
                            int Colors = red + green + blue;
                                if(Colors >= 20){
                                    pc.printf("White\n");
                                    wait(1);
                                    Proximity.read();
                                    //pc.printf("%d\n",Proximity.read());
                                    if(Proximity == 1){
                                        goodProduct+=1;
                                    }
                                }
                                if(Colors >= 4 && Colors <= 6 && blue >= 1){
                                    wait(1);
                                    if(Proximity != 1){
                                        badProduct += 1;
                                    }
                                }
                            }                                               
                        }
                        int Quality = (goodProduct/allProduct)*100;
                        //int Performance = RealTIme/StartTime;
                        //int Ability = (goodProduct*RealTime)/StartTime;
                        DataCode = DataCode + string(Quality) + string(Performance) + string(Ability); 
                }//while
        }//int(main)