Challenge

Project 2-Highway Assistant-Lane Changing Assistant

1. Creating Inputs & Outputs (Signals)

The input and output signals should be defined in your Simulink model and connected to the corresponding blocks. Here are the signals based on the requirements:

Input Signals:

  • Highway_Input_Signal (uint8, range 0 - 255)
  • Enable_Display (uint8, range 0 – 255)
  • Input_Switch (uint8, range 0 – 255)
  • Lane_Input_Signal (uint8, range 0 - 255)

Local Signals:

  • Highway_Display_Mode_1, Highway_Display_Mode_2, Highway_Display_Mode_3, Highway_Display_Mode_4
  • Lane_Display_Mode_1, Lane_Display_Mode_2, Lane_Display_Mode_3, Lane_Display_Mode_4

Output Signals:

  • Display_Mode_1, Display_Mode_2, Display_Mode_3, Display_Mode_4

2. Implementing Requirements in Stateflow

Requirement 1 - Highway_DisplayUnit:

The logic for Highway_Display_Mode signals is implemented using Stateflow.

  1. Create a Stateflow chart with the following input signals: Highway_Input_Signal, Enable_Display, and Input_Switch.
  2. Use the conditions described in the table to transition between states and set the values of the output signals (Highway_Display_Mode_1, Highway_Display_Mode_2, Highway_Display_Mode_3, Highway_Display_Mode_4).

Here’s an example of how the Stateflow logic can be structured for Highway_DisplayUnit:

% Highway_DisplayUnit logic in Stateflow

% Inputs:

% Highway_Input_Signal, Enable_Display, Input_Switch

% Outputs:

% Highway_Display_Mode_1, Highway_Display_Mode_2, Highway_Display_Mode_3, Highway_Display_Mode_4

if Highway_Input_Signal == 1 && Enable_Display == 0 && Input_Switch == 1

Highway_Display_Mode_1 = 232;

Highway_Display_Mode_2 = 183;

Highway_Display_Mode_3 = 41;

Highway_Display_Mode_4 = 94;

elseif Highway_Input_Signal == 1 && Enable_Display == 1 && Input_Switch == 1

Highway_Display_Mode_1 = 213;

Highway_Display_Mode_2 = 183;

Highway_Display_Mode_3 = 9;

Highway_Display_Mode_4 = 94;

end

% Switch block logic for output signals

if Highway_Input_Signal == 1

Display_Mode_1 = Highway_Display_Mode_1;

Display_Mode_2 = Highway_Display_Mode_2;

Display_Mode_3 = Highway_Display_Mode_3;

Display_Mode_4 = Highway_Display_Mode_4;

elseif Highway_Input_Signal == 2

Display_Mode_1 = Lane_Display_Mode_1;

Display_Mode_2 = Lane_Display_Mode_2;

Display_Mode_3 = Lane_Display_Mode_3;

Display_Mode_4 = Lane_Display_Mode_4;

end

% MATLAB test script for validating the system logic

% Define input signals

Highway_Input_Signal = 1;

Enable_Display = 1;

Input_Switch = 1;

Lane_Input_Signal = 6;

% Call the Stateflow chart logic (simulated)

Highway_Display_Mode_1 = 0; Highway_Display_Mode_2 = 0; Highway_Display_Mode_3 = 0; Highway_Display_Mode_4 = 0;

Lane_Display_Mode_1 = 0; Lane_Display_Mode_2 = 0; Lane_Display_Mode_3 = 0; Lane_Display_Mode_4 = 0;

% Implement Highway Display Logic

if Highway_Input_Signal == 1 && Enable_Display == 0 && Input_Switch == 1

Highway_Display_Mode_1 = 232;

Highway_Display_Mode_2 = 183;

Highway_Display_Mode_3 = 41;

Highway_Display_Mode_4 = 94;

elseif Highway_Input_Signal == 1 && Enable_Display == 1 && Input_Switch == 1

Highway_Display_Mode_1 = 213;

Highway_Display_Mode_2 = 183;

Highway_Display_Mode_3 = 9;

Highway_Display_Mode_4 = 94;

end

% Implement Lane Display Logic

if Lane_Input_Signal == 6 && Enable_Display == 0 && Input_Switch == 1

Lane_Display_Mode_1 = 132;

Lane_Display_Mode_2 = 185;

Lane_Display_Mode_3 = 54;

Lane_Display_Mode_4 = 67;

elseif Lane_Input_Signal == 6 && Enable_Display == 1 && Input_Switch == 1

Lane_Display_Mode_1 = 127;

Lane_Display_Mode_2 = 248;

Lane_Display_Mode_3 = 186;

Lane_Display_Mode_4 = 84;

end

% Final Display Mode Logic (Switching)

if Highway_Input_Signal == 1

Display_Mode_1 = Highway_Display_Mode_1;

Display_Mode_2 = Highway_Display_Mode_2;

Display_Mode_3 = Highway_Display_Mode_3;

Display_Mode_4 = Highway_Display_Mode_4;

elseif Highway_Input_Signal == 2

Display_Mode_1 = Lane_Display_Mode_1;

Display_Mode_2 = Lane_Display_Mode_2;

Display_Mode_3 = Lane_Display_Mode_3;

Display_Mode_4 = Lane_Display_Mode_4;

end

% Display the output values

disp('Display Mode Outputs:');

disp(['Display_Mode_1: ', num2str(Display_Mode_1)]);

disp(['Display_Mode_2: ', num2str(Display_Mode_2)]);

disp(['Display_Mode_3: ', num2str(Display_Mode_3)]);

disp(['Display_Mode_4: ', num2str(Display_Mode_4)]);

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.