Joseph Fairweather
/
finalbuildtrafficlights
finalbuild
main.cpp@1:bd2414fc0fdc, 2019-11-19 (annotated)
- Committer:
- jfair
- Date:
- Tue Nov 19 16:29:10 2019 +0000
- Revision:
- 1:bd2414fc0fdc
- Parent:
- 0:b8a0da291a83
- Child:
- 2:ea69908f080c
beeper
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jfair | 0:b8a0da291a83 | 1 | #include "mbed.h" |
jfair | 0:b8a0da291a83 | 2 | DigitalOut ga(p23); //defines the green light for first seqeunce |
jfair | 0:b8a0da291a83 | 3 | DigitalOut ya(p22); //defines the yellow light for first sequence |
jfair | 0:b8a0da291a83 | 4 | DigitalOut ra(p21); //defines the red light for first sequence |
jfair | 0:b8a0da291a83 | 5 | DigitalOut gb(p27); //defines green light for second sequence |
jfair | 0:b8a0da291a83 | 6 | DigitalOut yb(p25); //defines yellow light for second sequence |
jfair | 0:b8a0da291a83 | 7 | DigitalOut rb(p24); //defines red light for second sequence |
jfair | 0:b8a0da291a83 | 8 | DigitalIn buttona(p18); //defines the switch as a digital input |
jfair | 0:b8a0da291a83 | 9 | DigitalIn buttonb(p17); |
jfair | 0:b8a0da291a83 | 10 | DigitalOut led(LED1); |
jfair | 1:bd2414fc0fdc | 11 | DigitalOut spk(p28); |
jfair | 0:b8a0da291a83 | 12 | |
jfair | 0:b8a0da291a83 | 13 | bool crossa; |
jfair | 0:b8a0da291a83 | 14 | bool crossb; |
jfair | 0:b8a0da291a83 | 15 | |
jfair | 0:b8a0da291a83 | 16 | void flaga() { |
jfair | 0:b8a0da291a83 | 17 | if(buttona.read()) { |
jfair | 0:b8a0da291a83 | 18 | crossa = 0; |
jfair | 0:b8a0da291a83 | 19 | } |
jfair | 0:b8a0da291a83 | 20 | } |
jfair | 0:b8a0da291a83 | 21 | void flagb() { |
jfair | 0:b8a0da291a83 | 22 | if(buttonb.read()) { |
jfair | 0:b8a0da291a83 | 23 | crossb = 0; |
jfair | 0:b8a0da291a83 | 24 | } |
jfair | 0:b8a0da291a83 | 25 | } |
jfair | 1:bd2414fc0fdc | 26 | void beep() { |
jfair | 1:bd2414fc0fdc | 27 | spk = 1; |
jfair | 1:bd2414fc0fdc | 28 | wait (0.01); |
jfair | 1:bd2414fc0fdc | 29 | spk = 0; |
jfair | 1:bd2414fc0fdc | 30 | } |
jfair | 1:bd2414fc0fdc | 31 | |
jfair | 0:b8a0da291a83 | 32 | void crossingfull() { |
jfair | 1:bd2414fc0fdc | 33 | for (int i=0; i<100; i++) { |
jfair | 1:bd2414fc0fdc | 34 | ra = 1;//simultainiously turns on red lights to allow crossing |
jfair | 1:bd2414fc0fdc | 35 | rb = 1; |
jfair | 1:bd2414fc0fdc | 36 | beep (); |
jfair | 1:bd2414fc0fdc | 37 | } |
jfair | 0:b8a0da291a83 | 38 | led = 1; |
jfair | 0:b8a0da291a83 | 39 | crossa = 1;//sets value of crossing request to false to prevent looping |
jfair | 0:b8a0da291a83 | 40 | crossb = 1; |
jfair | 0:b8a0da291a83 | 41 | wait (1);//remove later for testing |
jfair | 0:b8a0da291a83 | 42 | led = 0; |
jfair | 1:bd2414fc0fdc | 43 | } |
jfair | 0:b8a0da291a83 | 44 | //no wait should be required here as the normal lights function begins with a red light, this also minimises disruption |
jfair | 0:b8a0da291a83 | 45 | |
jfair | 0:b8a0da291a83 | 46 | void lightsa() { //creates the function for the first lights sequence |
jfair | 0:b8a0da291a83 | 47 | for (int i=0; i<25; i++) { |
jfair | 0:b8a0da291a83 | 48 | ra = 1; |
jfair | 0:b8a0da291a83 | 49 | flaga (); |
jfair | 0:b8a0da291a83 | 50 | wait (0.1); |
jfair | 0:b8a0da291a83 | 51 | } |
jfair | 0:b8a0da291a83 | 52 | for (int i=0; i<5; i++) { |
jfair | 0:b8a0da291a83 | 53 | ya = 1; |
jfair | 0:b8a0da291a83 | 54 | flaga(); |
jfair | 0:b8a0da291a83 | 55 | wait (0.1); |
jfair | 0:b8a0da291a83 | 56 | } |
jfair | 0:b8a0da291a83 | 57 | for (int i=0; i<25; i++) { |
jfair | 0:b8a0da291a83 | 58 | ra = 0; //turns off red light |
jfair | 0:b8a0da291a83 | 59 | ya = 0; //turns off yellow light at same time |
jfair | 0:b8a0da291a83 | 60 | ga = 1; //turns on green light at the same time |
jfair | 0:b8a0da291a83 | 61 | flaga(); |
jfair | 0:b8a0da291a83 | 62 | wait (0.1); |
jfair | 0:b8a0da291a83 | 63 | } |
jfair | 0:b8a0da291a83 | 64 | for (int i=0; i<5; i++) { |
jfair | 0:b8a0da291a83 | 65 | ga = 0; // turns off green |
jfair | 0:b8a0da291a83 | 66 | ya = 1; // turns on yellow light at same time |
jfair | 0:b8a0da291a83 | 67 | flaga(); //chechs for switch press |
jfair | 0:b8a0da291a83 | 68 | wait (0.1);//waits 0.5seconds before repeating |
jfair | 0:b8a0da291a83 | 69 | } |
jfair | 0:b8a0da291a83 | 70 | for (int i=0; i<1; i++) { |
jfair | 0:b8a0da291a83 | 71 | ya = 0; //turns off yellow light |
jfair | 0:b8a0da291a83 | 72 | ra = 1; //turns on red light |
jfair | 0:b8a0da291a83 | 73 | flaga(); |
jfair | 0:b8a0da291a83 | 74 | wait (0.1); |
jfair | 0:b8a0da291a83 | 75 | } |
jfair | 0:b8a0da291a83 | 76 | } |
jfair | 0:b8a0da291a83 | 77 | void lightsb() { //creates the function for the second lights sequence |
jfair | 0:b8a0da291a83 | 78 | for (int i=0; i<25; i++) { |
jfair | 0:b8a0da291a83 | 79 | rb = 1; |
jfair | 0:b8a0da291a83 | 80 | flagb (); |
jfair | 0:b8a0da291a83 | 81 | wait (0.1); |
jfair | 0:b8a0da291a83 | 82 | } |
jfair | 0:b8a0da291a83 | 83 | for (int i=0; i<5; i++) { |
jfair | 0:b8a0da291a83 | 84 | yb = 1; |
jfair | 0:b8a0da291a83 | 85 | flagb(); |
jfair | 0:b8a0da291a83 | 86 | wait (0.1); |
jfair | 0:b8a0da291a83 | 87 | } |
jfair | 0:b8a0da291a83 | 88 | for (int i=0; i<25; i++) { |
jfair | 0:b8a0da291a83 | 89 | rb = 0; //turns off red light |
jfair | 0:b8a0da291a83 | 90 | yb = 0; //turns off yellow light at same time |
jfair | 0:b8a0da291a83 | 91 | gb = 1; //turns on green light at the same time |
jfair | 0:b8a0da291a83 | 92 | flagb(); |
jfair | 0:b8a0da291a83 | 93 | wait (0.1); |
jfair | 0:b8a0da291a83 | 94 | } |
jfair | 0:b8a0da291a83 | 95 | for (int i=0; i<5; i++) { |
jfair | 0:b8a0da291a83 | 96 | gb = 0; // turns off green |
jfair | 0:b8a0da291a83 | 97 | yb = 1; // turns on yellow light at same time |
jfair | 0:b8a0da291a83 | 98 | flagb(); //chechs for switch press |
jfair | 0:b8a0da291a83 | 99 | wait (0.1);//waits 0.5seconds before repeating |
jfair | 0:b8a0da291a83 | 100 | } |
jfair | 0:b8a0da291a83 | 101 | for (int i=0; i<1; i++) { |
jfair | 0:b8a0da291a83 | 102 | yb = 0; //turns off yellow light |
jfair | 0:b8a0da291a83 | 103 | rb = 1; //turns on red light |
jfair | 0:b8a0da291a83 | 104 | flagb(); |
jfair | 0:b8a0da291a83 | 105 | wait (0.1); |
jfair | 0:b8a0da291a83 | 106 | } |
jfair | 0:b8a0da291a83 | 107 | } |
jfair | 0:b8a0da291a83 | 108 | int main() { |
jfair | 0:b8a0da291a83 | 109 | crossa = 1; |
jfair | 0:b8a0da291a83 | 110 | crossb = 1; |
jfair | 0:b8a0da291a83 | 111 | while(1) { //repeats indefinitely |
jfair | 0:b8a0da291a83 | 112 | if (crossa == 1 && crossb == 1) { |
jfair | 0:b8a0da291a83 | 113 | rb = 1; |
jfair | 0:b8a0da291a83 | 114 | lightsa(); //calls the function for the first lights sequence |
jfair | 0:b8a0da291a83 | 115 | lightsb(); |
jfair | 0:b8a0da291a83 | 116 | } |
jfair | 0:b8a0da291a83 | 117 | else if (crossa == 0 && crossb == 1) { |
jfair | 1:bd2414fc0fdc | 118 | crossingfull (); |
jfair | 0:b8a0da291a83 | 119 | } |
jfair | 0:b8a0da291a83 | 120 | else if (crossa == 1 && crossb == 0) { |
jfair | 1:bd2414fc0fdc | 121 | crossingfull (); |
jfair | 0:b8a0da291a83 | 122 | } |
jfair | 0:b8a0da291a83 | 123 | else if (crossa == 0 && crossb == 0) { |
jfair | 0:b8a0da291a83 | 124 | crossingfull (); |
jfair | 0:b8a0da291a83 | 125 | } |
jfair | 0:b8a0da291a83 | 126 | } |
jfair | 0:b8a0da291a83 | 127 | } |