什么是Arduino?
Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。
如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。
Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣。
维基百科的定义
Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。
Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。
Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。
二十一、Arduino 通讯函数 Serial.begin()
Arduino的Serial.begin()是一个函数,用于初始化串口,并指定波特率(baudrate)。波特率是指每秒传输的位数,一般有9600、115200等常用值。波特率越高,传输速度越快,但也越容易出错。波特率应与通信双方保持一致,否则会导致乱码或无法通信。
Serial.begin()的适用范围:
1)用于在setup()函数中设置串口的参数,比如波特率、数据位、校验位、停止位等。例如,如果要设置串口的波特率为9600,数据位为8,校验位为无,停止位为1,可以用Serial.begin(9600)函数。
2)用于在loop()函数中重新设置串口的参数,比如根据不同的模式或状态切换不同的波特率。例如,如果要在loop()函数中根据一个开关变量决定是否使用串口,并且使用不同的波特率,可以用Serial.begin(baudrate)函数切换波特率。
3)用于在自定义的函数中初始化串口,比如在封装了一些串口相关的功能时。例如,如果要定义一个自定义的函数来发送一个字符串到串口,并且需要指定波特率,可以用Serial.begin(baudrate)函数初始化串口。
主要应用场景:
1)与计算机通信:通过使用Serial.begin()函数,可以将Arduino与计算机进行串口通信,实现与计算机的数据交互。这对于通过计算机控制和监控Arduino的操作非常有用,如通过串口发送指令、接收传感器数据等。
2)与其他设备通信:通过串口通信,Arduino可以与其他嵌入式设备、传感器、执行器等进行通信。例如,通过串口与无线模块通信,实现无线数据传输;或者与LCD显示屏、蓝牙模块等外部设备通信,实现数据显示和控制等功能。
3)调试和故障排除:在开发过程中,使用Serial.begin()函数可以在串口监视器上输出调试信息,帮助进行程序调试和故障排除。通过在关键位置插入输出语句,可以实时监测变量值、程序流程等信息,便于分析和定位问题。
Serial.begin()的使用注意事项有以下几点:
1)Serial.begin()需要一个参数,即波特率(baudrate)。如果没有指定波特率,或者指定了不支持的波特率,可能会导致意外的结果。一般情况下,建议使用9600或115200作为常用的波特率。
2)Serial.begin()没有返回值。它只是简单地初始化串口,并不会检查串口是否成功打开或是否有错误发生。如果要检查串口是否已经初始化,可以使用if (Serial)语句。
3)Serial.begin()只能初始化默认的串口(Serial),不能初始化其他的串口(比如Serial1、Serial2等)。如果要初始化其他的串口,需要使用相应的对象名(比如Serial1.begin(baudrate))。
以下是Arduino的Serial.begin()几个实际运用程序案例:
例1:设置串口的参数
void setup() {
//初始化串口,并设置波特率为9600
Serial.begin(9600);
}
void loop() {
//打印一些信息,并换行
Serial.println("Hello, world!");
//延时1秒
delay(1000);
}
例2:切换不同的波特率
//定义一个开关变量
bool useSerial = true;
//定义两个不同的波特率
const int baudrate1 = 9600;
const int baudrate2 = 115200;
void setup() {
//初始化串口,并设置默认的波特率为9600
Serial.begin(baudrate1);
}
void loop() {
//如果开关变量为真
if (useSerial) {
//重新设置串口的波特率为115200
Serial.begin(baudrate2);
//打印一些信息,并换行
Serial.println("Using serial...");
}
//延时1秒
delay(1000);
}
例3:初始化自定义的函数
//定义一个自定义的函数,用于发送一个字符串到串口,并指定波特率
void sendString(String s, int baudrate) {
//初始化串口,并设置波特率
Serial.begin(baudrate);
//发送字符串,并换行
Serial.println(s);
}
void setup() {
//无需在setup()函数中做任何事情
}
void loop() {
//调用自定义的函数,发送一个字符串到串口,并指定波特率为9600
sendString("Hello, world!", 9600);
//延时1秒
delay(1000);
}
案例4:与计算机通信
void setup() {
Serial.begin(9600); // 设置波特率为9600
// 初始化设置
// ...
}
void loop() {
// 执行其他操作
// 与计算机通信
if (Serial.available()) {
// 读取计算机发送的指令或数据
char command = Serial.read();
// 根据指令执行相应操作
if (command == 'A') {
// 执行操作A
} else if (command == 'B') {
// 执行操作B
}
// 执行其他操作
// ...
}
}
案例5:与无线模块通信
#include <SoftwareSerial.h>
SoftwareSerial wirelessSerial(10, 11); // 使用软串口库创建一个虚拟串口对象
void setup() {
Serial.begin(9600); // 设置与计算机通信的波特率
wirelessSerial.begin(9600); // 设置与无线模块通信的波特率
// 初始化设置
// ...
}
void loop() {
// 执行其他操作
// 与无线模块通信
if (wirelessSerial.available()) {
// 读取无线模块发送的数据
byte data = wirelessSerial.read();
// 处理接收到的数据
// ...
// 执行其他操作
// ...
}
}
案例6:调试和故障排除
void setup() {
Serial.begin(9600); // 设置波特率为9600
// 初始化设置
// ...
}
void loop() {
// 执行其他操作
// 示例调试输出
int sensorValue = analogRead(A0);
Serial.print("Sensor value: ");
Serial.println(sensorValue);
// 执行其他操作
// ...
}
案例7:通过串口发送数据
void setup() {
Serial.begin(9600); // 初始化串口,波特率为9600
}
void loop() {
// 发送数据到串口
Serial.println("Hello, World!");
// 延时一段时间
delay(1000);
}
案例8:通过串口接收数据
void setup() {
Serial.begin(9600); // 初始化串口,波特率为9600
}
void loop() {
if (Serial.available()) {
// 读取串口接收到的数据
char data = Serial.read();
// 处理接收到的数据
// ...
}
}
案例9:通过串口接收和发送数据
void setup() {
Serial.begin(9600); // 初始化串口,波特率为9600
}
void loop() {
if (Serial.available()) {
// 读取串口接收到的数据
char data = Serial.read();
// 处理接收到的数据
// ...
// 发送数据到串口
Serial.println("Data processed.");
}
}
这些案例展示了Serial.begin()的一些常见应用。通过调用Serial.begin(),我们可以初始化串口并设置通信参数,以便进行数据的发送和接收。请确保在使用Serial.begin()之前正确连接串口,并根据具体需求设置正确的波特率。同时,注意在串口通信的接收和发送代码中使用相应的函数来进行数据的读取和处理。