MATLAB Answers

Write and read I2C on arduino

32 views (last 30 days)
Benedikt Kniebel
Benedikt Kniebel on 20 Mar 2020
Answered: Aakriti Suman on 27 Mar 2020
Hey there,
I want to get the data out of the Sensirion SDP810-125Pa via my arduino. With a llibrary that I downloaded from github, the sensor works fine and gives me data via I2C and the serial moitor respectively with the Arduino IDE.
Now I wanna combine it with Matlab.
clear all
clc
myarduino = arduino('COM3','Uno','Libraries','I2C');
%scanI2CBus(myarduino,0);
pressureSensor = device(myarduino,'I2CAddress',0x25,'bitrate',100000);
write(pressureSensor, 0x361E, 'uint16');
data = read(pressureSensor, 2,'uint16');
disp(data);
I configured the I2CAddress but now it gives me the followin error.
Error using Untitled (line 6)
Error occurred while reading data from the I2C device. Check the connections between the hardware and device, clear the device object and create a
new one.
Thanks for your help!

  0 Comments

Sign in to comment.

Answers (2)

Aakriti Suman
Aakriti Suman on 27 Mar 2020
I understand that you want to use I2C devices on Arduino hardware.
The address that you are using for I2C communication seems incorrect. The bus address used for I2C comunication on Arduino hardware is 0x48. You can also scan the I2C bus to get the I2C address. You can try the below code snippet.
% connect all the I2C devices with the arduino and then perform the following snippet
myarduino = arduino('COM4','Uno','Libraries','I2C') % assuming that the arduino hardware is connected in COM4 serial port.
add = scanI2CBus(myarduino);
Here is an example documentation of the usage of I2C devices on arduino hardaware. This will help you in understanding the I2C communication with arduino hardware in detail. https://in.mathworks.com/help/supportpkg/arduinoio/ug/measure-temperature-from-i2c-device-on-arduino-hardware.html
I am also attaching a document which will help you with the functions that can be used in reading and writing to I2C devices connected to arduino hardware. https://in.mathworks.com/help/supportpkg/arduinoio/i2c-sensors.html?s_tid=CRUX_lftnav

  0 Comments

Sign in to comment.


Harsha Priya Daggubati
Harsha Priya Daggubati on 23 Mar 2020
Hi,
You need to have either a Total Phase Aardvark host adapter or a NI USB-845x adapter board installed to use the i2c interface.
Refer to the following link for installation help:
You can also follow the steps listed here after the installation is successful:
These threads might be of help too:

  3 Comments

Benedikt Kniebel
Benedikt Kniebel on 23 Mar 2020
Thanks for your answer.
Are these links just for the direct connection to my computer? I am using the arduino board to read and write to the i2c bus. Like here?
Is there a difference?
Harsha Priya Daggubati
Harsha Priya Daggubati on 23 Mar 2020
I guess yes. Can you use write as follows similar to the one in the example.
write(pressureSensor, 0x361E, 'uint16');
Benedikt Kniebel
Benedikt Kniebel on 23 Mar 2020
That is what I did and it throws the error above.
I also tried to use another I2C bus number.

Sign in to comment.

Sign in to answer this question.

Products


Release

R2019b