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@1:9bafb8db5980, 2019-05-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |