MATLAB在R2014版之后对Arduino的支持越来越好,很多arduino的玩法也可以移植到MATLAB平台上来,不过由于国内网络原因,MATLAB的arduino支持包要下载的话需要访问外网,而且安装支持包成不成功有时候也与你的MATLAB版本是否是正版有关,我的电脑在安装arduino的simulink支持包时也因为某种原因失败了,一直安装不成功,不过倒是在校园网VPN下成功安装好了MATLAB的Arduino支持包,这也够我拿MATLAB来试试Arduino的新玩法了。
由于MATLAB安装与配置好支持包以及刷入arduino调试通信程序步骤较长,而此文主要关注功能实现,故不在此列出,以后有机会再将步骤详细列出。
在用MATLAB开发之前,我先使用arduino程序编辑器编写好程序Upload到开发板上(电路已搭好)验证其工作是否正常,然后再转为使用MATLAB实现。
arduino程序编辑器代码如下:
//***********************************//
//示例程序(一位共阴数码管)
//***********************************//
//设置控制各段的数字IO脚
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
int dp=4; //定义数字接口:7 6 5 11 10 8 9 4
void digital_0(void) //显示数字0
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW); //关闭G其他段打开,显示0
digitalWrite(dp,LOW); //关闭小数位显示
}
void digital_1(void) //显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
for(j=7;j<=11;j++)
digitalWrite(j,LOW);
digitalWrite(dp,LOW);
}
void digital_2(void) //显示数字2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) //显示数字3
{
unsigned char j;
digitalWrite(g,HIGH);
digitalWrite(d,HIGH);
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void) //显示数字4
{
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);