Loading...

Reference   Language | Libraries | Comparison | Changes

函数

把代码分段写入函数使程序员能编写模块化的代码,函数能执行一个特定的任务,然后返回代码中调用它的地方。创建函数的典型情况是当程序中需要多次进行相动的动作时。

对于习惯用 BASIC 的程序员,Arduino 中函数的作用与子程序(BASIC 中的 GOSUB)相同。

把代码段写成函数有许多好处:

  • 函数可以使程序显得井井有条。通常,这有助于概念化程序。

  • 函数使一组动作代码只需要出现一次,所以一个函数也只需要编写和调试一次。

  • 这也同时减少了修改代码时产生错误的可能。

  • 函数使整个程序变得更小更紧凑,因为部分代码被重用了多次。

  • 模块化的函数命名代码更方便重复使用,同时,使用函数可以使提高代码的可读性。

在 Arduino 程序中有2个必需的函数:setup() 和 loop()。其它函数必需创建在这两个函数的括号之外。下例中我们创建了一个函数,把两个数相乘。

例子

要调用这个简单的函数,需要传送参数给它,并且数据类型也要符合要求:

void loop{
int i = 2;
int j = 3;
int k;

k = myMultiplyFunction(i, j); // k now contains 6
}

函数需要在其他函数之外declared, 所以 "myMultiplyFunction()" 可以放在 "loop()" 函数之前或之后。

整个程序看起来就象这样:

void setup(){
  Serial.begin(9600);
}

void loop() {
  int i = 2;
  int j = 3;
  int k;

  k = myMultiplyFunction(i, j); // k now contains 6
  Serial.println(k);
  delay(500);
}

int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}

另一个例子

这个函数用 analogRead() 重复五次读取一个传感器并计算平均值,再把数据调整为8位(0-255)并反转,最后返回反转后的值。

int ReadSens_and_Condition(){
  int i;
  int sval = 0;

  for (i = 0; i < 5; i++){
    sval = sval + analogRead(0);    // sensor on analog pin 0
  }

  sval = sval / 5;    // average
  sval = sval / 4;    // scale to 8 bits (0 - 255)
  sval = 255 - sval;  // invert output
  return sval;
}

要调用这个函数,只需要把它赋给一个变量:

int sens;

sens = ReadSens_and_Condition();

Reference Home

勘误、提议和新的文档可以张贴到 论坛.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.