UoD_ME21001_Group_1_12 / Mbed 2 deprecated 0fullfunctionlights

Dependencies:   mbed

Revision:
0:47a0c4ac5a0f
Child:
1:7b7576c83317
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Oct 29 16:45:51 2019 +0000
@@ -0,0 +1,70 @@
+#include "mbed.h"
+DigitalOut ga(p23); //defines the green light for first seqeunce 
+DigitalOut ya(p22); //defines the yellow light for first sequence 
+DigitalOut ra(p21); //defines the red light for first sequence
+DigitalOut gb(p27); //defines green light for second sequence
+DigitalOut yb(p25); //defines yellow light for second sequence
+DigitalOut rb(p24); //defines red light for second sequence
+DigitalIn button(p18); //defines the switch as a digital input
+
+bool cross;
+
+void crossing() {
+    ra = 1;//simultainiously turns on red lights to allow crossing 
+    rb = 1;
+    ga = 1;//remove later for testing
+    wait (1);//r
+    ga = 0;//r
+    wait (1);//r
+    ga = 1;//r
+    wait (1);//r
+    ga = 1;//r
+    cross = 1;//sets value of crossing request to false to prevent looping 
+    wait (1);//remove later for testing
+    }   
+//no wait should be required here as the normal lights function begins with a red light, this also minimises disruption
+
+void lightsa() { //creates the function for the first lights sequence 
+         ra = 1; //turns on red light at same time
+         wait(3); //waits ten seconds
+         ya = 1; //turns the yellow light on 
+         wait(1); //waits two seconds
+         ra = 0; //turns off red light
+         ya = 0; //turns off yellow light at same time
+         ga = 1; //turns on green light at the same time
+         wait (3); //waits fourteen seconds
+         ga = 0; // turns off green 
+         ya = 1; // turns on yellow light at same time
+         wait (1); //waits three seconds before repeating
+         ya = 0; //turns off yellow light 
+    }
+void lightsb() { //creates the function for the second lights sequence 
+         rb = 1; //turns on red light at same time
+         wait(10); //waits ten seconds
+         yb = 1; //turns the yellow light on 
+         wait(2); //waits two seconds
+         rb = 0; //turns off red light
+         yb = 0; //turns off yellow light at same time
+         gb = 1; //turns on green light at the same time
+         wait (14); //waits fourteen seconds
+         gb = 0; // turns off green 
+         yb = 1; // turns on yellow light at same time
+         wait (3); //waits three  
+         yb = 0; //turns off yellow light
+    }
+    
+int main() {
+    while(1) { //repeats indefinitely
+    if (button.read()) { 
+    cross = 0; 
+    } 
+    if (cross == 1) { 
+        rb = 1; //keeps red light from second sequence on during sequence one 
+        lightsa(); //calls the function for the first lights sequence
+        ra = 1; //keeps red light for sequence one on during sequence two
+        }
+    else {
+        crossing ();
+        }
+    }
+}