Module 4 Lesson 1 Traffic Signal Design Arduino Lab HS
Module 4 Lesson 1 Traffic Signal Design Arduino Lab HS
Class:__________________________
Background
Traffic signals are used to control traffic that flows in opposing directions at intersections.
Traffic signals use red, yellow and green indicators to permit or prevent vehicles from entering
the controlled intersection at different times. The indicators, frequently referred to as “red
lights,” “yellow lights,” and “green lights,” organize traffic to prevent crashes and establish a
right of way.
Traffic signals work by alternating the ability for vehicles to travel on each approach using
different phases, which can have set or varying phase lengths. Phase lengths are the amount of
time assigned to each green, yellow, or red phase.
1
Circuit Background
When working with LED (light emitting diode) lights, you will notice that one leg of the
light is shorter than the other (as shown in the picture below). Because LEDs are polarized
and only allow current to flow in one direction as their circuit symbol indicates,
manufacturers make the legs different lengths to allow users to differentiate the
polarization. As shown, the longer leg is called the anode and represents the positive (+)
polarity and the shorter leg is called the cathode and represents the negative (-) polarity.
Using the picture below, assemble the traffic light circuit; notice that the polarity of the
LEDs are shown on the breadboard. When constructing the traffic signal circuit using the
LED lights, the anode (+) should be connected to the digital pins on the Arduino board to
turn the light on and off (any numbered pin can be used – but you’ll need to remember this
number later). The cathode (-) will be connected to the resistor which is connected to the
ground to complete the circuit. If the LED is positioned incorrectly, the current will be
unable to flow and the LED will not work.
2
Part II: Algorithm Development with Pseudo Code
As a transportation engineer, you will need to write a computer program to allow your traffic
signal to function properly. First, we will develop a flowchart to help us think about how we
want the traffic signal to function. Consider the questions below before beginning your
flowchart.
1. Will the lights in the traffic signal be inputs or outputs?
2. Will the lights in the traffic signal follow a specified order?
3. How long should each light remain on?
4. When one light turns on, what happens to the other two lights?
Now that you have identified how your traffic signal will function, use this information to
develop a flowchart that shows the sequence the traffic signal will follow. Use the following
symbols to represent the traffic signal processes.
Flow Chart Symbols Traffic Signal Logic Flow Chart
Develop the traffic signal flow chart below
3
Part III: Writing Arduino Code
1. Connect Computer to USB port on the Arduino Uno boards.
2. Open the Arduino program:
3. Find the Arduino connection on the computer: Tools à Serial Port
Your computer communicates to the Arduino microcontroller via a serial port à
through a USB-Serial adapter. Check to make sure that the drivers are properly
installed.
4. Double-check that the proper board is selected under the ToolsàBoard menu. (You are
using an Arduino Uno).
4
5. Just like any work you do – put your name and date at the top in a comment along with
a brief description:
6. When you first open the Arduino program, you will be looking at an Arduino “sketch.” A
sketch is what the Arduino calls the program or code. You should see two required
functions on your screen:
void setup() {
// put your setup code here, to run once:
}
**The void setup() function is where you will define your inputs and outputs.
void loop() {
// put your main code here, to run repeatedly:
}
**The void loop() function is for your main code that the Arudino will continually loop
through.
Both of these functions are automatic and are required to run the Arduino program.
**Remember: When you are writing a computer program, the language is very
sensitive, so spaces, punctuation, lower and uppercase letters make a difference!
When you use codes that Arduino recognizes, you will notice them change color.
5
7. When you begin writing a computer program, a good practice is to first define the
variables. You will need to do this before the void setup function. In this case, there will
be 3 variables – green, yellow, and red. You will define your variable related to the pin
number.
Ex. int GREEN = 2; (this would mean that the green light is in pin 2)
8. Once you have defined your variables, you are ready to write the program. Under the
void setup function, you will need to setup whether each pin is an output or input. To
do this, Arudino has a function that it already understands.
9. Now, under the void loop function, you will need to tell the traffic signal exactly how to
function. Keep in mind you will need to tell the lights when to come one, how long to
stay on, when to turn off, and how long between each light. (Remember the language is
very sensitive so be careful).
Arduino Coding
digitalWrite (GREEN, HIGH) – This function tells the light to turn on or off. A HIGH
reading turns the light on and a LOW reading would turn the light off.
Delay (400) – This function delays the Arudino for a specific length of time. The Ardunio
reads milliseconds so this function would delay the program for 400 milliseconds. 1000
milliseconds = 1 second.
10. Once you have written the code for the traffic signal, you will need to verify the code to
ensure that there are no mistakes. To do this, click on the checkmark. If it produced
errors look for missing parenthesis and semicolons.
11. If your code didn’t produce any errors on the bottom, upload the code to the Arduino
(click the right pointing arrow) and see if it works.