可以帮忙解释一下下面这些代码分别表示什么函数和什么意思嘛?
%% 采集数据并绘图
% data = zeros(1, 1000);
data = [];
num = 1;
led_state = 1;
%% 采集数据并绘图,根据采集值改变PWM占空比
pic = plot(nan);
xlim([0 1000]);
ylim([0 3.3]);
xlabel('Points');
ylabel('Voltage');
grid on;
while 1
if(num <= 1000)
data(num) = readRegister(PCF8591, hex2dec('40'));
% writePWMDutyCycle(mypi, 16, data(num) / 255);
num = num + 1;
set(pic, 'YData', data*3.3/255, 'Marker', 'o');
drawnow;
else
num = 1;
data = [];
writeLED(mypi, 'led0', led_state);
set(pic, 'YData', data*3.3/255, 'Marker', 'o');
drawnow;
end
led_state = ~led_state;
end
注释如下:
%% 采集数据并绘图
% data = zeros(1, 1000); %生成一个1*1000的全0矩阵
data = []; %data为一个数组
num = 1;
led_state = 1;
%% 采集数据并绘图,根据采集值改变PWM占空比
x=0:1:1000;
y=2*x;
pic = plot(x,y); %画一个空白图
xlim([0 1000]); %设置图的横坐标范围:0-1000
ylim([0 3.3]); %设置图的纵坐标范围:0-3.3
xlabel('Points'); %横坐标轴名称Points
ylabel('Voltage'); %纵坐标轴名称Voltage
grid on; %图中添加网格
while 1 %死循环
if(num <= 1000) %如果num<=1000,
data(num) = readRegister(PCF8591, hex2dec('40')); %读入寄存器64的值并传给data数组。readRegister:从PCF8591设备上的寄存器返回数据作为标量,hex2dec将十六进制数字的文本表示形式转换为十进制数字。
% writePWMDutyCycle(mypi, 16, data(num) / 255); %在 mypi的16引脚设置占空比为data(num) / 255
num = num + 1;
set(pic, 'YData', data*3.3/255, 'Marker', 'o'); %设置图片中纵轴数据为data*3.3/255,数据标记点为圆圈
drawnow; %刷新屏幕
else
num = 1;
data = [];
writeLED(mypi, 'led0', led_state); %向mypi的led0写入状态led_state,也就是设置led为高或低电平
set(pic, 'YData', data*3.3/255, 'Marker', 'o');
drawnow;
end
led_state = ~led_state; %led电平状态取反,1变0.0变1
end