Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 0:41f066ce55cf
- Child:
- 1:992086cb4c27
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Oct 20 20:24:53 2018 +0000 @@ -0,0 +1,150 @@ +/* +This project includes both the safe, unsafe sequences, pedestrian crossing, and a buzzer. +The Assignment task is to create both the safe and unsafe traffic light sequence. +*/ + +#include <mbed.h> // importing the mbed library to allow to use input and output fuctions + +DigitalOut Onboard(LED1);//declaring the onboard led as Onboard +DigitalOut RLED(D2);//RLED refers to the first traffic light Red +DigitalOut ALED(D3);//ALED refers to the first traffic light Amber +DigitalOut GLED(D4);//GLED refers to the first traffic light Green +DigitalOut RRLED(D5);//RRLED refers to the second traffic light Red +DigitalOut AALED(D6);//AALED refers to the second traffic light Amber +DigitalOut GGLED(D7);//GGLED refers to the second traffic light Green +InterruptIn button (USER_BUTTON); //I will be using the onboard button as a pedestrian button +InterruptIn Switch(D15);//I will be using an external wire to act as a button. +DigitalOut Buzzer(D10);//Buzzer/Beeper + +bool pedest = false, unsafe = false; +int counter = 0; + +void pedestrians() +//Declaring a procedure for changing a variable +{ + pedest = true; + Onboard = 1; +} +void reset() +{//start reset procedure. + //Declaring a procedure named reset, 0 arguments are passed. + RLED = 0; + ALED = 0; + GLED = 0; + RRLED = 0; + AALED = 0; + GGLED = 0; + //All Lights are switched off. (Procedure Ends return to main) +}//End reset procedure. + + +void sequence(int unsafe) +// Declaring a procedure for sequence. 2 Arguments are recieved - unsafe and pedestrians +{//Start sequence procedure. + if(unsafe == true) + { + // Sequence TRAFFIC 1, TRAFFIC 2 + RLED = 1; // RED ON RED OFF + GGLED = 1; // AMBER OFF AMBER OFF + wait(5); // GREEN OFF GREEN ON + //---------------------------------------------- + GGLED = 0; // RED ON RED OFF + ALED = 1; // AMBER OFF AMBER ON + AALED = 1; // GREEN OFF GREEN OFF + wait(2); + //---------------------------------------------- + RLED = 0; // RED OFF RED OFF + RRLED = 1; // AMBER OFF AMBER OFF + ALED = 0; // GREEN ON GREEN OFF + AALED = 0; + GLED = 1; + wait(5); + //---------------------------------------------- + GLED = 0; // RED OFF RED OFF + ALED = 1; // AMBER ON AMBER ON + AALED = 1; // GREEN OFF GREEN OFF + wait(2); + //---------------------------------------------- + RRLED = 0; // RED OFF RED OFF + ALED = 0; // AMBER OFF AMBER OFF + AALED = 0; // GREEN OFF GREEN OFF ----------> The same as reset I may replace this with a call to reset + } + else if(unsafe == false) + { + // Sequence TRAFFIC 1, TRAFFIC 2 + RLED = 1; // RED ON RED OFF + GGLED = 1; // AMBER OFF AMBER OFF + wait(5); // GREEN OFF GREEN ON + //---------------------------------------------- + GGLED = 0; // RED ON RED OFF + // AMBER OFF AMBER ON + AALED = 1; // GREEN OFF GREEN OFF + wait(2); + //---------------------------------------------- + RLED = 1; // RED ON RED ON + RRLED = 1; // AMBER OFF AMBER OFF + ALED = 0; // GREEN OFF GREEN OFF + AALED = 0; + wait(2); + if (pedest == true) + { + do // A do while loop, do the following until the condition counter has been met + { + GGLED = 1; + Buzzer = 1; + GLED = 1; + wait(0.2); + GGLED = 0; + GLED = 0; + Buzzer = 0; + wait(0.2); + counter ++; + pedest = false; + Onboard = 0; + } + while(counter <= 20);// condition of counter is while the counter is less than or equal to 10 + } + //---------------------------------------------- + GLED = 0; // RED OFF RED OFF + // AMBER ON AMBER ON + ALED = 1; // GREEN OFF GREEN OFF + wait(2); + //---------------------------------------------- + RRLED = 1; // RED OFF RED ON + RLED = 0; + ALED = 0; // AMBER OFF AMBER OFF + GLED = 1; // GREEN ON GREEN OFF + wait(5); + //---------------------------------------------- + GLED = 0; + ALED = 1; + wait(2); + ALED = 0; + RLED = 1; + wait(2); + AALED = 1; + wait(2); + reset(); + } +}//End sequence procedure. + +int main() +{//start main function. + //Main procedure, I will create a loop and initalise my variables + bool unsafe = false; + /*To create my sequence Ivneed my lights to start on the same lights everytime. + Therefore I will create a reset which will set all of the lights off. + I will do this by creating a separate procedure for my main procedure to point to.*/ + + reset();//Main points to reset procedure + button.fall(&pedestrians); // This fall procedure in is the button interrupt class + while(1) + {//Start of while + + /*infinite loop, the program will never be able to exit this loop because the condition is always TRUE. + Now that I have set up my infinite loop I can now start the sequence procedure.*/ + sequence(unsafe);// I am calling the sequence procedure with the arguments unsafe and pedestrians. + + }//End of while + return(0); // The complier warns me that this statement is unreachable, I know. Due the infinite loop above. +}//End main function \ No newline at end of file