牛骨文教育服务平台(让学习变的简单)
博文笔记

【Arduino官方教程第一辑】示例程序 5-1 数组

创建时间:2016-05-23 投稿人: 浏览次数:8106

数组

本例中我们使用for循环配合一个数组变量向你展示Arduino中数组的使用。数组是一个有多个”部分”的变量。如果我们把普通变量看做一个盛装值的“杯子”,那么数组就好像是一个“制冰器”。数组就好像是一连串“杯子”,每个杯子都可以存储一个值(不过这些值要为相同类型)。
【译者注:原文为”…,all of which can hold the same maximum value.”(这些值应该有相同的最大值。)个人觉得他写的不够明确和妥当,因而做了修改】

图片来自官网
PS:本图是译者所配。数组其实是一列有顺序的”杯子”,这里选的图不是最贴切(只有一列的制冰器图好难找),大家理解就好。

之前使用for循环的例子会对Arduino或Genuino板上2号到7号引脚的LED进行操作,不过有一些限制:LED的引脚必须是连续的,否则就无法完成按照要求一个接一个的亮起。

而在本例中,我们会向你展示如何让无序的LED灯一个接一个的亮起。为了做到这一点,你需要将引脚的编号放置在一个数组里,然后再for循环中迭代这个数组。(原来是让一个变量自加来达到引脚编号的切换,而本例是按照有引脚编号的数组进行迭代操作。)

本例使用了6个LED,分别通过220Ω电阻连接到板子上的2-7引脚。不过,LED亮起的顺序是由数组中定义的先后顺序决定的,因而不一定是2-7(把引脚编号放入数组其实是很简单的,下面你就会看到,不过要注意,数组元素序号是从0开始的,而且数组的容量是固定的而非可变的)。你可以任意调整引脚顺序,不连续的引脚也可以。只要你在数组中将你连接的LED定义进去就可以了。

完成本例所需的硬件设备

  • Arduino板或Genuino板
  • 6个LED
  • 6个220Ω电阻
  • 跳线
  • 面包板
  • 连接线

电路连接

将六个LED用220Ω电阻分别连接到2-7引脚。
图片来自官网

原理图

图片来自官网

例程代码

/*
  数组

 展示让无序的LED一个接一个按顺序亮起的方法。灯会按照顺序先从数组头 
 的亮到数组尾,然后反过来由尾到头。

 和从前例子不同的是,本例的LED不是必须连续的。你可以任意改变LED连
 接的引脚和顺序。只要在数组中定义即可。

 电路连接:
 * LED从2号引脚连接到GND

 代码公开
 */

int timer = 100;           // 数字越大间隔时间越长
int ledPins[] = {2, 7, 4, 6, 5, 3}; // LED引脚编号数组
int pinCount = 6;           // 引脚个数(应和LED引脚编号数组相同)

void setup() {
  // 数组元素取出时应该是从0开始到pinCount - 1结束。(数组元素是从0开始编号的)
  //用for循环初始化引脚:
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    pinMode(ledPins[thisPin], OUTPUT);
  }
}

void loop() {
  // 从第零个到最后一个:
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    // 给引脚输出高电平:
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
    // 将引脚输出低电平:
    digitalWrite(ledPins[thisPin], LOW);

  }

  // 从最后一个到第零个:
  for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
    // 给引脚输出高电平:
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
    // 将引脚输出低电平:
    digitalWrite(ledPins[thisPin], LOW);
  }
}

相关资料

pinMode()
digitalWrite()
for()
delay()
数组: 通过for循环来展示如何使用数组。
For循环迭代(Iteration): 用for循环控制多个LED。
If条件判断:使用If语句根据输入的条件的变化改变输出条件。
Switch和Case条件语句: 如何从一堆不连续的数字中找到需要的数字。
Switch和Case条件语句2: 第二个switch-case例子,展示了如何根据串口的输入值来采取不同的动作。
While循环: 如何使用while循环来在按钮被按下时校准传感器。


更新进程

日期 日志 译者
2016年5月23日 创建并翻译文档 唐家勋

译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
我的微信公众号欢迎关注,2016年6月开始更新

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。