The setupImpl
and stepImpl
methods
hook the C functions to the System
object™. The initialization
of a digital pin as output needs to be done only once at model initialization.
Hence, the digitalIOSetup
function is called
in setupImpl
. To update the logic state of the digital
output pin, a call to readDigitalPin
is made from
the stepImpl
method. Nothing needs to be done at
termination. Follow these steps to update the initialization, output,
and termination code sections of the DigitalRead System
object you
created in Select System Object Template.
In the MATLAB® Editor, open DigitalRead.m
.
Update the setupImpl
method using
the following code.
methods (Access=protected) function setupImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation setup code here else % Call C-function implementing device initialization coder.cinclude('digitalio_arduino.h'); coder.ceval('digitalIOSetup', 9, 0); end end ... end
The coder.ceval
function executes calls
to the C wrapper functions in digitalio_arduino.h
.
The second and third arguments of coder.ceval
are
the Arduino® hardware pin number and value, respectively.
Update the BuildInfo
method using
the following code.
methods (Static) ... function updateBuildInfo(buildInfo, context) if context.isCodeGenTarget('rtw') % Update buildInfo srcDir = fullfile(fileparts(mfilename('fullpath')),'src'); %#ok includeDir = fullfile(fileparts(mfilename('fullpath')),'include'); addIncludePaths(buildInfo,includeDir); % Use the following API's to add include files, sources and linker flags addSourceFiles(buildInfo,'digitalio_arduino.cpp', srcDir); end end ... end
Update the stepImpl
method with the
following code.
methods(Access=protected) ... function y = stepImpl(obj) %#ok<MANU> y = double(0); if isempty(coder.target) % Place simulation output code here else % Call C-function implementing device output y = coder.ceval('readDigitalPin', 9); end end ... end
Unlike the DigitalWrite
System
object,
the stepImpl
method for the DigitalRead
System
object defines
an output, y
, which is the logical value of the
chosen pin.
Update the releaseImpl
method with
the following code.
methods(Access=protected) ... function releaseImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation termination code here else % Call C-function implementing device termination % No termination code for Arduino end end ... end
In the next section, you will Set Output Port Properties of your system object.
Create a Digital Read Block | Select System Object Template | Set Output Port Properties