arduino 数组流水灯速成手册

1.前言

这个实验教程献给所有大一想努力的新手

2.欣赏成果

arduino 数组流水灯成果

3.安装对应软件

首先先安装对应软件Arduino

网址arduino.cc/en/software

4.学习软件的使用

安装结束,我们进入首页选择我们对应的开发板Arduino UNO
在这里插入图片描述
选择之后就会将UNO开发板作为默认**(UNO开发板适合初学者简单易上手)**
在这里插入图片描述
并将开发板连接到电脑**(注意:后面一定带有后缀,我前面买的盗版无法识别就没有后缀)**

如果没有出现开发板(com)请检查链接器是否连接好或者开发板是否接触不良。

5.知识准备

Serial.begin(9600); 设置波特率与电脑的保持一致(9600)

delay(500);是将灯泡延迟500毫秒

pinMode(2, OUTPUT)是通过pinMode()函数,你可以将Arduino的引脚配置为以下三种模式:
输出(OUTPUT)模式
输入(INPUT)模式
输入上拉(INPUT_PULLUP)模式

const byte LEDs[]={7,8,9};这是数组,他是从一个有三个数的集合(多少个数可以自己定义)
如果不定义从几开始,则从零开始,0,1,2分别对应里面的7,8,9.

6.准备道具

1 × Arduino UNO 板
3 × 330欧姆电阻
3 × LED

在这里插入图片描述

7.代码

const byte LEDs[]={7,8,9};  
const byte total = 3;  
byte index = 0;  
void setup() {  
// put your setup code here, to run once:  
for(byte i = 0; i < total; i++) {  
pinMode(LEDs[i], OUTPUT);  //i的值将从0到4,依序
设置7,8,9引脚为输出引脚。  
}  
}  
void loop() {  
// put your main code here, to run repeatedly:  
for (byte i = 0; i < total; i++) {  
digitalWrite(LEDs[i], LOW);  
}  
digitalWrite(LEDs[index],HIGH);  
index ++;  
if (index == total)  
index = 0;  
delay(500); 
}

接下验证 ,左上角的勾是验证符号

在这里插入图片描述

查看是否验证成功,然后上传

在这里插入图片描述

上传成功就可以欣赏到开头的结果了

8.心得

我认为这是个新的开始我也遇到了很多问题(见下面),但是当我成功做出来了后感到非常自豪,所以我认为在这个时代人类要不断走出自己的舒适圈,才能前进,如果觉得有帮助就请点一下赞,我火速更新下一章,我是FOX,励志做一个博学的萌新。

9.花絮

在看到代码的时候,我就已经在想代码有什么可以修改的了,于是这些问题就诞生了

问题一

首先如果LEDs数组变成了4个引脚即(7,8,9,10)需要修改哪些代码
和连接图?
那我觉得就需要理解代码了
const byte LEDs[]={7,8,9};
const byte total = 3;
这个就是数组,里面三个数都分别对应三个引脚,也是对应下面的3,也就是3个数(还有一些可以看前面的知识引导)
那我们只需要在对应的数组里面加上一个数就可以达到增加一个引脚的条件

const byte LEDs[]={7,8,910};  
const byte total = 4;

在这里插入图片描述
甚至可以在这个基础上加5个,6个甚至更多

问题二

这个电路是通过if循环来来回循环的

if (index == total)  
index = 0;  
delay(500); 
}

那我能不能让它的顺序打乱??
于是我将index = 0;
修改成了index = 3;
于是在第一次灯后,位于7,8号灯便不亮了,于是我有了结论,这是返回值,也就是说,数组里的数是由(0,1,2,3)对应我们(7,8,9,10)号引脚
所以我将代码再次修改

const byte LEDs[]={7,9,8};  
const byte total = 3;

然后位于9号的灯先亮了,接着再到8号!

问题三

然后我在想i++和++i有什么区别
于是我将代码做了比对

#include <stdio.h>
int main() {
    // 测试i++
    int i = 5;
    int a = i++;  // 先把i的原值5赋值给a,再执行i=i+1
    printf("a = %d, i = %d\n", a, i);  // 输出:a=5, i=6

    // 测试++i
    int j = 5;
    int b = ++j;  // 先执行j=j+1,再把新值6赋值给b
    printf("b = %d, j = %d\n", b, j);  // 输出:b=6, j=6
    return 0;
}

然后得知
++i:直接对变量自增,然后返回变量本身(效率略高,无临时值);
i++:需要先保存变量的原始值到临时空间,再对变量自增,最后返回临时值(多一步临时值操作)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值