欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > MATLAB+Arduino利用板上的按键控制板上Led灯

MATLAB+Arduino利用板上的按键控制板上Led灯

2025/3/31 2:48:35 来源:https://blog.csdn.net/jaz/article/details/146457965  浏览:    关键词:MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用,之前的知识都忘掉了。需要逐步捡起来。

1 熟悉按键的使用

2熟悉灯的控制

1 电路

我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信,读取按键状态并控制 LED 灯的亮灭。

  1. 按键:连接到 Arduino 的数字引脚(例如 D2),另一端接地。(arduino UNO板子上自带了两个按键,通过杜邦线将KEY-L连接到D2

  2. LED:连接到 Arduino 的数字引脚(例如 D13,Arduino Uno 自带 LED),另一端通过限流电阻接地。(uno板自带

2 功能

使用 MATLAB 和 Arduino 实现按键控制 LED 灯的程序。

3 代码

app中查找arduino资源管理器

查看com口,方便编码用(如果是matlab2022版本及以上,且只有一个arduino板挂在电脑上,可省略com口,matlab可以自己查到)

编码: 按键为低电平。

arduinoObj = arduino("COM5", "Uno")
%Configure specified Arduino pins.
configurePin(arduinoObj, "D13", "DigitalOutput");
configurePin(arduinoObj, "D2", "Pullup"); %必须上拉,否则按键无法正确识别% main code
disp('按下按键控制 LED 灯(按 Ctrl+C 退出)...');
while true% 读取按键状态buttonState = readDigitalPin(arduinoObj, 'D2');% 控制 LED 灯if buttonState == 0 % 按键按下(假设按键按下为低电平)writeDigitalPin(arduinoObj, 'D13', 1); % 点亮 LEDdisp('LED 灯亮');elsewriteDigitalPin(arduinoObj, 'D13', 0); % 熄灭 LEDdisp('LED 灯灭');endpause(0.5); % 稍微延迟,避免过于频繁读取
end% 清理
% clear a;
disp('程序结束');
%Clean Up
%Clear variables that are not needed.
clear arduinoObj

4 结果

按键和LED关联功能实现。按键一定要用上拉功能。

5 通过按键判断是否停止程序

手动结束while true 会让arduino产生的通信信息无法清除,为此把arduino板自带的KEY_R按键使用,用它来控制程序启停

KEY_R键必须按下,然后再按KEY——L键 ,程序才能一致执行;否则就会直接退出while循环。

Create an Arduino Connection
Create an Arduino connection using the specified device and connection parameters.
arduinoObj = arduino("COM5", "Uno")Configure Arduino Pins
Configure specified Arduino pins.
configurePin(arduinoObj, "D13", "DigitalOutput");
configurePin(arduinoObj, "D2", "Pullup");
configurePin(arduinoObj, "D3", "Pullup");Read and Write data
Read data from and write data to Arduino pins configured above.disp('按下按键控制 LED 灯(按 Ctrl+C 退出)...');
stopState = readDigitalPin(arduinoObj, 'D3')% 这是反向的?
buttonState = readDigitalPin(arduinoObj, 'D2')
while stopState~=0 %必须一致按着KEY R,才能才能一致循环% 读取按键状态buttonState = readDigitalPin(arduinoObj, 'D2');stopState = readDigitalPin(arduinoObj, 'D3');% 控制 LED 灯if buttonState == 0 % 按键按下(假设按键按下为低电平)writeDigitalPin(arduinoObj, 'D13', 1); % 点亮 LEDdisp('LED 灯亮');elsewriteDigitalPin(arduinoObj, 'D13', 0); % 熄灭 LED
%         disp('LED 灯灭');endpause(0.5); % 稍微延迟,避免过于频繁读取
end% 清理
% clear a;
disp('程序结束');

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词