Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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; } } }