1.前言

    今天我们开始同时讲解理论以及实践。对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当时真是炫了一把,心中无比激动)。

2.数字IO 介绍

    第三课主要用到数字IO口,所以在开始实验之前,我们先来认识一下Arduino的数字IO口。
    数字信号是以0、1表示的不连续信号,也就是以二进制形式表示的信号。在Arduino中数字信号用高低电平来表示,高电平为数字信号1,低电平为数字信号0。Arduino上每一个带有数字编号的引脚都是数字引脚,包括写有"A"编号的模拟输入引脚。使用这些引脚可以完成输入/输出数字信号的功能。
    在使用输入或者输出功能前,需要先通过pinMode()函数配置引脚的模式为输入或者输出模式:

2.1 pinMode(pin,mode)

方法:pinMode(pin,mode)
参数:pin为指定配置的引脚编号,参数mode为指定的配置模式。

    而我们接下来的LED主要需要用输出模式,所以我们需要配置成 pinMode(pin,OUTPUT);配置为输出模式以后,还需要使用digitalWrite()函数使该引脚输出高电平或低电平。

2.2 digitalWrite(pin,value)

方法:digitalWrite(pin,value)
参数:pin为指定输出的引脚编号。参数value为要指定的输出电平,使用HIGH指定输出高电平,使用LOW指定输出低电平。

  • Arduino中输出的低电平为0V
  • 输出的高电平为当前Arduino的工作电压。

    数字引脚除了用于输出信号外,还可用digitalRead()函数读取外部输入的数字信号。

2.3 digitalRead(pin)

方法:digitalRead(pin)
参数:pin为指定读取状态的引脚编号。
注意:

  • 当Arduino以5v供电时,会将范围为-0.5v-1.5v的输入电压作为低电压识别,将范围在3-5.5v的输入电压作为高电平识别。
  • 过高的输入电压会损坏Arduino。在Arduino核心库中,OUTPUT被定义为1,INPUT被定义为0,HIGH被定义为1,LOW被定义0。

3.时间控制函数

    由于我们接下来的实验程序很多都用到延时函数,那么这里就介绍几个:

  • delay() ----- 毫秒级延时
  • delayMicroseconds() ----- 微秒级延时

4.点亮LED

4.1 实验器材

  • LED模块(这里属于共阳极LED模块)

  • Mega2560板子

4.2 实验内容

4.2.1 点亮熄灭单个LED

实验代码

/**
* @Desc 点亮熄灭单个LED
* @author 单片机菜鸟
* @Date  2016/12/2
* 注意:LED的一端接到5V,另外一端接到输出引脚,低电平亮
*/

#define LED 2  //定义2号引脚为LED

void setup() {
  // 将2号引脚设置为输出状态
  pinMode(LED,OUTPUT);
}

void loop() {
  digitalWrite(LED,LOW);//点亮LED
  delay(1000);//延时1s
  digitalWrite(LED,HIGH);//关闭LED
  delay(1000);//延时1s
}

烧写到mega2560板子,连接LED引脚到2端口,正常现象会看到LED闪烁。

4.2.2 经典流水灯

实验代码

/**
* @Desc 流水灯(8个LED依次亮灭)
* @author 单片机菜鸟
* @Date  2016/12/2
* 注意:LED的一端接到5V,另外一端接到输出引脚,低电平亮
*/

#define LED_START 2
#define LED_END  9
#define DELAY_TIME 500 //延时时间,可以调节然后就可以看到亮灭频率

void setup() {
  // 将2-9号引脚设置为输出状态
  for(int i=LED_START;i<=LED_END;i++){
    pinMode(i,OUTPUT);
    digitalWrite(i,HIGH);//灭掉LED
  }
}

void loop() {

  //从引脚2到9引脚,逐个点亮LED,等待1S再熄灭LED
  for(int i=LED_START;i<=LED_END;i++){
    digitalWrite(i,LOW);//LED亮
    delay(DELAY_TIME);
    digitalWrite(i,HIGH);//LED灭
  }

  //从引脚9到2引脚,逐个点亮LED,等待1S再熄灭LED
  for(int i=LED_END;i>=LED_START;i--){
    digitalWrite(i,LOW);//LED亮
    delay(DELAY_TIME);
    digitalWrite(i,HIGH);//LED灭
  }

}

