finalbuild

Dependencies:   mbed

Committer:
jfair
Date:
Tue Nov 26 15:01:06 2019 +0000
Revision:
2:ea69908f080c
Parent:
1:bd2414fc0fdc
final build;

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 2:ea69908f080c 28 wait (0.002);
jfair 1:bd2414fc0fdc 29 spk = 0;
jfair 1:bd2414fc0fdc 30 }
jfair 1:bd2414fc0fdc 31
jfair 0:b8a0da291a83 32 void crossingfull() {
jfair 2:ea69908f080c 33 for (int i=0; i<20; i++) {
jfair 1:bd2414fc0fdc 34 ra = 1;//simultainiously turns on red lights to allow crossing
jfair 1:bd2414fc0fdc 35 rb = 1;
jfair 2:ea69908f080c 36 beep ();
jfair 2:ea69908f080c 37 wait (0.01);
jfair 1:bd2414fc0fdc 38 }
jfair 0:b8a0da291a83 39 led = 1;
jfair 0:b8a0da291a83 40 crossa = 1;//sets value of crossing request to false to prevent looping
jfair 0:b8a0da291a83 41 crossb = 1;
jfair 0:b8a0da291a83 42 wait (1);//remove later for testing
jfair 0:b8a0da291a83 43 led = 0;
jfair 1:bd2414fc0fdc 44 }
jfair 0:b8a0da291a83 45 //no wait should be required here as the normal lights function begins with a red light, this also minimises disruption
jfair 0:b8a0da291a83 46
jfair 0:b8a0da291a83 47 void lightsa() { //creates the function for the first lights sequence
jfair 0:b8a0da291a83 48 for (int i=0; i<25; i++) {
jfair 0:b8a0da291a83 49 ra = 1;
jfair 0:b8a0da291a83 50 flaga ();
jfair 0:b8a0da291a83 51 wait (0.1);
jfair 0:b8a0da291a83 52 }
jfair 0:b8a0da291a83 53 for (int i=0; i<5; i++) {
jfair 0:b8a0da291a83 54 ya = 1;
jfair 0:b8a0da291a83 55 flaga();
jfair 0:b8a0da291a83 56 wait (0.1);
jfair 0:b8a0da291a83 57 }
jfair 0:b8a0da291a83 58 for (int i=0; i<25; i++) {
jfair 0:b8a0da291a83 59 ra = 0; //turns off red light
jfair 0:b8a0da291a83 60 ya = 0; //turns off yellow light at same time
jfair 0:b8a0da291a83 61 ga = 1; //turns on green light at the same time
jfair 0:b8a0da291a83 62 flaga();
jfair 0:b8a0da291a83 63 wait (0.1);
jfair 0:b8a0da291a83 64 }
jfair 0:b8a0da291a83 65 for (int i=0; i<5; i++) {
jfair 0:b8a0da291a83 66 ga = 0; // turns off green
jfair 0:b8a0da291a83 67 ya = 1; // turns on yellow light at same time
jfair 0:b8a0da291a83 68 flaga(); //chechs for switch press
jfair 0:b8a0da291a83 69 wait (0.1);//waits 0.5seconds before repeating
jfair 0:b8a0da291a83 70 }
jfair 0:b8a0da291a83 71 for (int i=0; i<1; i++) {
jfair 0:b8a0da291a83 72 ya = 0; //turns off yellow light
jfair 0:b8a0da291a83 73 ra = 1; //turns on red light
jfair 0:b8a0da291a83 74 flaga();
jfair 0:b8a0da291a83 75 wait (0.1);
jfair 0:b8a0da291a83 76 }
jfair 0:b8a0da291a83 77 }
jfair 0:b8a0da291a83 78 void lightsb() { //creates the function for the second lights sequence
jfair 0:b8a0da291a83 79 for (int i=0; i<25; i++) {
jfair 0:b8a0da291a83 80 rb = 1;
jfair 0:b8a0da291a83 81 flagb ();
jfair 0:b8a0da291a83 82 wait (0.1);
jfair 0:b8a0da291a83 83 }
jfair 0:b8a0da291a83 84 for (int i=0; i<5; i++) {
jfair 0:b8a0da291a83 85 yb = 1;
jfair 0:b8a0da291a83 86 flagb();
jfair 0:b8a0da291a83 87 wait (0.1);
jfair 0:b8a0da291a83 88 }
jfair 0:b8a0da291a83 89 for (int i=0; i<25; i++) {
jfair 0:b8a0da291a83 90 rb = 0; //turns off red light
jfair 0:b8a0da291a83 91 yb = 0; //turns off yellow light at same time
jfair 0:b8a0da291a83 92 gb = 1; //turns on green light at the same time
jfair 0:b8a0da291a83 93 flagb();
jfair 0:b8a0da291a83 94 wait (0.1);
jfair 0:b8a0da291a83 95 }
jfair 0:b8a0da291a83 96 for (int i=0; i<5; i++) {
jfair 0:b8a0da291a83 97 gb = 0; // turns off green
jfair 0:b8a0da291a83 98 yb = 1; // turns on yellow light at same time
jfair 0:b8a0da291a83 99 flagb(); //chechs for switch press
jfair 0:b8a0da291a83 100 wait (0.1);//waits 0.5seconds before repeating
jfair 0:b8a0da291a83 101 }
jfair 0:b8a0da291a83 102 for (int i=0; i<1; i++) {
jfair 0:b8a0da291a83 103 yb = 0; //turns off yellow light
jfair 0:b8a0da291a83 104 rb = 1; //turns on red light
jfair 0:b8a0da291a83 105 flagb();
jfair 0:b8a0da291a83 106 wait (0.1);
jfair 0:b8a0da291a83 107 }
jfair 0:b8a0da291a83 108 }
jfair 0:b8a0da291a83 109 int main() {
jfair 0:b8a0da291a83 110 crossa = 1;
jfair 0:b8a0da291a83 111 crossb = 1;
jfair 0:b8a0da291a83 112 while(1) { //repeats indefinitely
jfair 0:b8a0da291a83 113 if (crossa == 1 && crossb == 1) {
jfair 0:b8a0da291a83 114 rb = 1;
jfair 0:b8a0da291a83 115 lightsa(); //calls the function for the first lights sequence
jfair 0:b8a0da291a83 116 lightsb();
jfair 0:b8a0da291a83 117 }
jfair 0:b8a0da291a83 118 else if (crossa == 0 && crossb == 1) {
jfair 1:bd2414fc0fdc 119 crossingfull ();
jfair 0:b8a0da291a83 120 }
jfair 0:b8a0da291a83 121 else if (crossa == 1 && crossb == 0) {
jfair 1:bd2414fc0fdc 122 crossingfull ();
jfair 0:b8a0da291a83 123 }
jfair 0:b8a0da291a83 124 else if (crossa == 0 && crossb == 0) {
jfair 0:b8a0da291a83 125 crossingfull ();
jfair 0:b8a0da291a83 126 }
jfair 0:b8a0da291a83 127 }
jfair 0:b8a0da291a83 128 }