图片缩略图

ArduinoIO仿真程序包的I2C模块金宝app

version 1.7.0.0 (142 KB) by 卓李
这是一个增强块,它使ArduinoIO包具有I2C总线读取功能。
4.8
4个等级

53下载

更新2014年1月30日

视图版本历史

查看许可证

arduino.m文件中添加了一个新方法i2cRead()。adiosrv.ped文件将相应修改。因此,有了这个附加组件,您的Arduino Uno可以通过Simulink以I2C语言讲话。可以从Matlab命令窗口或Simulink访问I2C读取功能。金宝app
1)在命令窗口,一个示例语法是
a.i2cRead (hex2dec(“5 a”),hex2dec(07年))
其中'5A'表示十六进制格式0x5A的7位设备地址,'07'表示寄存器地址'0x07'。
2) 在Si金宝appmulink中,您可以在Arduino_io_库中找到Arduino I2C读取块。将Arduino I2C读取块放入方框图时,请确保在参数字段中输入正确的设备地址和寄存器地址。帮助文档可在此下载中获取说明。

引用为

卓李(2021)。ArduinoIO仿真程序包的I2C模块金宝app(//www.tatmou.com/matlabcentral/fileexchange/41602-i2c-block-for-arduinoio-金宝appsimulink-package), MATLAB中央文件交换。检索.

意见及评分(34)

阿米特·查兰蒂马斯

Simulink上的IO功能正式支持Arduin金宝appo支持包的数字IO, SPI, I2金宝appC, PWM和ADC自R2018a。看到https://in.mathworks.com/help/金宝appsupportpkg/arduino/ug/金宝appsimulink-io.html有关如何在Arduino上启用Simulink IO的更多信息。金宝app

谢谢,
阿米特

我正在使用windows,您提到的大多数文件路径在我的计算机中都不可用。我在使用matlab 2015a

你好卓,我和“chfakht chfakht”有同样的情况,和“Michael Chen”有同样的问题。我试图读取一个MPU 6050设备使用I2C接口,但当我使用I2C块结果是14800,无论这个传感器是什么位置,或设备地址或我想在设备上读取的方向。

我认为传感器损坏了,但是如果我用Arduino程序测试传感器,它工作得很好。

我的程序只有一个框'Arduino IO Setup (COM3)',一个'Real- Time Pacer(1)'和一个块'Arduino IO I2C Read'。在block Arduino I2C IO Read中,第一项是68,第二项是3C,最后一项是0.05。

任何帮助都将不胜感激,谢谢。

卓李

Hi mahdi,从错误提示中,我认为你没有将Arduino IO文件夹添加到Matlab路径中。也许你没有在上次安装后保存路径。为了解决这个问题,请将ArduinoIO文件夹连同这些子文件夹一起添加到Matlab路径中;或者,转到您的ArduinoIO文件夹并再次运行安装文件。

马赫迪这位设计师

这些街区我都找不到工作
我。我正在运行Matlab 2013b,使用Arduino uno。任何帮助吗?每次我尝试运行一个Simulink块,我得到以下结果:金宝app
"相应的'msfun_arduino_io_setup. "tlc' file for the MATLAB S-function 'msfun_arduino_io_setup' in block 'encoder_sim/Arduino IO Setup' must be located in the current working directory,…
我安装了Arduino IO包,它工作正常,但i2c块有问题
任何帮助都将不胜感激,谢谢

马赫迪这位设计师

这些街区我都找不到工作
我。我正在运行Matlab 2013b,使用Arduino uno。任何帮助吗?每次我尝试运行一个Simulink块,我得到以下结果:金宝app
"相应的'msfun_arduino_io_setup. "tlc' file for the MATLAB S-function 'msfun_arduino_io_setup' in block 'encoder_sim/Arduino IO Setup' must be located in the current working directory,…
我安装了Arduino IO包,它工作正常,但i2c块有问题
任何帮助都将不胜感激,谢谢

哈迪马列

agentroadkill

我目前正在运行MATLAB 2015。这个包有更新的机会吗?文件夹名称似乎已经改变,引起我很多困惑,因为我试图安装这个。

迈克尔•陈

你好,
我用两块arduino uno板来尝试i2c接收块。我使用示例代码(fromhttp://www.arduino.cc/en/Tutorial/MasterWriter)通过i2c发送数据,并使用i2c接收块接收数据。
我得到的所有数据都是14800,我不知道有什么问题。另一个我不确定的问题是寄存器地址。这是否意味着使用以下代码中的寄存器地址#4。
Wire.begin (4);//连接i2c总线与地址#4

卓李

嗨,迈克尔,
通过查看错误消息(xx.tlc),我猜您正在尝试将ArduinoIO包作为实时研讨会(RTW)或目标类型应用程序运行。然而,据我所知,这个包是为“普通”模拟而设计的,而不是“外部”或代码生成。它通过串行通信在服务器-客户端(PC-Arduino)机制上运行。对于你的情况,如果你真的需要运行target,你可以尝试Matlab Arduino支持包,金宝app//www.tatmou.com/hardware-金宝appsupport/arduino-matlab.html

迈克尔•陈

我使用Arduino IO Library中的Servo Write块构建了一个模型并构建了它,但是失败了。在如下错误信息中,我找不到msfun_arduino_servowrite。TLC文件从下载文件。

相应的msfun_arduino_servowrite。tlc的MATLAB函数文件“msfun_arduino_servowrite”块的arduinouno_servocontrol_sweep_1 /伺服写“必须位于当前工作目录,MATLAB功能目录的C: \ MATLAB \ \ R2012b \ ArduinoIO \目标仿真软件,或目录C: \ MATLAB \ \ R2012b \ ArduinoIO \目标模型\ tlc_c '金宝app

卓李

你好,AG,请参阅此下载中的自述文件。hex2dec('5A')和hex2dec('07')是指I2C传感器MLX90614的设备地址和寄存器地址。我以前也遇到过你的问题(阅读15xxx 14xxx),但不确定到底发生了什么。当我在另一台机器上试的时候,它工作了。然后,我回到我的机器,重新安装我的软件包,它恢复了。

卓李

您好,sunnychahal9,请参阅此下载中的自述文件。安装说明在那里。但是,我注意到您使用的是R2014版本,根据JAE的说法,该软件包可能与2014a不兼容。所以,我现在没有一个快速的解决方案,但是如果可能的话,我可以尝试在将来更新这个包。

卓李

你好,J.A.E,谢谢你的反馈。很遗憾得知他们不再支持R2014a版本。金宝app我看到Matlab R2014a为实时workshop (RTW)增加了更多的目标选项,包括Arduino Uno和DUE等。也许你可以尝试目标实现来更好地满足你的需求。

桑尼查哈尔9

你好,我想用这个当我打开“I2c_test”所有的块是红色的和他们说:“未能加载库”arduino_io_lib引用I2c_test / Arduino I2C读”我试图通过支持包安装程序安装它但是它不会认识到文件。金宝app我怎么安装这个文件?

谢谢(使用R2014a)

chfakht chfakht

金宝app带arduino的Simulink:数据采集

你好所有的,
我正在使用simulink中的模型从连接到arduino:MPU6050的传感器进行数据采集,我已经在simulink中安装了硬件支持,但我不知道如何开始构建模型,模型必须通过将其部署到ardu金宝appino中来读取arduino的数据金宝app
我的连接arduino<=>MPU6050是:

Arduino微处理器9150
3.3 v VCC
接地接地
A5症状自评量表
A4 SDA
数字2的整数
接地AD0

任何帮助都将不胜感激
谢谢

G

我使用的是MLX-90614红外温度传感器,这个包与我使用的matlab版本兼容。
但我想知道这个命令是什么意思
a.i2cRead (hex2dec(“5 a”),hex2dec(07年))

真的。

当我运行这个命令,它返回的值像15000,14990,就像这些值。这些值是什么意思?我想要摄氏温度值。我该怎么办?有谁能帮忙吗?

J.A.E.

更多信息:我使用Matlab R2014a。这个Arduino IO包与这个版本的Matlab不兼容

此I2C块是否与Matlab R2014a兼容?

J.A.E.

你好,

看起来不错,

但是Arduino DUE或Arduino DUE matlab包是否容易兼容(http://www.mathworks.nl/hardware-金宝appsupport/arduino-金宝appsimulink.html)?

我最感兴趣的是simulink模块。金宝app我在我的电脑上尝试了一下,但是ArduinoIO包与Arduino DUE不工作(或者如果Arduino DUE matlab包也安装在电脑上也不工作)。

我希望你能帮助我。

艾迪irawan

你好,
好分享英格玛·

英格玛·

嗨,纳克索凯特,看来你和我有同样的问题。我的解决方案是更改卓力提供的arduino.m文件。

arduino开放。m文件,向下滚动到读取I2C主控文件的部分。就在1539行左右。你会发现一行写着fwrite…在第1581行。这一行将地址发送到arduino。这一行似乎需要执行两次。别问我为什么。如果你复制这一行,在1582行后面它应该可以工作。

祝项目顺利!

纳钾石

很棒的包!非常感谢!我用a.i2cRead(hex2dec('5A'), hex2dec('07'))读取温度有一些困难,我得到一个或类似的温度延迟,每次我把我的手放在红外传感器前,我必须执行这行代码两次为了得到30度,因为第一个给我的环境温度,反之亦然,当我把我的手,第一个仍然给了我手的温度(无论我多么等)和第二个给我真实的温度,帮忙吗?谢谢! !

卓李

你好,Ingmar,很抱歉让你久等了。上个月我在国外旅行。上次更新的时候,我发现文件不在我手里。现在,我刚刚提交了更新。

老实说,我反复测试,但仍然没有完全消除超时错误。但是通过设置更长的串行等待时间和添加更多的检查语句,超时很少出现,并且代码可以容忍。

关于您的问题,我猜也许您可以在a.ITG3200Read函数之后放置一个串行刷新,而不是实际的串行写入。但不管怎样,只要它对你有效,你可以继续你的方式。祝你的项目顺利。

英格玛·

你好,卓,非常感谢你的快速回复。我期待着你的最新消息。同时,我写了一个额外的函数来读出我说的陀螺仪。

我找到了一个库支持陀螺仪,所以它是相金宝app当容易补充arduino。adiosrv m。pde和simu金宝applink库带有ITG3200(陀螺仪)读取功能。

这很有趣,因为一开始我收到了同样的错误。第一次执行a.ITG3200Read函数时,我收到超时错误。但当我在a.ITG3200Read函数之后执行第二个fwrite时,我收到了值。任何fwrite函数都可以做到这一点(如果我执行a.analogRead,值也会被发送)。

所以我通过在arduino中添加第二个fwrite命令来解决这个问题。M文件在第一个fwrite之后,因为它似乎在第一个fwrite之后,值被存储在arduino中,通过执行第二个fwrite,它被matlab读取。

我不是一个很好的程序员,但是我可以想象这个解决方案至少有点非正统。但说实话,它似乎起到了作用,所以我不会担心它。

我仍然期待着你的更新,因为你的区块比我所做的要普遍得多。

卓李

你好,英格玛,很抱歉给您带来不便。我记得我在上传区块后不久就发现,我做了一些改进,但从未得到更新。现在,我已经更新了它,在Mathworks处理它几天之后,您应该能够看到更正的文件。它工作得更好,但有时我仍然收到串行读取超时错误,不知道如何消除它。

英格玛·

也代表我非常感谢卓。看到这个块在Simulink中运行将非常棒。金宝app

不幸的是,我遇到了和米奇·托伦斯一样的问题。我试着读一本IMU(https://www.sparkfun.com/下载188bet金宝搏products/10724)连接到Arduino Uno通过i2c块,但没有读取发生,工作空间给我以下警告。

警告:读不成功:在到达终止程序之前发生了超时。

我对IMU上的陀螺仪特别感兴趣,但我也试图读出加速度计(ADXL345),这给了我同样的问题。

你们找到解决办法了吗?

亲切的问候

米奇·托伦斯

首先,感谢这个block!一旦我把它修好,它会帮我节省很多时间。

冒着问编程问题的风险,我在与电机编码器一起实现模块时遇到了一些问题(Vex 269:http://www.vexforum.com/wiki/index.php/Intergrated_Motor_Encoders)。我认为问题是编码器的终止地址(0x4C)与simulink试图访问的是不同的,但我在找到提供的源代码中指定的地址时遇到了麻烦。金宝app我得到的警告是:

警告:读不成功:在到达终止程序之前发生了超时。

我可以通过arduino IDE实现的I2CEncoder库读取编码器,因此我确定硬件设置正确。arduinoIO包的其余部分也可以正常工作。了解吗?

卓李

欢迎你艾迪。我会说,是的,它可以为Mega编辑,但我想象这是一个累赘的工作,包括增加adiosrv。pde文件,arduino。m文件和从Atmega328到Atmega1280的块文件。我认为你建议开发团队“MathWorks课堂资源团队”为Mega发布一个单独的包会更好。

艾迪irawan

谢谢卓。另外一个问题,做Arduino IO块可以编辑为Arduino Mega使用。我目前正在寻找解决方案,以扩大每个块上的端口数量,例如Digital Writer和A/D输入,以使它适合Arduino Mega(可用于所有端口)。目前Arduino IO包的block仅限于Arduino Mega

卓李

Hi Addie,目前,这个block不能与Arduino Target包工作,因为它是不同的机制。Target包支持实时目标,而Ardu金宝appinoIO不是“实时”实时,它是一个主机-目标结构。很抱歉给您带来不便。

艾迪irawan

我现在用的是Arduino Mega,可以和Arduino Target包一起使用吗

卓李

我还没有在2013a上试过,所以我不能保证。如果你不介意,请告诉我更多关于你得到的错误和你正在连接的I2C设备。我会试着改善这个街区。

埃弗里安托塔托

你好卓莉,我已经下载了这个提交,我已经在下载的文件里面按照步骤操作了,但是到现在还不能用,它实际上是和2013a兼容吗?谢谢

卓李

我在自述文件中忘记提到的一件事是,在替换了adiosrv之后。pde,请务必使用Arduino IDE将其上传到Arduino。

MATLAB版本兼容性
使用R2012b创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

I2C_read_block_for_ArduinoIO_package /

用于ArduinoIO包/simulink的I2C读取块/金宝app

I2C_read_block_for_ArduinoIO_package /

用于ArduinoIO包/simulink的I2C读取块/金宝app