不出意外,应该会看到LED灯流水亮灭.

5.总结

这一节我们主要学到:

  • 数字IO
  • 延时函数的使用
  • 经典流水灯

Arduino学习笔记③ 经典LED的更多相关文章

  1. Arduino学习笔记④ 经典按键实验

    1.前言     我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...

  2. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  3. Arduino学习笔记二:修改LED点灯程序

    看了开源社区的LED控制程序,开始上手代码编写,修改,下载以及调试,原文地址:http://www.arduino.cn/thread-1072-1-1.html,这个帖子写的比较通俗易懂. 自己移植 ...

  4. 【Arduino学习笔记02】第一个Arduino项目——点亮LED Blink.ino程序解读 Arduino程序基本结构 pinMode() digitalWrite() delay()

    /* Blink Turns an LED on for one second, then off for one second, repeatedly. */// define variables ...

  5. Arduino学习笔记⑤ 模拟IO实验

    1.前言     还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能      ...

  6. Arduino学习笔记1---开发环境搭建

    主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...

  7. Arduino学习笔记⑥ 硬件串口通信

    1.前言     Ardunio与计算机通信最常用的方式就是串口通信.在Arduino控制器上,串口都是位于Rx和Tx两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接.该转换芯片 ...

  8. Arduino学习笔记② Arduino语言基础

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  9. Arduino—学习笔记—基础语法

    图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...

随机推荐

  1. [CUDA] 00 - GPU Driver Installation & Concurrency Programming

    前言 对,这是一个高大上的技术,终于要做老崔当年做过的事情了,生活很传奇. 一.主流 GPU 编程接口 1. CUDA 是英伟达公司推出的,专门针对 N 卡进行 GPU 编程的接口.文档资料很齐全,几 ...

  2. Cocos Creator 中 _worldMatrix 到底是什么(上)

    Cocos Creator 中 _worldMatrix 到底是什么(上) 1. (矩阵)Matrix是什么,有什么用 (矩阵)Matrix一个神奇的存在?在开发过程中对里边各项值的含义是不是抓耳挠腮 ...

  3. php 循环从数据库分页取数据批量修改数据

    //批量修改email重复 public function getEmail() { $this->model = app::get('shop')->model('manage'); / ...

  4. node项目的基本目录结构

    1.public目录: 项目公共目录,存放静态资源(img.js.css)和公共资源,404错误提示页面: 2.routor目录: 路由控制器目录,存放路由文件,将所有的业务逻辑都都写在这里: 3.v ...

  5. Codeforces Numbers 题解

    这题只需要会10转P进制就行了. PS:答案需要约分,可以直接用c++自带函数__gcd(x,y). 洛谷网址 Codeforces网址 Code(C++): #include<bits/std ...

  6. linux双网卡绑定为逻辑网卡

    网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术. 生产环境服务器为:DELL 网卡为:光纤 bond需要修改涉及的网卡配置文件 /e ...

  7. swagger2的简单使用

    swagger2的简单使用 优点: 可以生成文档形式的API并提供给不同的团队使用 便于自己单测 无需过多冗余的word文档,这一点很重要,因为我在工作中就遇到这么一个情况,由于开发使用的文档和最新文 ...

  8. C# 反射Reflection——反射反射程序员的快乐

    一.什么是反射 反射Reflection:System.Reflection,是.Net Framework提供的一个帮助类库,可以读取并使用metadata. 反射是无处不在的,MVC-Asp.Ne ...

  9. 隐藏select下拉框的三角按钮

    修改select标签的appearance属性,改成inherit,而不是none. -moz-appearance:inherit;/*?Firefox?*/ -webkit-appearance: ...

  10. Android测试环境配置

    测试是软件开发中非常重要的一部分,Android中是使用junit测试框架,本文使用的是junit4和Android Studio.Android测试主要分两类本地测试和Instrumented测试, ...