Use MATLAB and the Arduino UNO Board to simulate the operati

Use MATLAB and the Arduino UNO Board to simulate the operation of a traffic signal. The Traffic Signal shall include the standard Red-Amber-Green lights as well as a left turn arrow and a pedestrian \"DONT WALK\" - \"WALK\" sign. Represent the signals with LEDs. The pedestrian signals shall be initiated with a push-button input. Simulate only one of the four signals at an intersection. Create a State Diagram to illustrate the operation of the system. Create a video to show the system in operation. Upload the project documentation and the video to Blackboard.

Solution

function traffic ( cycle_num )

cars = 0;
cars_in = 0;
cars_out = 0;
car_wait_cycles = 0;
cycle = 0;
cycle_length = 10;
green_cycles = 2;
green_timer = 0;
light = \'r\';
p = 0.3;
red_cycles = 4;
red_timer = 0;
% plotting data
plot_data = zeros(2,cycle_num+1);
% handling first cycle
plot_data(1,cycle+1) = cycle;
plot_data(2,cycle+1) = cars;

prq ( cars, light, cycle );

for cycle = 1 : cycle_num

r = rand ( cycle_length, 1 );
cars_new = sum ( r < p );
cars = cars + cars_new;
cars_in = cars_in + cars_new;

% Handle this time cycle depending on whether the light is green or red.

if ( light == \'g\' )
[ cars, cars_out, light, green_timer ] = go ( green_cycles, cars, ...
cars_out, light, green_timer );
else
[ cars, light, red_timer ] = stop ( red_cycles, cars, light, red_timer );
end
% calculating how many are waiting
car_wait_cycles = car_wait_cycles + cars;

prq ( cars, light, cycle );

plot_data(1,cycle+1) = cycle;
plot_data(2,cycle+1) = cars;

end

plot ( plot_data(1,1:cycle_num+1), plot_data(2,1:cycle_num+1) )
xlabel ( \'Time Cycles\' )
ylabel ( \'Cars Waiting\' )
title ( \'Traffic waiting at a Light\' )

fprintf ( 1, \'\ \' );
fprintf ( 1, \' Number of cycles = %d\ \', cycle_num );
fprintf ( 1, \' Simulated time = %d seconds\ \', cycle_num * cycle_length );
fprintf ( 1, \' Number of cars in = %d\ \', cars_in );
fprintf ( 1, \' Number of cars waiting = %d\ \', cars );
fprintf ( 1, \' Number of cars out = %d\ \', cars_out );
fprintf ( 1, \' Percentage Out/In = %7.1f%%\ \', 100 * cars_out / cars_in );
wait_average_seconds = car_wait_cycles * cycle_length / cars_in;
fprintf ( 1, \' Average wait = %7.2f seconds\ \', wait_average_seconds );
wait_average_lights = car_wait_cycles / cars_in / ( red_cycles + green_cycles );
fprintf ( 1, \' Average wait = %7.2f light cycles\ \', wait_average_lights );

return
end
function [ cars, cars_out, light, green_timer ] = go ( green_cycles, cars, ...
cars_out, light, green_timer )
cars_through = min ( 8, cars );

cars = cars - cars_through;
cars_out = cars_out + cars_through;
green_timer = green_timer + 1;

if ( green_cycles <= green_timer )
light = \'r\';
green_timer = 0;
end

return
end
function [ cars, light, red_timer ] = stop ( red_cycles, cars, light,red_timer )

red_timer = red_timer + 1;

if ( red_cycles <= red_timer )
light = \'g\';
red_timer = 0;
end

return
end
function prq ( cars, light, cycle )
fprintf ( 1, \'%4d \', cycle );
if ( light == \'r\' )
fprintf ( \'R \' );
else
fprintf ( \'G \' );
end
i = cars;
c = floor ( i / 100 );
i = i - 100 * c;
for j = 1 : c
fprintf ( \'C\' );
end
x = floor ( i / 10 );
i = i - 10 * x;
for j = 1 : x
fprintf ( \'X\' );
end
for j = 1 : i
fprintf ( \'I\' );
end
fprintf ( 1, \'\ \' );

return
end

 Use MATLAB and the Arduino UNO Board to simulate the operation of a traffic signal. The Traffic Signal shall include the standard Red-Amber-Green lights as wel
 Use MATLAB and the Arduino UNO Board to simulate the operation of a traffic signal. The Traffic Signal shall include the standard Red-Amber-Green lights as wel

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site