cao yang
/
game_zuizhongban
kjkjkjk
main.cpp@1:0c82ff54d168, 2019-05-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |