\Fez\Stop Light\Stop Light - Simple
Program.cs
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHIElectronics.NETMF.FEZ;
namespace Stop_Light___Simple
{
public class Program
{
static OutputPort redLight;
static OutputPort yellowLight;
static OutputPort greenLight;
public static void Main()
{
// setup the start button (interrupt port)
InterruptPort startPort = new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.Di2, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
// setup the light pins
redLight = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di6, false);
yellowLight = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di7, false);
greenLight = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di8, false);
// reset the glitch filter
TimeSpan ts = new TimeSpan(0, 0, 0, 0, 600); //600ms
Microsoft.SPOT.Hardware.Cpu.GlitchFilterTime = ts;
startPort.OnInterrupt += new NativeEventHandler(startPort_OnInterrupt);
flashLights();
// wait forever for input
Thread.Sleep(Timeout.Infinite);
}
static void startPort_OnInterrupt(uint data1, uint data2, DateTime time)
{
Debug.Print("Starting the Seqence...");
flashLights();
redLight.Write(true); // start out with a red light
Thread.Sleep(2000);
redLight.Write(false);
greenLight.Write(true);
Thread.Sleep(4000);
greenLight.Write(false);
yellowLight.Write(true);
Thread.Sleep(2000);
yellowLight.Write(false);
redLight.Write(true);
Thread.Sleep(4000);
redLight.Write(false);
// clear the interrupt so we can start the process again
//startPort.ClearInterrupt();
Debug.Print("Seqence Complete.");
}
static void flashLights()
{
Debug.Print("Falshing the LEDs");
bool r = redLight.Read();
bool y = yellowLight.Read();
bool g = greenLight.Read();
//turn off all the lights
if(r) redLight.Write(false);
if(y) yellowLight.Write(false);
if(g) greenLight.Write(false);
for (int i = 0; i < 3; i++) {
redLight.Write(true);
yellowLight.Write(true);
greenLight.Write(true);
Thread.Sleep(350);
redLight.Write(false);
yellowLight.Write(false);
greenLight.Write(false);
Thread.Sleep(350);
}
redLight.Write(r);
yellowLight.Write(y);
greenLight.Write(g);
}
}
}