Hi all! Could you please help me understand this piece of code here?
    3 ビュー (過去 30 日間)
  
       古いコメントを表示
    
    WAN NOR NAZIRA MUSTAPA KAMAL
 2021 年 1 月 21 日
  
    
    
    
    
    コメント済み: WAN NOR NAZIRA MUSTAPA KAMAL
 2021 年 1 月 22 日
            %% setup
hold all
a = arduino('COM3', 'Uno');
mpu = i2cdev(a,'0x68'); %mpu adress is normally 0x68
writeRegister(mpu, hex2dec('B6'), hex2dec('00'), 'int16'); %reset
data = zeros(10000,14,'int8'); %prelocating for the speed
j = 1;
a1 = animatedline('Color',[1 0 0]); 
a2 = animatedline('Color',[0 1 0]);
a3 = animatedline('Color',[0 0 1]);
legend('Accel_x','Accel_y','Accel_z')
%% loop
while(true)
    x=1;
    for i=59:72 % 14 Data Registers for Accel,Temp,Gyro
        data(j,x) = readRegister(mpu, i, 'int8');
        x = x + 1;
    end
    y = swapbytes(typecast(data(j,:), 'int16')) %if your system is big-endian remove the swapbytes function
    addpoints(a1,j,double(y(1)));
    addpoints(a2,j,double(y(2)));
    addpoints(a3,j,double(y(3)));
    j = j+1;
    drawnow limitrate
end
0 件のコメント
採用された回答
  Walter Roberson
      
      
 2021 年 1 月 21 日
        It initializes an i2c register on the arduino. It loops indefinitely. Each cycle it reads 14 bytes of data that are in big-Endian order. It rearranges the data to be 16 bit little-Endian signed 16 bit integers. It takes the first three of those and adds them to the plot and ignores the rest.
After 10000 points it will slow down a lot for memory allocation reasons.
The code could be trimmed a bit, such as not reading the values it is not going to use.
7 件のコメント
  Walter Roberson
      
      
 2021 年 1 月 22 日
				You are control-c or clicking the Pause button in the editor? I am concerned that the arduino connection might still be open.
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で MATLAB Support Package for Arduino Hardware についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!