哪个网站做简历免费德兴网站seo
太理论的授课,大家都不喜欢,计划把课程案例修改,用arduino来讲解。
1呼吸灯
就是PWM占空比调整,从0~1~0, 电压逐步增减,在led上的电流也是逐步增减,看起来像呼吸灯
2 代码
D11口为PWM口,通过一个电阻R与led连接,最后回到GND。 led两个管脚,长为正,短为负。
采用ESC按键退出led控制。
cleartry% 检查Arduino支持包是否安装if ~exist('arduino.m', 'file')error('请先安装MATLAB Arduino支持包');end% 创建Arduino对象a = arduino('COM7', 'Uno', 'Libraries', 'Servo');% 呼吸灯参数设置pwmPin = 'D11'; % PWM引脚breathingTime = 4; % 完整呼吸周期时间(秒)stepDelay = 0.05; % 亮度变化步长间隔brightness = 0; % 初始亮度delta = 1; % 亮度变化方向% 创建figure用于键盘检测hFig = figure('KeyPressFcn', @keyDetect);set(hFig, 'Name', '呼吸灯控制 - 按ESC退出', 'NumberTitle', 'off');escPressed = false;% 主循环tic;while ~escPressed% 计算正弦波亮度(0-255)timeVal = toc;brightness = (sin(2*pi*timeVal/breathingTime) + 1) * 127.5;%0~255亮度% 写入PWM值writePWMDutyCycle(a, pwmPin, brightness/255);% 检测ESC按键drawnow; % 更新图形界面,处理键盘事件pause(stepDelay);endcatch MEfprintf('程序异常: %s\n', ME.message);
end% 清理工作
if exist('a', 'var')writePWMDutyCycle(a, pwmPin, 0); % 关闭LEDclear a; % 断开Arduino连接
end
if ishandle(hFig)close(hFig); % 关闭图形窗口
end
fprintf('程序已安全退出\n');clear
% 键盘检测回调函数function keyDetect(~, event)if strcmp(event.Key, 'escape')escPressed = true; % 设置退出标志fprintf('检测到ESC按键,退出中...\n');end
end