让你的Arduino和计算机通讯

串口(RS232)是微控制器最常用的通信接口,也往往是从计算机转载程序到这些微控制器中的唯一方法。不过由于现在很多人使用的笔记本电脑上已经没有了传统的串口,见图,而台式机上基本还保留着。Arduino的设计者们早就考虑到了这一点,所以在Arduino里面其实是有一个USB到串口的芯片,这也是之前要安装驱动程序的原因。这样你就完全可以使用USB连接线让Arduino和计算机连接起来,并完全模拟成串口通信的方式进行程序的装载和它们之间的通信。


粗略的说来,串口其实只有Tx和Rx两条数据线,如图所示

查看Arduino上的串口,查看电路板上的丝印层,可以知道占用的是引脚0和引脚1,在装置程序时用它和计算机通信用它,也可如图所所示方式与别的器件进行连接。所以在装载程序时,请保证这两个端口不被其他元器件占用,否则装载可能会失败。
由于Arduino几乎没有自带输出设备,通过连接后打印信息到串口并显示在计算机屏幕上将会是你日后调试程序的必备技能。下面,将以串口的输出和输入函数来说明如何使用Arduino串口。将下面9行程序输入到开发环境中,并装载到Arduino中。保持Arduino和计算机之间USB线的连接,点击开发环境菜单Tools->Serial Monitor(也可按快捷键Ctrl+Shift+M),就可看到图示的串口监控窗口。
void setup()
{
Serial.begin(9600);//设置串口的波特率为9600
}
void loop()
{
Serial.println("Hello Arduino");//输出一行Hello Arduino
delay(5000);//延时5秒
}

我们来讲解这段程序的含义。任何Arduino程序,都必须包含以下两个过程,也可以称为函数,本书后续将通用这两种名称而不再说明,其语法是这样的
返回值类型 函数名(参数)
{
函数体
}
返回值是这个函数执行完以后可能需要带回的结果,其类型可以是整数(int),实数(float)或者字符(char)等等,也可以不带回任何结果,此时应写为空(void),参数也是类似的道理,不过我们一般可以在圆括号里省略什么也不写表示空,当然,你也可以写入void以强调参数为空,但返回值类型里的void不能省略。大括号{}内就是该函数需要执行的语句。让我们来看看Arduino程序里必不可少的两个函数,setup(设置)和loop(循环)
void setup()
{
}
void loop()
{
}
当Arduino一上电启动,或电路板上那个唯一的小按键reset(复位)被按下时,Arduino将会执行一次setup函数大括号中的语句,然后重复循环执行loop函数,直至断电。通常,我们将一些在Arduino执行其功能前需要配置的一系列初始化步骤放在setup过程中,把Arduino需要不断执行的动作放在loop函数中。

Serial.begin(9600);是我们在使用串口前必须配置好的步骤,一般,我们以分号(;)来划分,每个分号隔开每个语句,所以上面程序示例中的分号都不能省略。括号中的9600是波特率,这是一个通信技术中的术语,用于表示串口传输数据的速率。初学者建议采用默认的9600,但必须记住,如果要使用串口,该配置语句必须在串口使用之前已被执行过。
Serial.println("Hello Arduino");是串口的打印行函数,是print line的简化而来,括号中的句子必须用双引号括起来,而且你会发现无法输入中文,即使从别处拷贝而来的中文,在串口监控窗口中显示的也是乱码。
delay(5000);是延时5000毫秒,即5秒。在这五秒时间里,Arduino在停顿在此语句上,什么也不做,所以我们在串口监视窗口中看到的是,每隔5秒都会输出Hello Arduino语句。你可以尝试将5000改成其他数字,甚至去掉该语句,重新装载程序到Arduino中运行,再按快捷键Ctrl+Shift+M,打开串口监视窗口,看看会发生什么现象。
每行双斜杠//后面的字符会变成灰色,这是注释,写给人看的,Arduino运行时会忽略其存在。目前Arduino的开发环境虽然已支持中文界面,但仍无法输入中文,如需书写中文注释可在其它文本编辑软件内输入中文后拷贝至Arduino的开发环境中。
注意,Arduino Mega系列控制板拥有不止一个串口,故使用时与下例有所差别,请参考附录或Arduino Reference。

检测点:

问题1,在例2-1中,串口输出的字符串“Hello Arduino”是位于loop(循环)过程中的,如果我把这个语句移至setup(设置)过程中将会发生什么现象?思考后尝试一下以验证你的判断。

实验,

指导:在开发环境下,选择 “File”->“Examples”->"Communiction"->"ASCIITable"(文件->例子->通信->ASCII码表),将这个开发环境自带的示例程序装载到你的Arduino中运行(暂不需要读懂程序内容),并按快捷键Ctrl+Shift+M打开串口监视窗口查看。

运用互联网知识库,诸如维基百科http://zh.wikipedia.org/,查询有关ASCII码的信息。

打赏

发表评论