Mingcheng Lin / Mbed 2 deprecated TEST

Dependencies:   mbed

Committer:
Humberttt
Date:
Fri May 24 13:11:44 2019 +0000
Revision:
1:9bafb8db5980
Parent:
0:3d3331775af2
Child:
2:eca01caa037f
xidian

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mrweilun 0:3d3331775af2 1 #include "mbed.h"
mrweilun 0:3d3331775af2 2 #include "stdint.h"
mrweilun 0:3d3331775af2 3 #include "MCP23017.h"
mrweilun 0:3d3331775af2 4 #include "WattBob_TextLCD.h"
Humberttt 1:9bafb8db5980 5 #include "string"
mrweilun 0:3d3331775af2 6 #include "VL6180.h"
mrweilun 0:3d3331775af2 7 #define BACK_LIGHT_ON(INTERFACE) INTERFACE->write_bit(1,BL_BIT)
mrweilun 0:3d3331775af2 8 #define BACK_LIGHT_OFF(INTERFACE) INTERFACE->write_bit(0,BL_BIT)
mrweilun 0:3d3331775af2 9 #define IDENTIFICATIONMODEL_ID 0x0000
mrweilun 0:3d3331775af2 10 VL6180 TOF_sensor(I2C_SDA, I2C_SCL);
mrweilun 0:3d3331775af2 11 MCP23017 *par_port;
mrweilun 0:3d3331775af2 12 WattBob_TextLCD *lcd;
Humberttt 1:9bafb8db5980 13 Serial pc(PC_12,PD_2,115200);//TX,RX
Humberttt 1:9bafb8db5980 14 //Serial pc(USBTX,USBRX,115200);//TX,RX
mrweilun 0:3d3331775af2 15 I2C i2c(PC_1, PC_0); //pins for I2C communication (SDA, SCL)
Humberttt 1:9bafb8db5980 16 //
Humberttt 1:9bafb8db5980 17 DigitalIn input1(D2);
Humberttt 1:9bafb8db5980 18 DigitalIn input2(D3);
Humberttt 1:9bafb8db5980 19 DigitalIn input3(D4);
Humberttt 1:9bafb8db5980 20 DigitalIn input4(D5);
Humberttt 1:9bafb8db5980 21
Humberttt 1:9bafb8db5980 22 DigitalOut out1(D7);
Humberttt 1:9bafb8db5980 23 DigitalOut out2(D8);
Humberttt 1:9bafb8db5980 24 DigitalOut out3(D9);
mrweilun 0:3d3331775af2 25 int sensor_addr = 41 << 1;
mrweilun 0:3d3331775af2 26 #define Random(x)(rand()%x)
mrweilun 0:3d3331775af2 27 DigitalOut green(LED1);
mrweilun 0:3d3331775af2 28 int flag_Android=0;
mrweilun 0:3d3331775af2 29 int start_signal;
mrweilun 0:3d3331775af2 30 int end_signal;
mrweilun 0:3d3331775af2 31 int a;
mrweilun 0:3d3331775af2 32 void echouart1()
mrweilun 0:3d3331775af2 33 {
mrweilun 0:3d3331775af2 34 start_signal=pc.getc();
mrweilun 0:3d3331775af2 35 }
mrweilun 0:3d3331775af2 36 void echouart2()
mrweilun 0:3d3331775af2 37 {
mrweilun 0:3d3331775af2 38 end_signal=pc.getc();
mrweilun 0:3d3331775af2 39 }
Humberttt 1:9bafb8db5980 40 string color_sensor()
mrweilun 0:3d3331775af2 41 {
Humberttt 1:9bafb8db5980 42 string y;
mrweilun 0:3d3331775af2 43 char clear_reg[1] = {148};
mrweilun 0:3d3331775af2 44
mrweilun 0:3d3331775af2 45 char clear_data[2] = {0,0};
mrweilun 0:3d3331775af2 46
mrweilun 0:3d3331775af2 47 i2c.write(sensor_addr,clear_reg,1, true);
mrweilun 0:3d3331775af2 48
mrweilun 0:3d3331775af2 49 i2c.read(sensor_addr,clear_data,2, false);
mrweilun 0:3d3331775af2 50
mrweilun 0:3d3331775af2 51
mrweilun 0:3d3331775af2 52
mrweilun 0:3d3331775af2 53 int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
mrweilun 0:3d3331775af2 54
mrweilun 0:3d3331775af2 55
mrweilun 0:3d3331775af2 56
mrweilun 0:3d3331775af2 57 char red_reg[1] = {150};
mrweilun 0:3d3331775af2 58
mrweilun 0:3d3331775af2 59 char red_data[2] = {0,0};
mrweilun 0:3d3331775af2 60
mrweilun 0:3d3331775af2 61 i2c.write(sensor_addr,red_reg,1, true);
mrweilun 0:3d3331775af2 62
mrweilun 0:3d3331775af2 63 i2c.read(sensor_addr,red_data,2, false);
mrweilun 0:3d3331775af2 64
mrweilun 0:3d3331775af2 65
mrweilun 0:3d3331775af2 66
mrweilun 0:3d3331775af2 67 int red_value = ((int)red_data[1] << 8) | red_data[0];
mrweilun 0:3d3331775af2 68
mrweilun 0:3d3331775af2 69
mrweilun 0:3d3331775af2 70
mrweilun 0:3d3331775af2 71 char green_reg[1] = {152};
mrweilun 0:3d3331775af2 72
mrweilun 0:3d3331775af2 73 char green_data[2] = {0,0};
mrweilun 0:3d3331775af2 74
mrweilun 0:3d3331775af2 75 i2c.write(sensor_addr,green_reg,1, true);
mrweilun 0:3d3331775af2 76
mrweilun 0:3d3331775af2 77 i2c.read(sensor_addr,green_data,2, false);
mrweilun 0:3d3331775af2 78
mrweilun 0:3d3331775af2 79
mrweilun 0:3d3331775af2 80
mrweilun 0:3d3331775af2 81 int green_value = ((int)green_data[1] << 8) | green_data[0];
mrweilun 0:3d3331775af2 82
mrweilun 0:3d3331775af2 83
mrweilun 0:3d3331775af2 84
mrweilun 0:3d3331775af2 85 char blue_reg[1] = {154};
mrweilun 0:3d3331775af2 86
mrweilun 0:3d3331775af2 87 char blue_data[2] = {0,0};
mrweilun 0:3d3331775af2 88
mrweilun 0:3d3331775af2 89 i2c.write(sensor_addr,blue_reg,1, true);
mrweilun 0:3d3331775af2 90
mrweilun 0:3d3331775af2 91 i2c.read(sensor_addr,blue_data,2, false);
mrweilun 0:3d3331775af2 92
mrweilun 0:3d3331775af2 93
mrweilun 0:3d3331775af2 94 int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
mrweilun 0:3d3331775af2 95
mrweilun 0:3d3331775af2 96 //判断颜色
mrweilun 0:3d3331775af2 97 if (red_value>green_value&&red_value>blue_value)
mrweilun 0:3d3331775af2 98
Humberttt 1:9bafb8db5980 99 y="red";
mrweilun 0:3d3331775af2 100
mrweilun 0:3d3331775af2 101 else if (green_value>red_value&&green_value>blue_value)
Humberttt 1:9bafb8db5980 102 y="green";
Humberttt 1:9bafb8db5980 103
Humberttt 1:9bafb8db5980 104 return y;
Humberttt 1:9bafb8db5980 105 }
Humberttt 1:9bafb8db5980 106 string color_sensors()
Humberttt 1:9bafb8db5980 107 {
Humberttt 1:9bafb8db5980 108 string y;
Humberttt 1:9bafb8db5980 109 char clear_reg[1] = {148};
Humberttt 1:9bafb8db5980 110
Humberttt 1:9bafb8db5980 111 char clear_data[2] = {0,0};
Humberttt 1:9bafb8db5980 112
Humberttt 1:9bafb8db5980 113 i2c.write(sensor_addr,clear_reg,1, true);
Humberttt 1:9bafb8db5980 114
Humberttt 1:9bafb8db5980 115 i2c.read(sensor_addr,clear_data,2, false);
Humberttt 1:9bafb8db5980 116
Humberttt 1:9bafb8db5980 117
Humberttt 1:9bafb8db5980 118
Humberttt 1:9bafb8db5980 119 int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
Humberttt 1:9bafb8db5980 120
Humberttt 1:9bafb8db5980 121
Humberttt 1:9bafb8db5980 122
Humberttt 1:9bafb8db5980 123 char red_reg[1] = {150};
Humberttt 1:9bafb8db5980 124
Humberttt 1:9bafb8db5980 125 char red_data[2] = {0,0};
Humberttt 1:9bafb8db5980 126
Humberttt 1:9bafb8db5980 127 i2c.write(sensor_addr,red_reg,1, true);
Humberttt 1:9bafb8db5980 128
Humberttt 1:9bafb8db5980 129 i2c.read(sensor_addr,red_data,2, false);
Humberttt 1:9bafb8db5980 130
mrweilun 0:3d3331775af2 131
Humberttt 1:9bafb8db5980 132
Humberttt 1:9bafb8db5980 133 int red_value = ((int)red_data[1] << 8) | red_data[0];
Humberttt 1:9bafb8db5980 134
Humberttt 1:9bafb8db5980 135
Humberttt 1:9bafb8db5980 136
Humberttt 1:9bafb8db5980 137 char green_reg[1] = {152};
Humberttt 1:9bafb8db5980 138
Humberttt 1:9bafb8db5980 139 char green_data[2] = {0,0};
Humberttt 1:9bafb8db5980 140
Humberttt 1:9bafb8db5980 141 i2c.write(sensor_addr,green_reg,1, true);
Humberttt 1:9bafb8db5980 142
Humberttt 1:9bafb8db5980 143 i2c.read(sensor_addr,green_data,2, false);
Humberttt 1:9bafb8db5980 144
Humberttt 1:9bafb8db5980 145
Humberttt 1:9bafb8db5980 146
Humberttt 1:9bafb8db5980 147 int green_value = ((int)green_data[1] << 8) | green_data[0];
Humberttt 1:9bafb8db5980 148
Humberttt 1:9bafb8db5980 149
Humberttt 1:9bafb8db5980 150
Humberttt 1:9bafb8db5980 151 char blue_reg[1] = {154};
Humberttt 1:9bafb8db5980 152
Humberttt 1:9bafb8db5980 153 char blue_data[2] = {0,0};
Humberttt 1:9bafb8db5980 154
Humberttt 1:9bafb8db5980 155 i2c.write(sensor_addr,blue_reg,1, true);
Humberttt 1:9bafb8db5980 156
Humberttt 1:9bafb8db5980 157 i2c.read(sensor_addr,blue_data,2, false);
mrweilun 0:3d3331775af2 158
Humberttt 1:9bafb8db5980 159
Humberttt 1:9bafb8db5980 160 int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
Humberttt 1:9bafb8db5980 161
Humberttt 1:9bafb8db5980 162 //判断颜色
Humberttt 1:9bafb8db5980 163 pc.printf("green%d red%d blue%d\n",green_value,red_value,blue_value);
mrweilun 0:3d3331775af2 164 }
mrweilun 0:3d3331775af2 165 int main()
mrweilun 0:3d3331775af2 166 {
Humberttt 1:9bafb8db5980 167 pc.baud(115200);
mrweilun 0:3d3331775af2 168
mrweilun 0:3d3331775af2 169 // Connect to the Color sensor and verify whether we connected to the correct sensor.
mrweilun 0:3d3331775af2 170
mrweilun 0:3d3331775af2 171 i2c.frequency(100000);//修改为100000,否则报错
mrweilun 0:3d3331775af2 172
mrweilun 0:3d3331775af2 173 char id_regval[1] = {146};
mrweilun 0:3d3331775af2 174 char data[1] = {0};
mrweilun 0:3d3331775af2 175 i2c.write(sensor_addr,id_regval,1, true);
mrweilun 0:3d3331775af2 176 i2c.read(sensor_addr,data,1,false);
mrweilun 0:3d3331775af2 177
mrweilun 0:3d3331775af2 178
mrweilun 0:3d3331775af2 179 // Initialize color sensor
mrweilun 0:3d3331775af2 180
mrweilun 0:3d3331775af2 181 char timing_register[2] = {129,0};
mrweilun 0:3d3331775af2 182 i2c.write(sensor_addr,timing_register,2,false);
mrweilun 0:3d3331775af2 183
mrweilun 0:3d3331775af2 184 char control_register[2] = {143,0};
mrweilun 0:3d3331775af2 185 i2c.write(sensor_addr,control_register,2,false);
mrweilun 0:3d3331775af2 186
mrweilun 0:3d3331775af2 187 char enable_register[2] = {128,3};
mrweilun 0:3d3331775af2 188 i2c.write(sensor_addr,enable_register,2,false);
Humberttt 1:9bafb8db5980 189 pc.baud(115200);
mrweilun 0:3d3331775af2 190 uint8_t dist;
Humberttt 1:9bafb8db5980 191 //while(dist==255)
Humberttt 1:9bafb8db5980 192 //{
Humberttt 1:9bafb8db5980 193 // dist = TOF_sensor.getDistance();
Humberttt 1:9bafb8db5980 194 //
Humberttt 1:9bafb8db5980 195 // pc.printf("d=%d", dist);
Humberttt 1:9bafb8db5980 196 // wait(0.2);
Humberttt 1:9bafb8db5980 197 // lcd->cls();
Humberttt 1:9bafb8db5980 198 // lcd->locate(0,0);
Humberttt 1:9bafb8db5980 199 //}
mrweilun 0:3d3331775af2 200 /*while(mode1==0&&mode2==0)
mrweilun 0:3d3331775af2 201 {}
mrweilun 0:3d3331775af2 202 if(mode1==0&&mode2==1)
mrweilun 0:3d3331775af2 203 {winscore=15;}
mrweilun 0:3d3331775af2 204 else if(mode1==1&&mode2==0)
mrweilun 0:3d3331775af2 205 {winscore=20;}
mrweilun 0:3d3331775af2 206 else if(mode1==1&&mode2==1)
mrweilun 0:3d3331775af2 207 {winscore=25;}*/
mrweilun 0:3d3331775af2 208 while(1)
mrweilun 0:3d3331775af2 209 {
Humberttt 1:9bafb8db5980 210
Humberttt 1:9bafb8db5980 211 char c=pc.getc();
Humberttt 1:9bafb8db5980 212 switch(c)
mrweilun 0:3d3331775af2 213 {
Humberttt 1:9bafb8db5980 214 case'j':
Humberttt 1:9bafb8db5980 215 dist = TOF_sensor.getDistance();
Humberttt 1:9bafb8db5980 216 if(dist<100)
mrweilun 0:3d3331775af2 217 {
Humberttt 1:9bafb8db5980 218 pc.printf("youren");
mrweilun 0:3d3331775af2 219 }
Humberttt 1:9bafb8db5980 220 break;
Humberttt 1:9bafb8db5980 221
Humberttt 1:9bafb8db5980 222 case'y':
Humberttt 1:9bafb8db5980 223 if(input3==1&&input4==0){
Humberttt 1:9bafb8db5980 224 wait(0.1);
Humberttt 1:9bafb8db5980 225 pc.printf("CN");
Humberttt 1:9bafb8db5980 226 }
Humberttt 1:9bafb8db5980 227 else
mrweilun 0:3d3331775af2 228 {
Humberttt 1:9bafb8db5980 229 wait(0.1);
Humberttt 1:9bafb8db5980 230 pc.printf("EN");
Humberttt 1:9bafb8db5980 231 }
Humberttt 1:9bafb8db5980 232 break;
Humberttt 1:9bafb8db5980 233
Humberttt 1:9bafb8db5980 234 case'n':
Humberttt 1:9bafb8db5980 235 pc.printf("%s",color_sensor());
Humberttt 1:9bafb8db5980 236 break;
Humberttt 1:9bafb8db5980 237
Humberttt 1:9bafb8db5980 238 case'd':
Humberttt 1:9bafb8db5980 239 out1=0;out2=1;out3=0;
Humberttt 1:9bafb8db5980 240 wait(1);
Humberttt 1:9bafb8db5980 241 if(input1==0&&input2==1)
Humberttt 1:9bafb8db5980 242 {
Humberttt 1:9bafb8db5980 243 pc.printf("1");
Humberttt 1:9bafb8db5980 244 }
Humberttt 1:9bafb8db5980 245 else if(input1==1&&input2==0)
Humberttt 1:9bafb8db5980 246 {
Humberttt 1:9bafb8db5980 247 pc.printf("0") ;
Humberttt 1:9bafb8db5980 248 }
Humberttt 1:9bafb8db5980 249 break;
Humberttt 1:9bafb8db5980 250
Humberttt 1:9bafb8db5980 251 case'g':
Humberttt 1:9bafb8db5980 252 out1=1;out2=0;out3=0;
Humberttt 1:9bafb8db5980 253 wait(1);
Humberttt 1:9bafb8db5980 254 if(input1==1&&input2==0)
Humberttt 1:9bafb8db5980 255 {
Humberttt 1:9bafb8db5980 256 pc.printf("1");
Humberttt 1:9bafb8db5980 257 }
Humberttt 1:9bafb8db5980 258 else if(input1==0&&input2==1)
Humberttt 1:9bafb8db5980 259 {
Humberttt 1:9bafb8db5980 260 pc.printf("0") ;
Humberttt 1:9bafb8db5980 261 }
Humberttt 1:9bafb8db5980 262 break;
Humberttt 1:9bafb8db5980 263
Humberttt 1:9bafb8db5980 264 case'l':
Humberttt 1:9bafb8db5980 265 out1=0;out2=0;out3=1;
Humberttt 1:9bafb8db5980 266 break;
Humberttt 1:9bafb8db5980 267
Humberttt 1:9bafb8db5980 268 case'1':
Humberttt 1:9bafb8db5980 269 color_sensors();
Humberttt 1:9bafb8db5980 270 break;
Humberttt 1:9bafb8db5980 271
Humberttt 1:9bafb8db5980 272 case'2':
Humberttt 1:9bafb8db5980 273 dist = TOF_sensor.getDistance();
Humberttt 1:9bafb8db5980 274 pc.printf("dis%d\n",dist);
Humberttt 1:9bafb8db5980 275 break;
mrweilun 0:3d3331775af2 276 }
mrweilun 0:3d3331775af2 277 }
mrweilun 0:3d3331775af2 278 }