使用Arduino和MATLAB通过电位器控制RGB LED
我想介绍一下本周的客座博主Ankit德赛.Ankit在MathWorks的测试和测量团队工作。Ankit曾写关于用MATLAB在两台计算机之间传输数据。在这篇文章中,他将讨论如何使用MATLAB的Arduino支持包。金宝app
Arduino作为一个面向学生、业余爱好者和工程师的原型平台,正在迅速发展。的MATLAB 金宝appArduino支持包例如,允许您使用Arduino板UNO和Duemilanove,并允许交互式开发和调试。支持包可金宝app以在MATLAB支持的所有平台上工作,不需要任何额外的工具箱。
MATLAB的金宝appArduino支持包使用串口接口在MATLAB中实现与Arduino板的通信。
我最近搞到了Arduino发明家工具包从Sparkfun,并与Onomitra Ghosh,决定使用该工具包和建立一个小项目MATLAB 金宝appArduino支持包.我决定从一个简单的项目开始,通过电位器控制RGB LED的颜色。
整个项目分为三个阶段:
- 设置Arduino和面包板
- 建立MATLAB和支持程序包金宝app
- 编写MATLAB代码
内容
设置Arduino和面包板
取决于你所开发的平台,Arduino的网站有一个详细的设置Arduino IDE和连接Arduino板的说明集。一旦设置完成,我就在面包板上进行类似的设置CIRC-08来自Sparkfun的Arduino Inventor Kit,除了我使用的是RGB LED而不是绿色LED,因此我没有使用销9——我使用引脚9、10和11.
在这个阶段,Arduino板和其他组件都准备好了。
建立MATLAB和支持程序包金宝app
MATLAB支金宝app持包Arduino附带一个服务器程序adiosrv.pde可以在Arduino板上下载。一旦下载,adiosrv.pde威尔:
- 等待并监听MATLAB命令
- 接收到MATLAB命令后,执行并返回结果
我将服务器程序编写/下载到Arduino板的步骤如下:
- 打开Arduino IDE
- 选择adiosrv。通过在IDE中通过文件>打开导航pde文件
- 点击上传按钮
我现在已经准备好在MATLAB中编写代码了。
编写MATLAB代码
MATLAB对金宝appArduino的支持包提供了一个非常容易使用的功能集,可以执行模拟读、模拟写、数字读和数字写等基本操作。
对于本例,我遵循以下顺序:
- 从模拟输入读取一个值销0,我连接电位器的地方
- 根据读取的值计算LED的R,G和B颜色的强度
- 将计算出的R, G和B强度写到模拟输出引脚9、10和11
- 为预定的时间量循环序列
在MATLAB中,上面的序列看起来像:
% Connect to the board a = arduino('COM8');
a.pinMode(9,“输出”);a.pinMode(10,“输出”);a.pinMode(11,“输出”);
%现在启动计时器tic;
当toc/60 < 1%时,运行1分钟。%从模拟引脚读取模拟输入%返回值在0到1023之间sensorValue = a.a ogread (0);
对于从0到511的电位器值,我们将LED从红色褪色到%绿色,保持蓝色恒定在0。如果0 <= sensorValue && sensorValue < 512 greenIntensity = floor(sensorValue/2.0);redIntensity = 255 - greenintensity;blueIntensity = 0;对于电位器的值从511到1023,我们将LED从%绿色褪色到蓝色,保持红色恒定在0。blueIntensity = floor(sensorValue/2.0) - 256;greenIntensity = 255 - blueIntensity;redIntensity = 0;结束
%将强度写入模拟输出引脚。greenIntensity a.analogWrite(10日);blueIntensity a.analogWrite(11日);结束
%关闭会话删除(a);清楚的;
结论
那么,你可能会问,为什么我需要MATLAB,当我可以在Arduino IDE中编写它?答案很简单——交互式开发和调试功能。
当我在这个项目中工作时,有很多情况下我想看到电位计返回的值,因为我在旋转旋钮或快速设置LED的RGB值。使用Arduino IDE,我会更新代码,重新编译它,并上传代码到板之前,我可以看到更新的效果。有了MATLAB支持包,金宝app我就能够在不需要任何额外步骤的情况下动态地调整设置。
请务必参加本次网络研讨会:使用Arduino板和MATLAB学习基本机电一体化概念,了解更多关于模拟和数字I/O以及直流、伺服和步进电机控制的知识。
你用过或者想用Arduino做一些很酷的项目吗?
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。