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:8d53c6fe8815, 2019-05-12 (annotated)
- Committer:
- mrweilun
- Date:
- Sun May 12 11:02:13 2019 +0000
- Revision:
- 1:8d53c6fe8815
- Parent:
- 0:3d3331775af2
dasda
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" |
| mrweilun | 0:3d3331775af2 | 5 | #include "VL6180.h" |
| mrweilun | 1:8d53c6fe8815 | 6 | #include "time.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; |
| mrweilun | 0:3d3331775af2 | 13 | Serial pc(A0,A1,9600);//TX,RX |
| mrweilun | 0:3d3331775af2 | 14 | I2C i2c(PC_1, PC_0); //pins for I2C communication (SDA, SCL) |
| mrweilun | 0:3d3331775af2 | 15 | int sensor_addr = 41 << 1; |
| mrweilun | 1:8d53c6fe8815 | 16 | //#define Random(x) (rand()%x) |
| mrweilun | 1:8d53c6fe8815 | 17 | DigitalOut led(LED2); |
| mrweilun | 0:3d3331775af2 | 18 | int flag_Android=0; |
| mrweilun | 0:3d3331775af2 | 19 | DigitalOut pwm1(D6); |
| mrweilun | 0:3d3331775af2 | 20 | DigitalOut pwm2(D7); |
| mrweilun | 0:3d3331775af2 | 21 | DigitalOut pwm3(D8); |
| mrweilun | 1:8d53c6fe8815 | 22 | DigitalIn mode1(D0); |
| mrweilun | 1:8d53c6fe8815 | 23 | DigitalIn mode2(D1); |
| mrweilun | 0:3d3331775af2 | 24 | int start_signal; |
| mrweilun | 0:3d3331775af2 | 25 | int end_signal; |
| mrweilun | 0:3d3331775af2 | 26 | int a; |
| mrweilun | 1:8d53c6fe8815 | 27 | |
| mrweilun | 1:8d53c6fe8815 | 28 | |
| mrweilun | 1:8d53c6fe8815 | 29 | /*void echouart1() |
| mrweilun | 0:3d3331775af2 | 30 | { |
| mrweilun | 0:3d3331775af2 | 31 | start_signal=pc.getc(); |
| mrweilun | 0:3d3331775af2 | 32 | } |
| mrweilun | 0:3d3331775af2 | 33 | void echouart2() |
| mrweilun | 0:3d3331775af2 | 34 | { |
| mrweilun | 0:3d3331775af2 | 35 | end_signal=pc.getc(); |
| mrweilun | 1:8d53c6fe8815 | 36 | }*/ |
| mrweilun | 0:3d3331775af2 | 37 | int color_sensor() |
| mrweilun | 0:3d3331775af2 | 38 | { |
| mrweilun | 1:8d53c6fe8815 | 39 | int customer_card=0; |
| mrweilun | 0:3d3331775af2 | 40 | char clear_reg[1] = {148}; |
| mrweilun | 0:3d3331775af2 | 41 | |
| mrweilun | 0:3d3331775af2 | 42 | char clear_data[2] = {0,0}; |
| mrweilun | 0:3d3331775af2 | 43 | |
| mrweilun | 0:3d3331775af2 | 44 | i2c.write(sensor_addr,clear_reg,1, true); |
| mrweilun | 0:3d3331775af2 | 45 | |
| mrweilun | 0:3d3331775af2 | 46 | i2c.read(sensor_addr,clear_data,2, false); |
| mrweilun | 0:3d3331775af2 | 47 | |
| mrweilun | 0:3d3331775af2 | 48 | |
| mrweilun | 0:3d3331775af2 | 49 | |
| mrweilun | 0:3d3331775af2 | 50 | int clear_value = ((int)clear_data[1] << 8) | clear_data[0]; |
| mrweilun | 0:3d3331775af2 | 51 | |
| mrweilun | 0:3d3331775af2 | 52 | |
| mrweilun | 0:3d3331775af2 | 53 | |
| mrweilun | 0:3d3331775af2 | 54 | char red_reg[1] = {150}; |
| mrweilun | 0:3d3331775af2 | 55 | |
| mrweilun | 0:3d3331775af2 | 56 | char red_data[2] = {0,0}; |
| mrweilun | 0:3d3331775af2 | 57 | |
| mrweilun | 0:3d3331775af2 | 58 | i2c.write(sensor_addr,red_reg,1, true); |
| mrweilun | 0:3d3331775af2 | 59 | |
| mrweilun | 0:3d3331775af2 | 60 | i2c.read(sensor_addr,red_data,2, false); |
| mrweilun | 0:3d3331775af2 | 61 | |
| mrweilun | 0:3d3331775af2 | 62 | |
| mrweilun | 0:3d3331775af2 | 63 | |
| mrweilun | 0:3d3331775af2 | 64 | int red_value = ((int)red_data[1] << 8) | red_data[0]; |
| mrweilun | 0:3d3331775af2 | 65 | |
| mrweilun | 0:3d3331775af2 | 66 | |
| mrweilun | 0:3d3331775af2 | 67 | |
| mrweilun | 0:3d3331775af2 | 68 | char green_reg[1] = {152}; |
| mrweilun | 0:3d3331775af2 | 69 | |
| mrweilun | 0:3d3331775af2 | 70 | char green_data[2] = {0,0}; |
| mrweilun | 0:3d3331775af2 | 71 | |
| mrweilun | 0:3d3331775af2 | 72 | i2c.write(sensor_addr,green_reg,1, true); |
| mrweilun | 0:3d3331775af2 | 73 | |
| mrweilun | 0:3d3331775af2 | 74 | i2c.read(sensor_addr,green_data,2, false); |
| mrweilun | 0:3d3331775af2 | 75 | |
| mrweilun | 0:3d3331775af2 | 76 | |
| mrweilun | 0:3d3331775af2 | 77 | |
| mrweilun | 0:3d3331775af2 | 78 | int green_value = ((int)green_data[1] << 8) | green_data[0]; |
| mrweilun | 0:3d3331775af2 | 79 | |
| mrweilun | 0:3d3331775af2 | 80 | |
| mrweilun | 0:3d3331775af2 | 81 | |
| mrweilun | 0:3d3331775af2 | 82 | char blue_reg[1] = {154}; |
| mrweilun | 0:3d3331775af2 | 83 | |
| mrweilun | 0:3d3331775af2 | 84 | char blue_data[2] = {0,0}; |
| mrweilun | 0:3d3331775af2 | 85 | |
| mrweilun | 0:3d3331775af2 | 86 | i2c.write(sensor_addr,blue_reg,1, true); |
| mrweilun | 0:3d3331775af2 | 87 | |
| mrweilun | 0:3d3331775af2 | 88 | i2c.read(sensor_addr,blue_data,2, false); |
| mrweilun | 0:3d3331775af2 | 89 | |
| mrweilun | 0:3d3331775af2 | 90 | |
| mrweilun | 0:3d3331775af2 | 91 | int blue_value = ((int)blue_data[1] << 8) | blue_data[0]; |
| mrweilun | 0:3d3331775af2 | 92 | |
| mrweilun | 0:3d3331775af2 | 93 | //判断颜色 |
| mrweilun | 1:8d53c6fe8815 | 94 | while(customer_card==0) |
| mrweilun | 1:8d53c6fe8815 | 95 | { |
| mrweilun | 1:8d53c6fe8815 | 96 | i2c.write(sensor_addr,red_reg,1, true); |
| mrweilun | 1:8d53c6fe8815 | 97 | |
| mrweilun | 1:8d53c6fe8815 | 98 | i2c.read(sensor_addr,red_data,2, false); |
| mrweilun | 1:8d53c6fe8815 | 99 | i2c.write(sensor_addr,green_reg,1, true); |
| mrweilun | 1:8d53c6fe8815 | 100 | |
| mrweilun | 1:8d53c6fe8815 | 101 | i2c.read(sensor_addr,green_data,2, false); |
| mrweilun | 1:8d53c6fe8815 | 102 | i2c.write(sensor_addr,blue_reg,1, true); |
| mrweilun | 1:8d53c6fe8815 | 103 | |
| mrweilun | 1:8d53c6fe8815 | 104 | i2c.read(sensor_addr,blue_data,2, false); |
| mrweilun | 1:8d53c6fe8815 | 105 | if (red_value>green_value&&red_value>blue_value) |
| mrweilun | 0:3d3331775af2 | 106 | customer_card=-2; |
| mrweilun | 0:3d3331775af2 | 107 | |
| mrweilun | 0:3d3331775af2 | 108 | |
| mrweilun | 0:3d3331775af2 | 109 | else if (green_value>red_value&&green_value>blue_value) |
| mrweilun | 0:3d3331775af2 | 110 | customer_card=1; |
| mrweilun | 0:3d3331775af2 | 111 | |
| mrweilun | 0:3d3331775af2 | 112 | else if (blue_value>red_value&&blue_value>green_value) |
| mrweilun | 0:3d3331775af2 | 113 | customer_card=2; |
| mrweilun | 1:8d53c6fe8815 | 114 | } |
| mrweilun | 0:3d3331775af2 | 115 | |
| mrweilun | 0:3d3331775af2 | 116 | return customer_card; |
| mrweilun | 0:3d3331775af2 | 117 | } |
| mrweilun | 0:3d3331775af2 | 118 | int main() |
| mrweilun | 0:3d3331775af2 | 119 | { |
| mrweilun | 0:3d3331775af2 | 120 | pc.baud(9600); |
| mrweilun | 0:3d3331775af2 | 121 | |
| mrweilun | 0:3d3331775af2 | 122 | // Connect to the Color sensor and verify whether we connected to the correct sensor. |
| mrweilun | 0:3d3331775af2 | 123 | |
| mrweilun | 0:3d3331775af2 | 124 | i2c.frequency(100000);//修改为100000,否则报错 |
| mrweilun | 0:3d3331775af2 | 125 | |
| mrweilun | 0:3d3331775af2 | 126 | char id_regval[1] = {146}; |
| mrweilun | 0:3d3331775af2 | 127 | char data[1] = {0}; |
| mrweilun | 0:3d3331775af2 | 128 | i2c.write(sensor_addr,id_regval,1, true); |
| mrweilun | 0:3d3331775af2 | 129 | i2c.read(sensor_addr,data,1,false); |
| mrweilun | 0:3d3331775af2 | 130 | |
| mrweilun | 0:3d3331775af2 | 131 | |
| mrweilun | 0:3d3331775af2 | 132 | // Initialize color sensor |
| mrweilun | 0:3d3331775af2 | 133 | |
| mrweilun | 0:3d3331775af2 | 134 | char timing_register[2] = {129,0}; |
| mrweilun | 0:3d3331775af2 | 135 | i2c.write(sensor_addr,timing_register,2,false); |
| mrweilun | 0:3d3331775af2 | 136 | |
| mrweilun | 0:3d3331775af2 | 137 | char control_register[2] = {143,0}; |
| mrweilun | 0:3d3331775af2 | 138 | i2c.write(sensor_addr,control_register,2,false); |
| mrweilun | 0:3d3331775af2 | 139 | |
| mrweilun | 0:3d3331775af2 | 140 | char enable_register[2] = {128,3}; |
| mrweilun | 0:3d3331775af2 | 141 | i2c.write(sensor_addr,enable_register,2,false); |
| mrweilun | 0:3d3331775af2 | 142 | pc.baud(9600); |
| mrweilun | 0:3d3331775af2 | 143 | uint8_t dist; |
| mrweilun | 1:8d53c6fe8815 | 144 | par_port = new MCP23017(I2C_SDA, I2C_SCL,0x0400); |
| mrweilun | 0:3d3331775af2 | 145 | par_port->config(0x0F00, 0x0F00, 0x0F00); // configure MCP23017 chip on WattBob |
| mrweilun | 0:3d3331775af2 | 146 | |
| mrweilun | 0:3d3331775af2 | 147 | lcd = new WattBob_TextLCD(par_port); |
| mrweilun | 0:3d3331775af2 | 148 | int winscore; |
| mrweilun | 1:8d53c6fe8815 | 149 | /* for(;;) |
| mrweilun | 1:8d53c6fe8815 | 150 | { |
| mrweilun | 1:8d53c6fe8815 | 151 | dist = TOF_sensor.getDistance(); |
| mrweilun | 1:8d53c6fe8815 | 152 | |
| mrweilun | 1:8d53c6fe8815 | 153 | |
| mrweilun | 1:8d53c6fe8815 | 154 | wait_ms(100); |
| mrweilun | 1:8d53c6fe8815 | 155 | lcd->cls(); |
| mrweilun | 1:8d53c6fe8815 | 156 | lcd->locate(0,0); |
| mrweilun | 1:8d53c6fe8815 | 157 | if(dist==!255) |
| mrweilun | 1:8d53c6fe8815 | 158 | { |
| mrweilun | 1:8d53c6fe8815 | 159 | pc.printf("d=%d ", dist); |
| mrweilun | 1:8d53c6fe8815 | 160 | pc.printf("ready"); |
| mrweilun | 1:8d53c6fe8815 | 161 | break;} |
| mrweilun | 1:8d53c6fe8815 | 162 | }*/ |
| mrweilun | 1:8d53c6fe8815 | 163 | dist = TOF_sensor.getDistance(); |
| mrweilun | 1:8d53c6fe8815 | 164 | while(dist==255) |
| mrweilun | 1:8d53c6fe8815 | 165 | { dist = TOF_sensor.getDistance(); |
| mrweilun | 1:8d53c6fe8815 | 166 | |
| mrweilun | 1:8d53c6fe8815 | 167 | lcd->cls(); |
| mrweilun | 1:8d53c6fe8815 | 168 | lcd->locate(0,0);} |
| mrweilun | 1:8d53c6fe8815 | 169 | pc.printf("ready ", dist); |
| mrweilun | 1:8d53c6fe8815 | 170 | |
| mrweilun | 1:8d53c6fe8815 | 171 | /*while(1) |
| mrweilun | 0:3d3331775af2 | 172 | { |
| mrweilun | 0:3d3331775af2 | 173 | dist = TOF_sensor.getDistance(); |
| mrweilun | 1:8d53c6fe8815 | 174 | if(dist==!255) |
| mrweilun | 1:8d53c6fe8815 | 175 | { |
| mrweilun | 1:8d53c6fe8815 | 176 | dist = TOF_sensor.getDistance(); |
| mrweilun | 1:8d53c6fe8815 | 177 | pc.printf("%d",dist); |
| mrweilun | 1:8d53c6fe8815 | 178 | pc.printf("Ready"); |
| mrweilun | 0:3d3331775af2 | 179 | wait(0.2); |
| mrweilun | 0:3d3331775af2 | 180 | lcd->cls(); |
| mrweilun | 0:3d3331775af2 | 181 | lcd->locate(0,0); |
| mrweilun | 1:8d53c6fe8815 | 182 | break; |
| mrweilun | 1:8d53c6fe8815 | 183 | } |
| mrweilun | 1:8d53c6fe8815 | 184 | }*/ |
| mrweilun | 1:8d53c6fe8815 | 185 | while(mode1==0&&mode2==0) |
| mrweilun | 0:3d3331775af2 | 186 | {} |
| mrweilun | 0:3d3331775af2 | 187 | if(mode1==0&&mode2==1) |
| mrweilun | 1:8d53c6fe8815 | 188 | {winscore=12;pc.printf("%d",winscore);} |
| mrweilun | 0:3d3331775af2 | 189 | else if(mode1==1&&mode2==0) |
| mrweilun | 1:8d53c6fe8815 | 190 | {winscore=14;pc.printf("%d",winscore);} |
| mrweilun | 0:3d3331775af2 | 191 | else if(mode1==1&&mode2==1) |
| mrweilun | 1:8d53c6fe8815 | 192 | {winscore=16;pc.printf("%d",winscore);} |
| mrweilun | 1:8d53c6fe8815 | 193 | |
| mrweilun | 0:3d3331775af2 | 194 | int customer_card; |
| mrweilun | 0:3d3331775af2 | 195 | int record[10]; |
| mrweilun | 0:3d3331775af2 | 196 | int p; |
| mrweilun | 1:8d53c6fe8815 | 197 | |
| mrweilun | 1:8d53c6fe8815 | 198 | while(1) |
| mrweilun | 0:3d3331775af2 | 199 | { |
| mrweilun | 1:8d53c6fe8815 | 200 | //pc.attach(&echouart1,SerialBase::RxIrq);//如果串口没有发送数据,那么主程序中的程序会继续执行,如果串口有发送数据,则执行函数 |
| mrweilun | 1:8d53c6fe8815 | 201 | if(pc.readable()) |
| mrweilun | 1:8d53c6fe8815 | 202 | { |
| mrweilun | 1:8d53c6fe8815 | 203 | pc.scanf("%d",&p); |
| mrweilun | 0:3d3331775af2 | 204 | start_signal=p; |
| mrweilun | 0:3d3331775af2 | 205 | break; |
| mrweilun | 1:8d53c6fe8815 | 206 | } |
| mrweilun | 0:3d3331775af2 | 207 | } |
| mrweilun | 1:8d53c6fe8815 | 208 | |
| mrweilun | 1:8d53c6fe8815 | 209 | led=p; |
| mrweilun | 1:8d53c6fe8815 | 210 | |
| mrweilun | 0:3d3331775af2 | 211 | if(start_signal==1) |
| mrweilun | 0:3d3331775af2 | 212 | { |
| mrweilun | 0:3d3331775af2 | 213 | int score[10]; |
| mrweilun | 0:3d3331775af2 | 214 | score[0]=10; |
| mrweilun | 0:3d3331775af2 | 215 | int robot_card; |
| mrweilun | 0:3d3331775af2 | 216 | int a; |
| mrweilun | 0:3d3331775af2 | 217 | int i; |
| mrweilun | 1:8d53c6fe8815 | 218 | srand((unsigned)time(NULL)); |
| mrweilun | 0:3d3331775af2 | 219 | for(i=1;i<5;i++) |
| mrweilun | 0:3d3331775af2 | 220 | { |
| mrweilun | 1:8d53c6fe8815 | 221 | pwm1=1;pwm2=1;pwm3=1;//控制遮挡电机关闭 |
| mrweilun | 1:8d53c6fe8815 | 222 | wait_ms(4000); |
| mrweilun | 1:8d53c6fe8815 | 223 | a=(rand()%4);//电脑出牌,产生[0, dis)之间的随机数,注意不包括4 |
| mrweilun | 0:3d3331775af2 | 224 | switch(a) |
| mrweilun | 1:8d53c6fe8815 | 225 | { |
| mrweilun | 1:8d53c6fe8815 | 226 | case 0: robot_card=-2;pwm1=0;pwm2=0;pwm3=1;break; |
| mrweilun | 1:8d53c6fe8815 | 227 | case 1: robot_card=-1;pwm1=0;pwm2=1;pwm3=0;break; |
| mrweilun | 1:8d53c6fe8815 | 228 | case 2: robot_card=1;pwm1=0;pwm2=1;pwm3=1;break; |
| mrweilun | 1:8d53c6fe8815 | 229 | case 3: robot_card=2;pwm1=1;pwm2=0;pwm3=0;break; |
| mrweilun | 0:3d3331775af2 | 230 | } |
| mrweilun | 1:8d53c6fe8815 | 231 | wait_ms(2000); |
| mrweilun | 0:3d3331775af2 | 232 | customer_card=color_sensor(); |
| mrweilun | 0:3d3331775af2 | 233 | switch(customer_card) |
| mrweilun | 0:3d3331775af2 | 234 | {case -2:{record[i]=2;break;} |
| mrweilun | 1:8d53c6fe8815 | 235 | case 1:{record[i]=(rand()%2);break;} |
| mrweilun | 0:3d3331775af2 | 236 | case 2:{record[i]=-2;break;} |
| mrweilun | 0:3d3331775af2 | 237 | } |
| mrweilun | 1:8d53c6fe8815 | 238 | |
| mrweilun | 1:8d53c6fe8815 | 239 | |
| mrweilun | 1:8d53c6fe8815 | 240 | {pwm1=1;pwm2=1;pwm3=0;}//控制遮挡电机显示电脑出牌 |
| mrweilun | 1:8d53c6fe8815 | 241 | |
| mrweilun | 1:8d53c6fe8815 | 242 | wait_ms(3000); |
| mrweilun | 1:8d53c6fe8815 | 243 | score[i]=score[i-1]+robot_card*color_sensor(); |
| mrweilun | 0:3d3331775af2 | 244 | pc.printf("%d",score[i]);//每一轮传给上位机总分 |
| mrweilun | 0:3d3331775af2 | 245 | if(score[i]>=winscore) |
| mrweilun | 0:3d3331775af2 | 246 | { |
| mrweilun | 0:3d3331775af2 | 247 | pc.printf("%d",score[i]); |
| mrweilun | 1:8d53c6fe8815 | 248 | pc.printf("win"); |
| mrweilun | 0:3d3331775af2 | 249 | break; |
| mrweilun | 0:3d3331775af2 | 250 | } |
| mrweilun | 1:8d53c6fe8815 | 251 | while(1)//这一轮结束信号(即25秒以后产生) |
| mrweilun | 1:8d53c6fe8815 | 252 | { |
| mrweilun | 1:8d53c6fe8815 | 253 | if(pc.readable()) |
| mrweilun | 1:8d53c6fe8815 | 254 | { |
| mrweilun | 1:8d53c6fe8815 | 255 | pc.scanf("%d",&p); |
| mrweilun | 1:8d53c6fe8815 | 256 | end_signal=p; |
| mrweilun | 1:8d53c6fe8815 | 257 | break; |
| mrweilun | 1:8d53c6fe8815 | 258 | } |
| mrweilun | 1:8d53c6fe8815 | 259 | } |
| mrweilun | 0:3d3331775af2 | 260 | |
| mrweilun | 0:3d3331775af2 | 261 | } |
| mrweilun | 1:8d53c6fe8815 | 262 | if(score[i]<winscore) |
| mrweilun | 1:8d53c6fe8815 | 263 | { |
| mrweilun | 1:8d53c6fe8815 | 264 | for(i;i<9;i++) |
| mrweilun | 0:3d3331775af2 | 265 | { |
| mrweilun | 1:8d53c6fe8815 | 266 | pwm1=1;pwm2=1;pwm3=1;//控制遮挡电机关闭 |
| mrweilun | 1:8d53c6fe8815 | 267 | wait_ms(4000); |
| mrweilun | 1:8d53c6fe8815 | 268 | robot_card=record[(rand()%(i-1))+1]; |
| mrweilun | 0:3d3331775af2 | 269 | switch(robot_card) |
| mrweilun | 0:3d3331775af2 | 270 | {case -2: {pwm1=0;pwm2=0;pwm3=1;break;} |
| mrweilun | 0:3d3331775af2 | 271 | case -1: {pwm1=0;pwm2=1;pwm3=0;break;} |
| mrweilun | 0:3d3331775af2 | 272 | case 1: {pwm1=0;pwm2=1;pwm3=1;break;} |
| mrweilun | 0:3d3331775af2 | 273 | case 2: {pwm1=1;pwm2=0;pwm3=0;break;} |
| mrweilun | 0:3d3331775af2 | 274 | } |
| mrweilun | 1:8d53c6fe8815 | 275 | wait_ms(2000); |
| mrweilun | 0:3d3331775af2 | 276 | customer_card=color_sensor(); |
| mrweilun | 0:3d3331775af2 | 277 | switch(customer_card) |
| mrweilun | 0:3d3331775af2 | 278 | {case -2:{record[i]=2;break;} |
| mrweilun | 1:8d53c6fe8815 | 279 | case 1:{record[i]=(rand()%2);break;} |
| mrweilun | 0:3d3331775af2 | 280 | case 2:{record[i]=-2;break;} |
| mrweilun | 0:3d3331775af2 | 281 | } |
| mrweilun | 1:8d53c6fe8815 | 282 | |
| mrweilun | 1:8d53c6fe8815 | 283 | |
| mrweilun | 1:8d53c6fe8815 | 284 | pwm1=1;pwm2=1;pwm3=0;//控制遮挡电机显示电脑出牌 |
| mrweilun | 1:8d53c6fe8815 | 285 | |
| mrweilun | 1:8d53c6fe8815 | 286 | wait_ms(3000); |
| mrweilun | 0:3d3331775af2 | 287 | score[i]=score[i-1]+robot_card*customer_card; |
| mrweilun | 0:3d3331775af2 | 288 | pc.printf("%d",score[i]);//每一轮传给上位机总分 |
| mrweilun | 0:3d3331775af2 | 289 | if(score[i]>=winscore) |
| mrweilun | 0:3d3331775af2 | 290 | { |
| mrweilun | 0:3d3331775af2 | 291 | pc.printf("%d",score[i]); |
| mrweilun | 1:8d53c6fe8815 | 292 | pc.printf("win"); |
| mrweilun | 0:3d3331775af2 | 293 | break; |
| mrweilun | 0:3d3331775af2 | 294 | } |
| mrweilun | 1:8d53c6fe8815 | 295 | while(1)//这一轮结束信号(即25秒以后产生) |
| mrweilun | 0:3d3331775af2 | 296 | { |
| mrweilun | 1:8d53c6fe8815 | 297 | //pc.attach(&echouart1,SerialBase::RxIrq);//如果串口没有发送数据,那么主程序中的程序会继续执行,如果串口有发送数据,则执行函数 |
| mrweilun | 1:8d53c6fe8815 | 298 | |
| mrweilun | 1:8d53c6fe8815 | 299 | if(pc.readable()) |
| mrweilun | 1:8d53c6fe8815 | 300 | { |
| mrweilun | 1:8d53c6fe8815 | 301 | pc.scanf("%d",&p); |
| mrweilun | 1:8d53c6fe8815 | 302 | end_signal=p; |
| mrweilun | 1:8d53c6fe8815 | 303 | break; |
| mrweilun | 1:8d53c6fe8815 | 304 | } |
| mrweilun | 0:3d3331775af2 | 305 | } |
| mrweilun | 0:3d3331775af2 | 306 | } |
| mrweilun | 0:3d3331775af2 | 307 | } |
| mrweilun | 0:3d3331775af2 | 308 | |
| mrweilun | 0:3d3331775af2 | 309 | } |
| mrweilun | 0:3d3331775af2 | 310 | } |
| mrweilun | 1:8d53c6fe8815 | 311 |