finalbuild

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }