Crossroad Signal Road / Mbed 2 deprecated All_Test_2

Dependencies:   mbed

Committer:
wcy9703
Date:
Thu Jan 10 06:36:28 2019 +0000
Revision:
0:7918b43be5cf
Final_Education

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wcy9703 0:7918b43be5cf 1 #include "mbed.h"
wcy9703 0:7918b43be5cf 2 DigitalOut led1(LED1);
wcy9703 0:7918b43be5cf 3
wcy9703 0:7918b43be5cf 4 //红绿灯引脚定义
wcy9703 0:7918b43be5cf 5 DigitalOut NorthStraightRed(PC_9);
wcy9703 0:7918b43be5cf 6 DigitalOut NorthStraightYellow(PB_8);
wcy9703 0:7918b43be5cf 7 DigitalOut NorthStraightGreen(PB_9);
wcy9703 0:7918b43be5cf 8 DigitalOut NorthLeftRed(PC_8);
wcy9703 0:7918b43be5cf 9 DigitalOut NorthLeftYellow(PC_6);
wcy9703 0:7918b43be5cf 10 DigitalOut NorthLeftGreen(PC_5);
wcy9703 0:7918b43be5cf 11 DigitalOut WestStraightRed(PA_10);
wcy9703 0:7918b43be5cf 12 DigitalOut WestStraightYellow(PA_2);
wcy9703 0:7918b43be5cf 13 DigitalOut WestStraightGreen(PA_3);
wcy9703 0:7918b43be5cf 14 DigitalOut WestLeftRed(PB_15);
wcy9703 0:7918b43be5cf 15 DigitalOut WestLeftYellow(PB_14);
wcy9703 0:7918b43be5cf 16 DigitalOut WestLeftGreen(PB_13);
wcy9703 0:7918b43be5cf 17
wcy9703 0:7918b43be5cf 18 DigitalOut Cameraout(PC_10);
wcy9703 0:7918b43be5cf 19
wcy9703 0:7918b43be5cf 20 PwmOut mypwm(PB_3);
wcy9703 0:7918b43be5cf 21
wcy9703 0:7918b43be5cf 22 int State=1;
wcy9703 0:7918b43be5cf 23 int i=0;
wcy9703 0:7918b43be5cf 24 Timer debounce;
wcy9703 0:7918b43be5cf 25 bool judg = true;
wcy9703 0:7918b43be5cf 26 int ju=0;
wcy9703 0:7918b43be5cf 27
wcy9703 0:7918b43be5cf 28 InterruptIn button1(USER_BUTTON);
wcy9703 0:7918b43be5cf 29 InterruptIn detector(PC_7);
wcy9703 0:7918b43be5cf 30
wcy9703 0:7918b43be5cf 31 void Emergence()
wcy9703 0:7918b43be5cf 32 {
wcy9703 0:7918b43be5cf 33 NorthStraightRed=1;
wcy9703 0:7918b43be5cf 34 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 35 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 36 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 37 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 38 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 39 WestStraightRed=0;
wcy9703 0:7918b43be5cf 40 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 41 WestStraightGreen=1;
wcy9703 0:7918b43be5cf 42 WestLeftRed=1;
wcy9703 0:7918b43be5cf 43 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 44 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 45
wcy9703 0:7918b43be5cf 46 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 47 mypwm.pulsewidth_ms(18.5);
wcy9703 0:7918b43be5cf 48 wait_ms(100);
wcy9703 0:7918b43be5cf 49 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 50 mypwm.pulsewidth_ms(1.5);
wcy9703 0:7918b43be5cf 51 wait_ms(240);
wcy9703 0:7918b43be5cf 52 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 53 mypwm.pulsewidth_ms(20);
wcy9703 0:7918b43be5cf 54 wait(4);
wcy9703 0:7918b43be5cf 55 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 56 mypwm.pulsewidth_ms(18.5);
wcy9703 0:7918b43be5cf 57 }
wcy9703 0:7918b43be5cf 58
wcy9703 0:7918b43be5cf 59 void Flash()
wcy9703 0:7918b43be5cf 60 /*{
wcy9703 0:7918b43be5cf 61 if(judg)
wcy9703 0:7918b43be5cf 62 {
wcy9703 0:7918b43be5cf 63 Cameraout = !Cameraout;
wcy9703 0:7918b43be5cf 64 wait_ms(100);
wcy9703 0:7918b43be5cf 65 //Cameraout = !Cameraout;
wcy9703 0:7918b43be5cf 66 }
wcy9703 0:7918b43be5cf 67 judg=!judg;
wcy9703 0:7918b43be5cf 68 }*/
wcy9703 0:7918b43be5cf 69 /*{
wcy9703 0:7918b43be5cf 70 if((debounce.read_ms()>100)&&judg&&ju==1)
wcy9703 0:7918b43be5cf 71 {
wcy9703 0:7918b43be5cf 72 Cameraout=!Cameraout;
wcy9703 0:7918b43be5cf 73 debounce.reset();
wcy9703 0:7918b43be5cf 74 wait_ms(100);
wcy9703 0:7918b43be5cf 75 Cameraout=!Cameraout;
wcy9703 0:7918b43be5cf 76 ju=0;
wcy9703 0:7918b43be5cf 77 }
wcy9703 0:7918b43be5cf 78 else
wcy9703 0:7918b43be5cf 79 ju=1;
wcy9703 0:7918b43be5cf 80 judg = !judg;
wcy9703 0:7918b43be5cf 81
wcy9703 0:7918b43be5cf 82 }*/
wcy9703 0:7918b43be5cf 83
wcy9703 0:7918b43be5cf 84 {
wcy9703 0:7918b43be5cf 85 if(i==1)
wcy9703 0:7918b43be5cf 86 {
wcy9703 0:7918b43be5cf 87 if(debounce.read_ms()>1000)
wcy9703 0:7918b43be5cf 88 {
wcy9703 0:7918b43be5cf 89 Cameraout=!Cameraout;
wcy9703 0:7918b43be5cf 90 debounce.reset();
wcy9703 0:7918b43be5cf 91 wait_ms(100);
wcy9703 0:7918b43be5cf 92 Cameraout=!Cameraout;
wcy9703 0:7918b43be5cf 93
wcy9703 0:7918b43be5cf 94 }
wcy9703 0:7918b43be5cf 95 }
wcy9703 0:7918b43be5cf 96 }
wcy9703 0:7918b43be5cf 97
wcy9703 0:7918b43be5cf 98 int main()
wcy9703 0:7918b43be5cf 99 {
wcy9703 0:7918b43be5cf 100 debounce.start();
wcy9703 0:7918b43be5cf 101 button1.fall(&Emergence);
wcy9703 0:7918b43be5cf 102 detector.fall(&Flash);
wcy9703 0:7918b43be5cf 103 while(1)
wcy9703 0:7918b43be5cf 104 {
wcy9703 0:7918b43be5cf 105 i=State%9;
wcy9703 0:7918b43be5cf 106 State++;
wcy9703 0:7918b43be5cf 107 switch(i){
wcy9703 0:7918b43be5cf 108 case 1: NorthStraightRed=0;
wcy9703 0:7918b43be5cf 109 NorthStraightGreen=1;
wcy9703 0:7918b43be5cf 110 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 111 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 112 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 113 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 114 WestStraightRed=1;
wcy9703 0:7918b43be5cf 115 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 116 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 117 WestLeftRed=1;
wcy9703 0:7918b43be5cf 118 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 119 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 120 wait(5);
wcy9703 0:7918b43be5cf 121 break;
wcy9703 0:7918b43be5cf 122 case 2: NorthStraightRed=0;
wcy9703 0:7918b43be5cf 123 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 124 NorthStraightYellow=1;
wcy9703 0:7918b43be5cf 125 NorthLeftRed=0;
wcy9703 0:7918b43be5cf 126 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 127 NorthLeftYellow=1;
wcy9703 0:7918b43be5cf 128 WestStraightRed=1;
wcy9703 0:7918b43be5cf 129 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 130 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 131 WestLeftRed=1;
wcy9703 0:7918b43be5cf 132 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 133 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 134 wait(2);
wcy9703 0:7918b43be5cf 135 break;
wcy9703 0:7918b43be5cf 136 case 3: NorthStraightRed=1;
wcy9703 0:7918b43be5cf 137 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 138 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 139 NorthLeftRed=0;
wcy9703 0:7918b43be5cf 140 NorthLeftGreen=1;
wcy9703 0:7918b43be5cf 141 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 142 WestStraightRed=1;
wcy9703 0:7918b43be5cf 143 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 144 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 145 WestLeftRed=1;
wcy9703 0:7918b43be5cf 146 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 147 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 148 wait(5);
wcy9703 0:7918b43be5cf 149 break;
wcy9703 0:7918b43be5cf 150 case 4: NorthStraightRed=1;
wcy9703 0:7918b43be5cf 151 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 152 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 153 NorthLeftRed=0;
wcy9703 0:7918b43be5cf 154 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 155 NorthLeftYellow=1;
wcy9703 0:7918b43be5cf 156 WestStraightRed=0;
wcy9703 0:7918b43be5cf 157 WestStraightYellow=1;
wcy9703 0:7918b43be5cf 158 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 159 WestLeftRed=1;
wcy9703 0:7918b43be5cf 160 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 161 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 162 wait(2);
wcy9703 0:7918b43be5cf 163 break;
wcy9703 0:7918b43be5cf 164 case 5: NorthStraightRed=1;
wcy9703 0:7918b43be5cf 165 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 166 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 167 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 168 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 169 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 170 WestStraightRed=0;
wcy9703 0:7918b43be5cf 171 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 172 WestStraightGreen=1;
wcy9703 0:7918b43be5cf 173 WestLeftRed=1;
wcy9703 0:7918b43be5cf 174 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 175 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 176 //闸杆抬起
wcy9703 0:7918b43be5cf 177
wcy9703 0:7918b43be5cf 178 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 179 mypwm.pulsewidth_ms(18.5);
wcy9703 0:7918b43be5cf 180 wait_ms(100);
wcy9703 0:7918b43be5cf 181 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 182 mypwm.pulsewidth_ms(1.5);
wcy9703 0:7918b43be5cf 183 wait_ms(240);
wcy9703 0:7918b43be5cf 184 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 185 mypwm.pulsewidth_ms(20);
wcy9703 0:7918b43be5cf 186 wait(4);
wcy9703 0:7918b43be5cf 187 mypwm.period_ms(20);
wcy9703 0:7918b43be5cf 188 mypwm.pulsewidth_ms(18.5);
wcy9703 0:7918b43be5cf 189 break;
wcy9703 0:7918b43be5cf 190 case 6: NorthStraightRed=1;
wcy9703 0:7918b43be5cf 191 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 192 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 193 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 194 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 195 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 196 WestStraightRed=0;
wcy9703 0:7918b43be5cf 197 WestStraightYellow=1;
wcy9703 0:7918b43be5cf 198 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 199 WestLeftRed=0;
wcy9703 0:7918b43be5cf 200 WestLeftYellow=1;
wcy9703 0:7918b43be5cf 201 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 202 wait(2);
wcy9703 0:7918b43be5cf 203 break;
wcy9703 0:7918b43be5cf 204 case 7: NorthStraightRed=1;
wcy9703 0:7918b43be5cf 205 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 206 NorthStraightYellow=0;
wcy9703 0:7918b43be5cf 207 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 208 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 209 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 210 WestStraightRed=1;
wcy9703 0:7918b43be5cf 211 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 212 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 213 WestLeftRed=0;
wcy9703 0:7918b43be5cf 214 WestLeftYellow=0;
wcy9703 0:7918b43be5cf 215 WestLeftGreen=1;
wcy9703 0:7918b43be5cf 216 wait(5);
wcy9703 0:7918b43be5cf 217 break;
wcy9703 0:7918b43be5cf 218 case 8: NorthStraightRed=0;
wcy9703 0:7918b43be5cf 219 NorthStraightGreen=0;
wcy9703 0:7918b43be5cf 220 NorthStraightYellow=1;
wcy9703 0:7918b43be5cf 221 NorthLeftRed=1;
wcy9703 0:7918b43be5cf 222 NorthLeftGreen=0;
wcy9703 0:7918b43be5cf 223 NorthLeftYellow=0;
wcy9703 0:7918b43be5cf 224 WestStraightRed=1;
wcy9703 0:7918b43be5cf 225 WestStraightYellow=0;
wcy9703 0:7918b43be5cf 226 WestStraightGreen=0;
wcy9703 0:7918b43be5cf 227 WestLeftRed=0;
wcy9703 0:7918b43be5cf 228 WestLeftYellow=1;
wcy9703 0:7918b43be5cf 229 WestLeftGreen=0;
wcy9703 0:7918b43be5cf 230 wait(2);
wcy9703 0:7918b43be5cf 231 break;
wcy9703 0:7918b43be5cf 232 default:break;
wcy9703 0:7918b43be5cf 233 }
wcy9703 0:7918b43be5cf 234
wcy9703 0:7918b43be5cf 235
wcy9703 0:7918b43be5cf 236 }
wcy9703 0:7918b43be5cf 237
wcy9703 0:7918b43be5cf 238
wcy9703 0:7918b43be5cf 239 }