0% found this document useful (0 votes)
5 views

Lab-05 ES

Uploaded by

Rana Muzzamil
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Lab-05 ES

Uploaded by

Rana Muzzamil
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Lab-05 Embedded System

Finite State Machine

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;

Name: Rana M Muzzamil


Enrollment No.: 02-131222-012
Lab-05 Embedded System
Finite State Machine

}
}
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;

Name: Rana M Muzzamil


Enrollment No.: 02-131222-012
Lab-05 Embedded System
Finite State Machine

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);

Name: Rana M Muzzamil


Enrollment No.: 02-131222-012
Lab-05 Embedded System
Finite State Machine

digitalWrite(green,LOW);
state=goGreen;
break;
}
break;

case LOW: switch (state)


{
case goGreen:
digitalWrite(red,LOW);
digitalWrite(yellow,LOW);
digitalWrite(green,HIGH);
state=goYellow;
break;
case goYellow:
if(flag){ ts=millis();
}
flag=LOW;
digitalWrite(red,LOW);
digitalWrite(yellow,HIGH);
digitalWrite(green,LOW);
if (millis()>ts+2000)
{
state=goRed; flag=HIGH;
}
break;
case goRed:
digitalWrite(red,HIGH);

Name: Rana M Muzzamil


Enrollment No.: 02-131222-012
Lab-05 Embedded System
Finite State Machine

digitalWrite(yellow,LOW);
digitalWrite(green,LOW);
state=goRed;
break;
}
break;
}
}

Name: Rana M Muzzamil


Enrollment No.: 02-131222-012

You might also like