Write to Arduino Analog pins from Simulink

7 次查看(过去 30 天)
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

回答(1 个)

Neelanshu
Neelanshu 2024-5-7
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.

类别

Help CenterFile Exchange 中查找有关 Arduino Hardware 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by