TRAFFIC LIGHT


03. Traffic light

This example of digital output uses 3 LEDs to create a traffic light. It starts with the red, after 7 seconds becomes green, after 10 seconds becomes yellow and after 3 seconds it resumes with the red (see Figure 2 and Video 1). It can be managed from the Internet via start and stop commands.

Figure 1 - traffic light circuit

1. Circuit

Connect the 3 LEDs as shown in Figure 1:

  • red LED to the PINs R and d1
  • yellow LED to the PINs d2 and d3
  • green LED to the PINs d4 and GND.

The longest PIN is positive.

2. Sketch

Write a sketch K to define:

  • the output connections:
  red :: !d1, yellow :: d2, gnd :: d3, green :: d4
  • the variable s for the state of the automaton
  • the commands to start and stop the system: start, stop
  • the rules for implementing the automaton in Figure 2
gnd :: d3
green :: d4
red :: !d1
yellow :: d2
s=0
start = [gnd=0, status=0, s=1]
stop = [red=0, yellow=0, green=0, status=1, led=1, s=0]
s==1 -> [red=1, yellow=0, green=0, s=2 ## 7]
s==2 -> [red=0, yellow=0, green=1, s=3 ## 10]
s==3 -> [red=0, yellow=1, green=0, s=1 ## 3]

or simply load the sketch into the workspace with the command

] charge e03_traffic_light

The start command contains status=0 to disable the status LED. The stop command contains status=1 to enable the status LED. Find out what happens if you don't use status=0.

Figure 2 - traffic light automaton

3. Try and learn

Try the following commands now:

  • ] start

the traffic light starts with the red, after 7 seconds becomes green, after 10 seconds becomes yellow and after 3 seconds it resumes with the red (see Video 1)

Video 1 - traffic light

  • ] pause

the traffic light stops

  • ] play

the traffic light resumes

  • ] stop

turns off the traffic light

  • ] ?
--- Pin connections
gnd :: d3   
green :: d4   
red :: !d1   
yellow :: d2   
--- Variables
s = 0   
--- Commands
start = [gnd=0,status=0,s=1]   
stop = [red=0,yellow=0,green=0,status=1,led=1,s=0]   
--- Rules
s==1 -> [red=1,yellow=0,green=0,s=2 ##7]   
s==2 -> [red=0,yellow=0,green=1,s=3 ##10]   
s==3 -> [red=0,yellow=1,green=0,s=1 ##3]

shows the sketch in the workspace

  • ] save

stores on archive the sketch in workspace

  • ] new

erase the workspace

  • ] ?
null

shows the sketch in the workspace

  • ] cat
--- /smick.k
gnd :: d3
green :: d4
red :: !d1
yellow :: d2
s = 0
start=[gnd=0,status=0,s=1]
stop=[red=0,yellow=0,green=0,status=1,led=1,s=0]
s==1 -> [red=1,yellow=0,green=0,s=2 ##7]
s==2 -> [red=0,yellow=0,green=1,s=3 ##10]
s==3 -> [red=0,yellow=1,green=0,s=1 ##3]
ok

shows the sketch stored on archive after the last save

  • ] load

loads the sketch in the workspace

  • ] ?

Wath does it show?

4. Summarizing

In this lesson you learned:

  • how to use more LEDs
  • the commands: status, start, pause, play, stop, save, new, cat, load.