这是我们学习Arduino系列的下一部分,这次我们将学习并使用 Arrays 用各种闪烁顺序。如果您想教孩子基本的焊接方法,那么这将是使孩子忙碌的理想项目-只需将LED安装在一块卡上,就可以从标准的9v电池中获取电力。
这也是初学者Arduino编程中的关键课程,尽管如果您不打算实际使用它作为装饰物,我还是强烈建议您将它放在面包板上。
注意:这是一个非常重要的过程。入门级教程,我们当然不会突破任何新领域–是吗?只是一台教授使用阵列和 For循环来处理大量LED 的概念的设备(或其他输出设备)。/em》
如果您还没有这样做,那么现在是跟随该系列其他文章的好时机:
什么是Arduino?您可以使用它吗?
什么是Arduino入门工具包?它包含什么?
您可以通过入门工具包购买更多很酷的组件
入门您的Arduino入门套件?安装驱动程序并设置电路板和端口
Fritzing,这是一个免费的电路图绘制工具
仔细查看Arduino应用程序和示例闪烁程序的结构
》
对于此项目,您至少需要用红色或绿色的 8或9个LED ,每个LED的电阻, 面包板和一些接线。我最近购买了Ooomlout的入门套件,本教程对此进行了介绍,它具有很高的性价比,并且具有比您所需要的更多的LED和电阻器,并且配备了整洁的面包板和Arduino外壳来保存物品。整洁。
这是最后一件事:
以及正在播放的视频。
这是Fritzing的接线图。这是非常基本的–只需将LED的正极引线连接到 2-》任何引脚(最多13针),然后将负极引脚通过电阻串联到地。我在这里使用的值为560欧姆。就是这样。
在软件方面,请考虑如何在代码中写入所有这些LED。您可以这样处理:
int led1 = 2; // first LED on pin 2
int led2 = 3; // second on pin 3
// etc etc
void loop(){
digitalWrite(led1,HIGH);
delay(100);
digitalWrite(led1,LOW);
delay(100);
digitalWrite(led2,HIGH);
// etc
}
您应该能够看到9个LED,这很快就会使人感到疲劳。答案在于 Arrays ,如果您不记得我们关于基本数据类型的Programming 101,基本上就是列表。
语法看起来像这样(将其放在第一个代码中的一行):
int leds[] = {2,3,4,5,6,7,8,9,10};
方括号表示“?变量将是一个 Array 。大括号括起了数组将要保留的引脚号列表。
现在,要使用数组,我们需要通过索引号对其进行寻址。 索引从0 开始,因此总是比其中的事物总数少1(所以有9个项目,最后一个项目的索引为8 )。
您可以这样写:
leds[0]
在我们的例子中,它将获取数字2,因为那是索引0的含义在我们的数组中。
目前为止?大。但是,仅凭这一点对我们来说还不够—我们还需要某种方法来遍历LED阵列的每个元素。为此,我们将使用 for循环。这样做的语法如下:
for(initial variable; condition under which we repeat again; change to variable each iteration)
例如:
for(int i = 0; i《9; i++)
说
开始仅使用变量 i 循环,变量 i 的值为零
仅当我小于9 时才继续循环?(so:0,1,2,3,4,5,6,7,8)
每次,给i加1 (i ++是所以说i = i + 1)
因此,基本上,循环将重复与LED一样多的次数,并且每次重复,我们都会有一个变量 i ,我们可以根据需要使用它。
我们将从此结构开始使用两次。进入设置功能后,使我们所有的引脚都变为输出模式,如下所示:
void setup(){
for(int i = 0;i《 9;i++){
pinMode(leds[i],OUTPUT);
}
}
您能看到我们在那里做了什么吗?不用编写9行代码来声明每个单独的引脚为输出,而是创建一个“ for”循环来重复9次,每次设置另一个引脚。
现在,您应该能够看到如何我们可以在主程序循环中执行完全相同的操作来依次打开每个LED:
void loop(){
for(int i = 0;i《 9;i++){
digitalWrite(leds[i],HIGH);
delay(100);
digitalWrite(leds[i],LOW);
}
}
尝试一下。如果您希望不再次键入它,则可以从此处下载今天项目的完整代码(尽管我鼓励您这样做,因为它有助于学习过程)。
好的,现在我们有了一个相当无聊的照明顺序。让我们编程另一个。只是为了好玩,让我们使其完全随机。用以下代码替换主循环代码:
void loop(){
int randomLed = random(0,8);
digitalWrite(leds[randomLed],HIGH);
delay(50);
randomLed = random(0,8);
digitalWrite(leds[randomLed],LOW);
}
我们没有使用“ for”循环遍历每个LED,而是从0-9中选择一个随机数,然后将其闪烁。
我今天要把它留在那里,因为您现在应该已经掌握了足够的知识来编写所有新序列并进行循环实验。为了证明这一切是多么容易,我挑战了我的妻子,想出一个她想看的序列,然后得到了她自己编程,只给出了代码和课程。到目前为止。她想出了这个,所以看看您是否可以将其匹配做作业!
责任编辑:wv
-
Arrays
+关注
关注
0文章
6浏览量
6407
发布评论请先 登录
相关推荐
评论