Loading...

Learning   Examples | Foundations | Hacking | Links

第一个程序

在入门指南里(Windows, Mac OS X, Linux), 你上传了一个能够闪烁LED的程序。在这个教程里,你将了解这个程序的每一个部分是如何工作的。

Sketch

Arduino 的程序称为 sketch。它是一个可以上传并运行在 Arduino 板上的代码单元。

注释

Blink 程序开头的几行是 注释:

/*
 * Blink
 *
 * The basic Arduino example.  Turns on an LED on for one second,
 * then off for one second, and so on...  We use pin 13 because,
 * depending on your Arduino board, it has either a built-in LED
 * or a built-in resistor so that you need only an LED.
 *
 * http://arduino.cc/en/Tutorial/Blink
 */

所有介于/**/ 之间的代码在运行程序时都会被 Arduino 忽略(每行开头的*仅仅是为了使注释看起来美观一些,并不是必需的)。注释是为那些需要读懂源程序的人写的: 解释程序做了什么,它如何工作,或为什么这样编写。给自己的程序加注释是个好习惯,并且当你修改代码时应当同时更新注释。这样能帮助别人从你的程序中学习或修改你的代码。

还有另一种风格的注释方法,用于注释较短的内容,仅对单行起作用。这样的注释以 // 开始,一直到行尾。例 如以下行:

int ledPin = 13;                // LED connected to digital pin 13

在这里 "LED connected to digital pin 13" 就是注释。

变量

变量 是保存数据片段的地方。它拥有一个名字、一个数据类型,还有一个值。比如,Blink 程序中上例的一个就声明了一个变量,它的名字是ledPin, 类型是int, 初始值是13。它用来指示 Arduino 的哪一个引脚连接了LED。每当代码中出现ledPin这个名字,它的值就被取出。在这个例子中,程序的作者也可以不必纠结于创建这个ledPin变量,完全可以直接在每一个需要引脚编号的地方直接写上13。使用变量的好处是当需要把LED移到另一个引脚时会变得更轻松:你只需要修改给变量赋初值的那一行。

不管怎样,变量的值在程序运行过程中经常会改变。例如,你可以在从一个输入端读取一个值,并保存到某个变量。在变量教程里有更多信息。

函数

函数 (也可以称为过程子程序)是可以在程序中调用的已命名的代码片段。例如,以下是 Blink 范例中的 setup() 函数定义:

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

第一行提供了函数的一些信息,比如函数的名字是"setup"。函数名前后的文字指定了它的返回类型和参数(这些在稍后解释)。在{} 之间的代码称为函数体: 即函数所做的事情。

你可以call一个已经定义的函数(可以是你的程序中的函数或 Arduino 语言中定义的函数)。例如, pinMode(ledPin, OUTPUT); 这一行调用了 pinMode() 这个函数,并传给它2个parameters: ledPinOUTPUT。这些参数在 pinMode() 函数内使用,确定要设置的引脚和模式。

pinMode(), digitalWrite(), and delay()

pinMode() 函数把一个引脚配置为输入端或输出端。要使用它,你需要给它传送一个引脚编号和一个 INPUT 或 OUTPUT 常量。当配置为输入端(INPUT)时,引脚可以检测到传感器(比如按钮开关)的状态;这在稍后的教程中讨论。作为输出端,它可以驱动一个执行装置,比如LED。

digitalWrite() 函数使引脚输出一个值。例如以下代码:

digitalWrite(ledPin, HIGH);

ledPin (13号引脚) 设置为 HIGH, 即 5V。给一个引脚写入 LOW 即把该引脚连接到地,即0V。

delay() 使 Arduino 在执行下一行之前等待一段时间(根据给出的数值,单位毫秒)。1秒=1000毫秒,所以代码:

delay(1000);

引起一秒的延迟。

setup() 和 loop()

在每个 Arduino 程序中都有两个特殊的函数:setup()loop()setup() 只在程序开始时调用一次。这里适合做一些设置工作,如设置引脚的工作模式或初始化程序库等。loop() 函数是大多数程序的中心,它是被重复调用的。在程序中必需包含这两个函数,即使你并不需要它。

练习

1. 修改代码,使 LED 亮 100ms,熄 1000ms。

2. 修改代码使 LED 在程序开始时点亮,并保持点亮。

参见