#include "C:\Users\Coach\MATLAB Drive\DriverBlocks\RoboClaw\RoboClawDriver.h"
// SerialPins uint8 [2,1] Non tunable
HardwareSerial *hSerial = &Serial1;
RoboClaw myRoboClaw(hSerial, 2000);
void setupFunctionRoboClawDriver(uint8_T * SerialPins,int size_vector__1){
Serial.println("Testing Connection");
if (myRoboClaw.ReadVersion(0x80, version)) {
Serial.println("Connected to the RoboClaw!");
Serial.println("Failed to read RoboClaw version.");
void stepFunctionRoboClawDriver(boolean_T *Connected,int size_vector_1){
if(myRoboClaw.ReadVersion(0x80, version)) {
Serial.println(*Connected);
Serial.println("Failed to connect to RoboClaw after retries.");
classdef RoboClawDriver < matlab.System ...
& coder.ExternalDependency ...
& matlabshared.sensors.simulink.internal.BlockSampleTime
properties(Access = protected)
Logo = 'IO Device Builder';
SerialPins = uint8([10;11]);
properties (Access = private)
function obj = RoboClawDriver(varargin)
setProperties(obj,nargin,varargin{:});
methods (Access=protected)
if ~coder.target('MATLAB')
coder.cinclude('RoboClawDriver.h');
coder.ceval('setupFunctionRoboClawDriver', (obj.SerialPins),2);
function validateInputsImpl(obj,varargin)
function Connected = stepImpl(obj)
Connected = boolean(zeros(1,1));
coder.ceval('stepFunctionRoboClawDriver',coder.ref(Connected),1);
function releaseImpl(obj)
methods (Access=protected)
function num = getNumInputsImpl(~)
function num = getNumOutputsImpl(~)
function varargout = getInputNamesImpl(obj)
function varargout = getOutputNamesImpl(obj)
varargout{1} = 'Connected';
function flag = isOutputSizeLockedImpl(~,~)
function varargout = isOutputFixedSizeImpl(~,~)
function varargout = isOutputComplexImpl(~)
function varargout = getOutputSizeImpl(~)
function varargout = getOutputDataTypeImpl(~)
varargout{1} = 'boolean';
function maskDisplayCmds = getMaskDisplayImpl(obj)
num = getNumOutputsImpl(obj);
[outputs{1:num}] = getOutputNamesImpl(obj);
outport_label = [outport_label 'port_label(''output'',' num2str(i) ',''' outputs{i} ''');' ];
num = getNumInputsImpl(obj);
[inputs{1:num}] = getInputNamesImpl(obj);
inport_label = [inport_label 'port_label(''input'',' num2str(i) ',''' inputs{i} ''');' ];
'plot([100,100,100,100]*1,[100,100,100,100]*1);',...
'plot([100,100,100,100]*0,[100,100,100,100]*0);',...
['text(38, 92, ','''',obj.Logo,'''',',''horizontalAlignment'', ''right'');',newline],...
'color(''black'');'], ...
['text(52,50,' [''' ' icon ''',''horizontalAlignment'',''center'');' newline]] ...
function sts = getSampleTimeImpl(obj)
sts = getSampleTimeImpl@matlabshared.sensors.simulink.internal.BlockSampleTime(obj);
methods (Static, Access=protected)
function simMode = getSimulateUsingImpl(~)
simMode = 'Interpreted execution';
function isVisible = showSimulateUsingImpl
function name = getDescriptiveName(~)
function tf = isSupportedContext(~)
function updateBuildInfo(buildInfo, context)
coder.extrinsic('codertarget.targethardware.getTargetHardware');
hCS = coder.const(getActiveConfigSet(bdroot));
targetInfo = coder.const(codertarget.targethardware.getTargetHardware(hCS));
if contains(targetInfo.TargetName,'arduinotarget')
setenv('Arduino_ML_Codegen_I2C', 'Y');
addDefines(buildInfo, '__AVR__');
addIncludePaths(buildInfo, 'C:\ProgramData\MATLAB\SupportPackages\R2024b\aCLI\data\packages\arduino\hardware\avr\1.8.3\libraries\SoftwareSerial\src');
addSourceFiles(buildInfo, 'SoftwareSerial.cpp', 'C:\ProgramData\MATLAB\SupportPackages\R2024b\aCLI\data\packages\arduino\hardware\avr\1.8.3\libraries\SoftwareSerial\src');
buildInfo.addIncludePaths('C:\Users\Coach\Downloads\arduino\RoboClaw');
buildInfo.addIncludePaths('C:\Users\Coach\MATLAB Drive\DriverBlocks\RoboClaw');
addSourceFiles(buildInfo,'RoboClaw.cpp','C:\Users\Coach\Downloads\arduino\RoboClaw');
addSourceFiles(buildInfo,'RoboClawDriver.cpp','C:\Users\Coach\MATLAB Drive\DriverBlocks\RoboClaw');