Mingcheng Lin / Mbed 2 deprecated TEST

Dependencies:   mbed

main.cpp

Committer:
Humberttt
Date:
2019-05-24
Revision:
1:9bafb8db5980
Parent:
0:3d3331775af2
Child:
2:eca01caa037f

File content as of revision 1:9bafb8db5980:

#include "mbed.h"
#include "stdint.h"
#include "MCP23017.h"
#include "WattBob_TextLCD.h"
#include "string"
#include "VL6180.h"
#define     BACK_LIGHT_ON(INTERFACE)    INTERFACE->write_bit(1,BL_BIT)
#define     BACK_LIGHT_OFF(INTERFACE)   INTERFACE->write_bit(0,BL_BIT)
#define IDENTIFICATIONMODEL_ID 0x0000
VL6180  TOF_sensor(I2C_SDA, I2C_SCL);
MCP23017            *par_port;
WattBob_TextLCD     *lcd;
Serial pc(PC_12,PD_2,115200);//TX,RX
//Serial pc(USBTX,USBRX,115200);//TX,RX
I2C i2c(PC_1, PC_0); //pins for I2C communication (SDA, SCL)
//
DigitalIn input1(D2);
DigitalIn input2(D3);
DigitalIn input3(D4);
DigitalIn input4(D5);

DigitalOut out1(D7);
DigitalOut out2(D8);
DigitalOut out3(D9);
int sensor_addr = 41 << 1;
#define Random(x)(rand()%x)
DigitalOut green(LED1);
int flag_Android=0;
int start_signal;
int end_signal;
int a;
void echouart1()
{
      start_signal=pc.getc();
}
void echouart2()
{
      end_signal=pc.getc();
}
string color_sensor()
{
      string y;
      char clear_reg[1] = {148};

        char clear_data[2] = {0,0};

        i2c.write(sensor_addr,clear_reg,1, true);

        i2c.read(sensor_addr,clear_data,2, false);

        

        int clear_value = ((int)clear_data[1] << 8) | clear_data[0];

        

        char red_reg[1] = {150};

        char red_data[2] = {0,0};

        i2c.write(sensor_addr,red_reg,1, true);

        i2c.read(sensor_addr,red_data,2, false);

        

        int red_value = ((int)red_data[1] << 8) | red_data[0];

       

       char green_reg[1] = {152};

       char green_data[2] = {0,0};

        i2c.write(sensor_addr,green_reg,1, true);

        i2c.read(sensor_addr,green_data,2, false);

       

       int green_value = ((int)green_data[1] << 8) | green_data[0];

        

        char blue_reg[1] = {154};

        char blue_data[2] = {0,0};

        i2c.write(sensor_addr,blue_reg,1, true);

        i2c.read(sensor_addr,blue_data,2, false);
    

        int blue_value = ((int)blue_data[1] << 8) | blue_data[0];

    //判断颜色
          if (red_value>green_value&&red_value>blue_value)
        
        y="red";
        
        else if (green_value>red_value&&green_value>blue_value)
        y="green";
    
    return y;
    }
    string color_sensors()
{
      string y;
      char clear_reg[1] = {148};

        char clear_data[2] = {0,0};

        i2c.write(sensor_addr,clear_reg,1, true);

        i2c.read(sensor_addr,clear_data,2, false);

        

        int clear_value = ((int)clear_data[1] << 8) | clear_data[0];

        

        char red_reg[1] = {150};

        char red_data[2] = {0,0};

        i2c.write(sensor_addr,red_reg,1, true);

        i2c.read(sensor_addr,red_data,2, false);

        

        int red_value = ((int)red_data[1] << 8) | red_data[0];

       

       char green_reg[1] = {152};

       char green_data[2] = {0,0};

        i2c.write(sensor_addr,green_reg,1, true);

        i2c.read(sensor_addr,green_data,2, false);

       

       int green_value = ((int)green_data[1] << 8) | green_data[0];

        

        char blue_reg[1] = {154};

        char blue_data[2] = {0,0};

        i2c.write(sensor_addr,blue_reg,1, true);

        i2c.read(sensor_addr,blue_data,2, false);
    

        int blue_value = ((int)blue_data[1] << 8) | blue_data[0];

    //判断颜色
        pc.printf("green%d red%d blue%d\n",green_value,red_value,blue_value);
    }
int main()
{
pc.baud(115200);
    
    // Connect to the Color sensor and verify whether we connected to the correct sensor. 
    
    i2c.frequency(100000);//修改为100000,否则报错
    
    char id_regval[1] = {146};
    char data[1] = {0};
    i2c.write(sensor_addr,id_regval,1, true);
    i2c.read(sensor_addr,data,1,false);
    

    // Initialize color sensor
    
    char timing_register[2] = {129,0};
    i2c.write(sensor_addr,timing_register,2,false);
    
    char control_register[2] = {143,0};
    i2c.write(sensor_addr,control_register,2,false);
    
    char enable_register[2] = {128,3};
    i2c.write(sensor_addr,enable_register,2,false);
    pc.baud(115200); 
    uint8_t dist;
//while(dist==255)
//{
// dist = TOF_sensor.getDistance();
//
//        pc.printf("d=%d", dist);
//        wait(0.2);
//        lcd->cls(); 
//        lcd->locate(0,0);
//}
/*while(mode1==0&&mode2==0)
{}
if(mode1==0&&mode2==1)
 {winscore=15;}
 else if(mode1==1&&mode2==0)
{winscore=20;}
else if(mode1==1&&mode2==1)
{winscore=25;}*/
while(1)
{

       char c=pc.getc();
       switch(c)
       {
        case'j':
        dist = TOF_sensor.getDistance();
        if(dist<100)
        {
        pc.printf("youren");
        }
        break;
        
        case'y':
        if(input3==1&&input4==0){
        wait(0.1);
        pc.printf("CN");
        }  
        else
        {
        wait(0.1);
        pc.printf("EN");
        }    
        break;
        
        case'n':
        pc.printf("%s",color_sensor()); 
        break;
        
        case'd':
        out1=0;out2=1;out3=0;
        wait(1);
        if(input1==0&&input2==1)
     {
        pc.printf("1");
     }
        else if(input1==1&&input2==0) 
     {
        pc.printf("0") ;
     }
        break;
        
        case'g':
        out1=1;out2=0;out3=0;
        wait(1);
        if(input1==1&&input2==0)
     {
        pc.printf("1");
     }
        else if(input1==0&&input2==1)
     {
        pc.printf("0") ;
     }
        break;
        
        case'l':
        out1=0;out2=0;out3=1;
        break;
        
        case'1':
        color_sensors();
        break;
        
        case'2':
        dist = TOF_sensor.getDistance();
        pc.printf("dis%d\n",dist);
        break;
    }
  }
}