kjkjkjk

Dependencies:   mbed juli111

Committer:
mihaidd
Date:
Wed May 08 04:02:50 2019 +0000
Revision:
1:0c82ff54d168
Parent:
0:e7940fd49047
Child:
2:a6b8baa4e4b7
ccc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mihaidd 0:e7940fd49047 1 #include "mbed.h"
mihaidd 0:e7940fd49047 2 #include "stdint.h"
mihaidd 0:e7940fd49047 3 #include <string>
mihaidd 0:e7940fd49047 4 #include "MCP23017.h"
mihaidd 0:e7940fd49047 5 #include "WattBob_TextLCD.h"
mihaidd 0:e7940fd49047 6 #include "VL6180.h"
mihaidd 0:e7940fd49047 7
mihaidd 0:e7940fd49047 8 //Hyperterminal configuration
mihaidd 0:e7940fd49047 9 //9600 bauds, 8-bit data, no parity
mihaidd 0:e7940fd49047 10
mihaidd 0:e7940fd49047 11 //VL6180X defines
mihaidd 0:e7940fd49047 12
mihaidd 0:e7940fd49047 13 #define IDENTIFICATIONMODEL_ID 0x0000
mihaidd 0:e7940fd49047 14
mihaidd 0:e7940fd49047 15 VL6180 TOF_sensor(I2C_SDA, I2C_SCL);
mihaidd 0:e7940fd49047 16 DigitalOut myled0(LED2);
mihaidd 0:e7940fd49047 17
mihaidd 0:e7940fd49047 18 #define BACK_LIGHT_ON(INTERFACE) INTERFACE->write_bit(1,BL_BIT)
mihaidd 0:e7940fd49047 19 #define BACK_LIGHT_OFF(INTERFACE) INTERFACE->write_bit(0,BL_BIT)
mihaidd 0:e7940fd49047 20
mihaidd 0:e7940fd49047 21 MCP23017 *par_port;
mihaidd 0:e7940fd49047 22 WattBob_TextLCD *lcd;
mihaidd 0:e7940fd49047 23 Serial STM2Android(PC_4,PC_5,9600);
mihaidd 0:e7940fd49047 24 I2C i2c(PC_1, PC_0); //pins for I2C communication (SDA, SCL)
mihaidd 0:e7940fd49047 25
mihaidd 0:e7940fd49047 26 DigitalOut d(D3); //dianjide diyiwei
mihaidd 0:e7940fd49047 27 //DigitalOut j(D4); //dianjide dierwei
mihaidd 0:e7940fd49047 28
mihaidd 0:e7940fd49047 29 DigitalOut a(PC_10);//hongwaide yi
mihaidd 0:e7940fd49047 30 DigitalOut b(PC_12);//hongwaide er
mihaidd 0:e7940fd49047 31
mihaidd 0:e7940fd49047 32 int sensor_addr = 41 << 1;
mihaidd 0:e7940fd49047 33 DigitalOut green(LED1);
mihaidd 0:e7940fd49047 34
mihaidd 0:e7940fd49047 35 char flag_Android[]="";
mihaidd 0:e7940fd49047 36 char flag_Android_1[]="begin";
mihaidd 0:e7940fd49047 37
mihaidd 0:e7940fd49047 38 int main()
mihaidd 0:e7940fd49047 39 {
mihaidd 0:e7940fd49047 40 int goal_1=0;
mihaidd 0:e7940fd49047 41 int goal_2=0;
mihaidd 0:e7940fd49047 42 d=1;
mihaidd 0:e7940fd49047 43 uint8_t dist;
mihaidd 0:e7940fd49047 44 //julichuanganqi
mihaidd 0:e7940fd49047 45 par_port = new MCP23017(I2C_SDA, I2C_SCL,0x0400);
mihaidd 0:e7940fd49047 46 par_port->config(0x0F00, 0x0F00, 0x0F00); // configure MCP23017 chip on WattBob
mihaidd 0:e7940fd49047 47 lcd = new WattBob_TextLCD(par_port);
mihaidd 0:e7940fd49047 48
mihaidd 0:e7940fd49047 49
mihaidd 0:e7940fd49047 50
mihaidd 0:e7940fd49047 51 while(1)
mihaidd 0:e7940fd49047 52 {
mihaidd 0:e7940fd49047 53 STM2Android.scanf("%s",&flag_Android);
mihaidd 0:e7940fd49047 54 if(strcmp(flag_Android,flag_Android_1)==0)
mihaidd 0:e7940fd49047 55 {
mihaidd 0:e7940fd49047 56
mihaidd 0:e7940fd49047 57 dist = TOF_sensor.getDistance();
mihaidd 0:e7940fd49047 58 lcd->cls();
mihaidd 0:e7940fd49047 59 lcd->locate(0,0);
mihaidd 0:e7940fd49047 60 green = 1; // off
mihaidd 0:e7940fd49047 61 // Connect to the Color sensor and verify whether we connected to the correct sensor.
mihaidd 0:e7940fd49047 62 i2c.frequency(100000);//修改为100000,否则报错
mihaidd 0:e7940fd49047 63 char id_regval[1] = {146};
mihaidd 0:e7940fd49047 64 char data[1] = {0};
mihaidd 0:e7940fd49047 65 i2c.write(sensor_addr,id_regval,1, true);
mihaidd 0:e7940fd49047 66 i2c.read(sensor_addr,data,1,false);
mihaidd 0:e7940fd49047 67 if (data[0]==68)
mihaidd 0:e7940fd49047 68 {
mihaidd 0:e7940fd49047 69 green = 0;
mihaidd 0:e7940fd49047 70 wait (2);
mihaidd 0:e7940fd49047 71 green = 1;
mihaidd 0:e7940fd49047 72 }
mihaidd 0:e7940fd49047 73 else
mihaidd 0:e7940fd49047 74 {
mihaidd 0:e7940fd49047 75 green = 1;
mihaidd 0:e7940fd49047 76 }
mihaidd 0:e7940fd49047 77 // Initialize color sensor
mihaidd 0:e7940fd49047 78 char timing_register[2] = {129,0};
mihaidd 0:e7940fd49047 79 i2c.write(sensor_addr,timing_register,2,false);
mihaidd 0:e7940fd49047 80 char control_register[2] = {143,0};
mihaidd 0:e7940fd49047 81 i2c.write(sensor_addr,control_register,2,false);
mihaidd 0:e7940fd49047 82 char enable_register[2] = {128,3};
mihaidd 0:e7940fd49047 83 i2c.write(sensor_addr,enable_register,2,false);
mihaidd 0:e7940fd49047 84 // Read data from color sensor (Clear/Red/Green/Blue)
mihaidd 0:e7940fd49047 85 char clear_reg[1] = {148};
mihaidd 0:e7940fd49047 86 char clear_data[2] = {0,0};
mihaidd 0:e7940fd49047 87 i2c.write(sensor_addr,clear_reg,1, true);
mihaidd 0:e7940fd49047 88 i2c.read(sensor_addr,clear_data,2, false);
mihaidd 0:e7940fd49047 89 int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
mihaidd 0:e7940fd49047 90 char red_reg[1] = {150};
mihaidd 0:e7940fd49047 91 char red_data[2] = {0,0};
mihaidd 0:e7940fd49047 92 i2c.write(sensor_addr,red_reg,1, true);
mihaidd 0:e7940fd49047 93 i2c.read(sensor_addr,red_data,2, false);
mihaidd 0:e7940fd49047 94 int red_value = ((int)red_data[1] << 8) | red_data[0];
mihaidd 0:e7940fd49047 95 char green_reg[1] = {152};
mihaidd 0:e7940fd49047 96 char green_data[2] = {0,0};
mihaidd 0:e7940fd49047 97 i2c.write(sensor_addr,green_reg,1, true);
mihaidd 0:e7940fd49047 98 i2c.read(sensor_addr,green_data,2, false);
mihaidd 0:e7940fd49047 99 int green_value = ((int)green_data[1] << 8) | green_data[0];
mihaidd 0:e7940fd49047 100 char blue_reg[1] = {154};
mihaidd 0:e7940fd49047 101 char blue_data[2] = {0,0};
mihaidd 0:e7940fd49047 102 i2c.write(sensor_addr,blue_reg,1, true);
mihaidd 0:e7940fd49047 103 i2c.read(sensor_addr,blue_data,2, false);
mihaidd 0:e7940fd49047 104 int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
mihaidd 0:e7940fd49047 105 // print sensor readings
mihaidd 0:e7940fd49047 106 wait(20);
mihaidd 0:e7940fd49047 107 if (red_value>green_value&&red_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 108 {
mihaidd 0:e7940fd49047 109 STM2Android.printf("a2");//red+2
mihaidd 0:e7940fd49047 110 goal_1=2;
mihaidd 0:e7940fd49047 111 }
mihaidd 0:e7940fd49047 112 else if (green_value>red_value&&green_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 113 {
mihaidd 0:e7940fd49047 114 STM2Android.printf("a1");//green+1
mihaidd 0:e7940fd49047 115 goal_1=1;
mihaidd 0:e7940fd49047 116 }
mihaidd 0:e7940fd49047 117 else if (red_value>green_value&&red_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 118 {
mihaidd 0:e7940fd49047 119 STM2Android.printf("a0");//blue+0
mihaidd 0:e7940fd49047 120 goal_=0;
mihaidd 0:e7940fd49047 121 }
mihaidd 0:e7940fd49047 122 wait(5);
mihaidd 0:e7940fd49047 123
mihaidd 0:e7940fd49047 124
mihaidd 0:e7940fd49047 125
mihaidd 0:e7940fd49047 126
mihaidd 0:e7940fd49047 127
mihaidd 0:e7940fd49047 128 d=0;//dianjizhuandong
mihaidd 0:e7940fd49047 129 wait(10);
mihaidd 0:e7940fd49047 130 d=1;//dianjitingzhizhuandong
mihaidd 0:e7940fd49047 131 wait(2);
mihaidd 0:e7940fd49047 132
mihaidd 0:e7940fd49047 133
mihaidd 0:e7940fd49047 134
mihaidd 0:e7940fd49047 135 if (red_value>green_value&&red_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 136 {
mihaidd 0:e7940fd49047 137 STM2Android.printf("b2");//red+2
mihaidd 0:e7940fd49047 138 goal_2=2;
mihaidd 0:e7940fd49047 139 }
mihaidd 0:e7940fd49047 140 else if (green_value>red_value&&green_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 141 {
mihaidd 0:e7940fd49047 142 STM2Android.printf("b1");//green+1
mihaidd 0:e7940fd49047 143 goal_2=1;
mihaidd 0:e7940fd49047 144 }
mihaidd 0:e7940fd49047 145 else if (red_value>green_value&&red_value>blue_value) //shifoukeyiyizhichuanzhi???????????????
mihaidd 0:e7940fd49047 146 {
mihaidd 0:e7940fd49047 147 STM2Android.printf("b0");//blue+0
mihaidd 0:e7940fd49047 148 goal_2=0;
mihaidd 0:e7940fd49047 149 }
mihaidd 0:e7940fd49047 150 if(goal_1>goal_2)
mihaidd 0:e7940fd49047 151
mihaidd 1:0c82ff54d168 152 // if (a==0&&b==0) kehu=0;//yonghushibie
mihaidd 1:0c82ff54d168 153 // else if (a==0&&b==1) kehu=1;
mihaidd 1:0c82ff54d168 154 // else if (a==1&&b==0) kehu=2;
mihaidd 1:0c82ff54d168 155 // else if (a==1&&b==1) kehu=3;
mihaidd 0:e7940fd49047 156
mihaidd 0:e7940fd49047 157
mihaidd 0:e7940fd49047 158 // STM2Android.printf("aClear(%d),Red(%d),Green(%d),Blue(%d),d=(%d)\r\n", clear_value, red_value, green_value, blue_value, dist);
mihaidd 0:e7940fd49047 159 //STM2Android.printf("ad=(%d)\r\n",dist);
mihaidd 0:e7940fd49047 160 STM2Android.printf("a1");
mihaidd 0:e7940fd49047 161
mihaidd 0:e7940fd49047 162 d=0;//dianjizhuandong
mihaidd 0:e7940fd49047 163 wait(10);
mihaidd 0:e7940fd49047 164 d=1;
mihaidd 0:e7940fd49047 165
mihaidd 0:e7940fd49047 166 // d=1;
mihaidd 0:e7940fd49047 167 //wait(2);
mihaidd 0:e7940fd49047 168 }
mihaidd 0:e7940fd49047 169
mihaidd 0:e7940fd49047 170
mihaidd 0:e7940fd49047 171
mihaidd 0:e7940fd49047 172
mihaidd 0:e7940fd49047 173
mihaidd 0:e7940fd49047 174 // else{
mihaidd 0:e7940fd49047 175 //lingyigechuanganqi
mihaidd 0:e7940fd49047 176 // z=0;
mihaidd 0:e7940fd49047 177 // y=0;s=1;
mihaidd 0:e7940fd49047 178 // wait(2);
mihaidd 0:e7940fd49047 179 // y=1;s=0;
mihaidd 0:e7940fd49047 180 // wait(2);
mihaidd 0:e7940fd49047 181
mihaidd 0:e7940fd49047 182 // dist = TOF_sensor.getDistance();
mihaidd 0:e7940fd49047 183 // STM2Android.printf("d=%d", dist);
mihaidd 0:e7940fd49047 184 //wait(0.5);
mihaidd 0:e7940fd49047 185 // lcd->cls();
mihaidd 0:e7940fd49047 186 //lcd->locate(0,0);
mihaidd 0:e7940fd49047 187
mihaidd 0:e7940fd49047 188 //wait(5);
mihaidd 0:e7940fd49047 189
mihaidd 0:e7940fd49047 190 // }
mihaidd 0:e7940fd49047 191 }
mihaidd 0:e7940fd49047 192 }