Matlab function into simulink: variable declaration

Hi, I'm programming an arduino due using a matlab function into simulink. As a test, i try to let the on board let blink and count how many times the led has blinked using the matlab function with the folowing code:
function [LED,counter]= blink(pulse)
%#codegen
counter=0;
LED=0;
while true
if pulse == 1
LED=1;
counter=counter+1;
else
LED=0;
end
end
In this code, pulse is a pulse generator, LED goes to the pin of the on board led. With this code, the led doesn't blink because i guess the function doesn't end because of the while loop so i tried another function
function [LED,counter]= blink(pulse)
%#codegen
counter=0;
if pulse == 1
LED=1;
counter=counter+1;
else
LED=0;
end
with this code, the led will blink, but the counter resets after every loop, but without 'counter=0' there is an error because counter isn't initialized. I tried with the model properties, StartFcn to initialize the counter but that doesn't work, anyone who can help me? Thanks!

답변 (1개)

Walter Roberson
Walter Roberson 2016년 1월 15일

0 개 추천

Use "persistent" ? Though in that particular context I am not sure what the value would initialize to.

댓글 수: 2

Thanks for the answer, but i still get the folowing error
The PERSISTENT declaration cannot be used on function outputs.
Function 'MATLAB Function' (#36.47.57), line 3, column 1:
"persistent"
Launch diagnostic report.
Component: MATLAB Function | Category: Coder error
guess because the persistent command creates an empty matrix, so 'counter' is still undefined.
Do not persistent the output variable, persistent the counter variable and copy the counter variable to the output variable.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Arduino Hardware에 대해 자세히 알아보기

질문:

2016년 1월 15일

댓글:

2016년 1월 15일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by