Lab-05 ES
Lab-05 ES
LAB-05
TASK-01: Write a sketch to blink the 2 LEDs interfaced with Arduino at a different rate
simultaneously. (i.e. “delay” function limits the designer to perform multitasking from the
controller, so this sketch is implement without utilizing this function).
CODE:
const int led1 = 3;
const int led2 = 5;
int ledstate1 = HIGH;
int ledstate2 = HIGH;
long previoustimeled1 = 0;
long previoustimeled2 = 0;
long led1interval = 1000;
long led2interval = 400;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2,OUTPUT);
}
void loop()
{
unsigned long currenttime = millis();
if(currenttime-previoustimeled1 > led1interval)
{
toggleled1();
previoustimeled1=currenttime;
}
if(currenttime-previoustimeled2 > led1interval)
{
toggleled2();
previoustimeled2=currenttime;
}
}
void toggleled1()
{
ledstate1 = (ledstate1 == HIGH) ? LOW : HIGH ;
digitalWrite(led1, ledstate1);
}
void toggleled2()
{
ledstate2 = (ledstate2 == HIGH) ? LOW : HIGH ;
digitalWrite(led2, ledstate2);
}
TASK-02: Write a sketch to implement the one-way traffic light controller using FSM
concepts. The sensor will work to sense the traffic on the road whose output will be the stimulus
for the state transition.
CODE:
#define goRed 0
#define goYellow 1
#define goGreen 2
int red = 3;
int yellow = 4;
int green = 5;
int sen = 7;
int senState;
static unsigned long ts;
int state=goRed;
bool flag=HIGH;
void setup()
{
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
pinMode(sen, INPUT);
}
void loop()
{
senState=digitalRead(sen);
switch(senState)
{
case HIGH: switch (state)
{
case goGreen: digitalWrite(red,LOW);
digitalWrite(yellow,LOW);
digitalWrite(green,HIGH);
state=goGreen;
break;
case goYellow:
digitalWrite(red,LOW);
digitalWrite(yellow,HIGH); // When Sensor is Sensing the Traffic.
digitalWrite(green,LOW);
state=goGreen; break;
case goRed:
digitalWrite(red,HIGH);
digitalWrite(yellow,LOW);
digitalWrite(green,LOW);
state=goGreen;
break;
}
break;
digitalWrite(yellow,LOW);
digitalWrite(green,LOW);
state=goRed;
break;
}
break;
}
}