对于Arduino IDE编程界面的串口监视器,你不需要为它编写程序,它本身就可以实现字符收发的功能,你用Arduino编程界面编写的程序是Proteus仿真图中Arduino单片机的串行通讯程序,以及电位计电压值采集和LED灯亮灭输出的程序。程序如下。
/*任务:调节电位计滑动抽头与地之间的电压,并把
电压值显示在上位机Arduino IDE编程环境的串口监视器里。
同时,通过串口监视器输入字符'a',发送到Proteus环境下的
下位机Arduino单片机,让与之相连的LED灯熄灭。
*/
int led=9; //把LED连在Arduino数字端口9
int potpin = 0; //把电位计连在Arduino模拟端口0
//初始化
void setup()
{
Serial.begin(9600); //启动串行通讯,波特率为9600b/s
pinMode(led,OUTPUT); //申明数字端口9为输出端口
digitalWrite(led,HIGH); //初始化LED灯为熄灭状态
}
//主程序
void loop()
{
float sensorValue = analogRead(potpin); //读取电位计采样值
float voltage=sensorValue/1023*5;//采样值0-1024转换为0-5V电压值
Serial.print("voltage = ");//在Arduino IDE的串口监视器实时显示电压值
Serial.print(voltage);
Serial.println(" V");
char val;//定义变量val,用于暂存上位机发送来的字符
if(Serial.available()>0)//如果上位机发送来了字符
{
val=Serial.read(); //读取上位机发来的字符,并保存到val
Serial.println(val); //显示接受到的字符
if(val=='a')//如果上位机发送字符'a',
{
digitalWrite(led,LOW); //点亮LED灯
}
if(val=='b')//如果上位机发送字符'b',
{
digitalWrite(led,HIGH);//熄灭LED灯
}
}
delay(100);//延时100ms
}
把两个计算机的串口波特率都设置为9600b/s,COM7和COM8正确分配给上、下位计算机,再运行以上程序,就会看到视频中展示得那样的实验现象。
四、结束语
Arduino在国外创客界十分流行,但在国内才刚刚起步,所以如何让越来越多的DIY爱好者进入Arduino大门,就需要降低这扇大门的门槛。降低门槛不仅仅是Arduino的易学好用和丰富网络共享,还有就是要降低初学者的硬件成本投入,如何解决少花钱,而多学习Arduino,Proteus仿真是一个很好的途径。