Arduino使用串行监控

在这篇文章中,我将展示Arduino怎么使用串行监控器,这样我们就可以手动调式运行在Arduino上的程序了。

作为一个新手刚开始可能有些疑惑,但是教程是相当简单的,认真阅读,每个人都能做到。

我们会建立一个简单的电路来演示怎么通过串行监控器来接收来自Arduino的信息,发送指令给它。

必备设备

  • Arduino Uno
  • 100欧姆电阻
  • 红色LED
  • 面包板
  • 面包板插线

你可以不使用例题电路就能轻松学会所有的东西,但我发现,做题往往是了解事物的工作原理的最好方法。

示例电路结线

示例电路超级简单,由一个LED组成,纯粹是为了显示通过监视器发送和接收的数据。

连接电路时,只需进行以下步骤即可。如果遇到问题,请参考电路图。

  1. 将红色LED的正极引线连接到2号脚。
  2. 接下来,将一个100欧姆的电阻从负极引出,连接到Arduino的地线上。
Arduino-Serial-Monitor-Circuit-Diagram

Arduino串行监控器代码

我们将使用的代码很简单,它的目的是展示如何使用Arduino串行监控器来查看和发送数据。

我将解释我们正在使用的每一行代码,以及如何在下一个项目中使用它来调试Arduino。

首先,我们要为LED初始化一个整数变量,这是LED的引脚号。我们还要初始化一个名为count的变量,存储LED的开启或关闭时间。

int redLedPin = 2; 
int count = 0;

在setup函数中,首先设置红色LED为输出,这样我们就可以控制其关闭和打开状态。

接下来我们调用serial.begin函数,参数值为9600。我们设置的值被称为比特/秒(波特率)。

波特率可以设置成多种不同的速率,但我们使用9600,因为这个值是默认值,而且在大多数设备上都能正常工作。调用这个函数非常重要,否则你将无法与Arduino进行通信。

void setup() {
  pinMode(redLedPin, OUTPUT);
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Enter Y to turn on the LED:");
}

接下来,我们等待串口初始化并连接到计算机上,然后调用一个名为Serial.println()的函数。通过这个函数,我们可以向Arduino的串口显示器打印一行字。

最后,我们写一个循环函数,这个函数会不断地循环,直到上传新的程序或者关闭Arduino。

在循环函数中,有一个if语句,检查串行缓冲区中是否有数据等待,Serial.available。简单来说就是检查我们是否向Arduino发送了命令,如果有指令,就执行if语句块。

接下来,创建一个名为ch的变量,并调用Serial.read()函数,它会读取当前在串行缓冲区中等待的数据。请记住,这个函数只会得到传入到Arduino的数据的第一个字节。如果你想得到整个字符串,你需要使用类似Serial.readString这样的函数。

如果数据的字节是y或n,就执行相关的if语句块。在这里我们改变LED引脚的输出为高电平或低电平,然后打印出一系列语句。

有两点需要注意。Serial.println打印数据并转到新的一行,而Serial.print会打印数据,但不会换行。

你还可以打印变量,比如下面的代码中的计数示例。这样做可以让你在数据处理时能够调试值。

最后,延迟一秒,并将1加到count中。这段代码只是向你展示了一个将数据添加到变量中,然后通过串行输出打印的例子。

void loop(){
  if (Serial.available()){
    char ch = Serial.read();
    if (ch == 'y' ||	ch == 'Y'){
      digitalWrite(redLedPin, HIGH);
      Serial.println("You have turned on the LED!!");
      Serial.print("The LED was off for ");
      Serial.print(count);
      Serial.println(" seconds");
      Serial.println("If you want to switch it off, simply enter N or n!");
      count = 0;
    }
    if (ch == 'n' ||	ch == 'N'){
      digitalWrite(redLedPin, LOW);
      Serial.println("You have turned off the LED!!");
      Serial.print("The LED was on for ");
      Serial.print(count);
      Serial.println(" seconds");
      Serial.println("If you want to switch it on, simply enter Y or y!");
      count = 0;
    }
  }
    delay(1000);
    count += 1;
}

写完后,就可以把代码部署到Arduino上了。在下一部分,我将告诉你如何连接、接收和发送数据到Arduino上。

连接、接收和发送数据至Arduino

现在代码已经上传到了Arduino,我们需要打开Arduino的串口监视器。这相当简单,只有几个选项需要我解释一下。

要打开串口监视器,选择工具,然后选择串口监视器。另外,按CTRL+SHIFT+M也会弹出同样的窗口。但需要保证你已经连接到Arduino,否则窗口无法打开。

serial-monitor-menu-location

现在你应该看到了如下的窗口

屏幕的顶部,有一个输入区。在这里你可以输入并发送文字到Arduino。要发送你输入的文本,只需按发送按钮即可。

屏幕下面是输出窗口,所有发送的数据都会显示在这里。如果你使用上面的示例代码,你就可以看到Serial.println函数中的文本。

在屏幕的底部,我们有三个不同的选项。

  • 第一个是启动或关闭输出框的自动滚动。
  • 第二个是行结尾选项,你可以设置监控器在你输入或发送到Arduino的指令后自动附加一个行结尾。
  • 第三个是波特率。确保这与你在代码中设置的波特率匹配。如果不匹配,输出的文字会显示的乱七八糟。如果你接收到的是乱码,很可能就是波特率的问题。

基本上,这就是你需要了解的关于串口显示器的基本知识。还有一些更多的东西你可以学习,比如通过串行接口使用字符串等。

你现在应该明白了如何正确使用Arduino串口显示器,希望对你以后的Arduino项目有帮助。如果有什么问题,请一定不要吝啬留言相告。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » Arduino使用串行监控

赞 (0)

评论

5+9=