Arduino 中的子程序

Ammar Ali 2023年10月12日
Arduino 中的子程序

本教程将讨论通过声明函数并在 Arduino 的主代码中调用它们来处理子程序。

Arduino 中的子程序

在 Arduino 中,我们可以声明函数并在主代码中调用它们来处理子程序。代码是逐行执行的,如果我们在一行中调用一个函数,Arduino 将在该行停止并移动到该函数的声明处。

它将执行函数中存在的代码,然后移动到主代码中的下一行。

例子:

void setup() {}
void loop() {
  // code
  Sub_1();
  // code
}
void Sub_1() {
  // code
}

当上述代码中的 Sub_1() 函数行执行时,编译器将移动到 Sub_1() 函数声明并运行其代码。

它将返回主代码并移至下一行。我们可以声明有或没有返回类型的函数。

在上面的代码中,我们使用了 void 关键字,这意味着函数不会返回任何内容,但我们可以更改函数中全局变量的值。

在开始时定义且未被任何函数包围的变量称为全局变量。

让我们定义一个全局变量并使用子程序更改其值。请参阅下面的代码。

int a = 5;
void setup() {}
void loop() {
  // code
  Sub_1();
  // code
}
void Sub_1() { a = 10; }

在上面的代码中,全局变量 a 的值将在子程序 Sub_1() 执行后改变。我们可以在子例程之前和之后打印变量的值来检查它是否工作。

我们还可以定义具有返回类型的函数,当它们被调用时将返回一个值。

要定义具有数据类型的函数,我们必须首先在函数内部写入数据类型、函数名称和要传递的参数。

例如,让我们定义一个函数来查找两个整数的和并将结果作为整数返回。

void setup() {}
void loop() {
  int a = 5;
  int b = 5;
  int c;
  c = Sub_1(a, b);
  // code
}
int Sub_1(int x, int y) {
  int result = x + y;
  return result;
}

在上面的代码中,当使用特定输入调用函数 Sub_1() 时,它将返回两个输入的总和。

请注意,我们在 Sub_1() 函数中传递的变量与我们在 Sub_1() 声明中使用的变量不同。不过,我们可以使用相同的变量,因为它们不是全局的。

函数内部定义的变量只能在该函数内部使用和更改。我们可以使用 return 关键字来返回一个值或一个变量。

我们还可以使用其他数据类型来定义字符串、char 和 long 等函数。如果我们不想返回任何值或变量,我们可以使用 void 关键字来定义函数。

当我们想要编写干净的代码或在代码中多次重复任务时,子例程很有帮助。

如果我们想在一个代码中多次执行一项任务,我们必须多次编写代码,但是我们可以创建一个函数并将代码放入其中,并在主代码中随时调用它。

它将减少时间和空间,并使代码简洁明了。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook