Write to Arduino Analog pins from Simulink

9 views (last 30 days)
I'm trying build and deploy simulink models to Arduino Uno using the "Simulink support package for Arduino hardware". I need to change the pin mode of pin "A0" to output and wirte to it. I know it's possible using the "Matlab support package" but the "Digital Output" block in the Simulink package doesn't seem to accept anything other than an integer between 0-13 for pin number.
If it's impossible, any hacks would be welcome (like calling the matlab function from Simulink etc. )
Thanks in advance for your answers

Answers (1)

nick
nick on 7 May 2024
Hi mahdi,
The digital output block can only handle the digital output pins (0-13). Any value greater than 13, representing A0-A5, will throw an error.
You may use the "S-function Builder" block that interprets the Arduino IDE Code to S-function as a workaround.
  • In the editor window of S-Function builder add the necessary Arduino libraries and C++ S-function libraries under ‘libraries’ tab.
  • In the ‘Ports and Parameters’ tab, under ‘Input ports’ add the required inputs and outputs under ‘Output ports’ .
  • Map the logic from Arduino IDE to following methods of s-function :
  • "<system_name>_Start_wrapper" & "<system_name>_Terminate_wrapper" - Allocate and deallocate memory at the start and the end of simulation.
  • "<system_name>_Outputs_wrapper" - Enter the code that computes the outputs of the S-function at each simulation time step.
  • "<system_name>_Update_wrapper" - Enter the code that computes the value of discrete states at the next time step using the values at the current time step.
You may refer to the following documentation to learn more about building S-Functions automatically using "S-Function Builder" block :
Hope this helps.

Community Treasure Hunt

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

Start Hunting!