Arduino学习笔记③ 经典LED
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的更多相关文章
- Arduino学习笔记④ 经典按键实验
1.前言 我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...
- Arduino学习笔记① 初识Arduino
1.前言 近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...
- Arduino学习笔记二:修改LED点灯程序
看了开源社区的LED控制程序,开始上手代码编写,修改,下载以及调试,原文地址:http://www.arduino.cn/thread-1072-1-1.html,这个帖子写的比较通俗易懂. 自己移植 ...
- 【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 ...
- Arduino学习笔记⑤ 模拟IO实验
1.前言 还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能 ...
- Arduino学习笔记1---开发环境搭建
主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...
- Arduino学习笔记⑥ 硬件串口通信
1.前言 Ardunio与计算机通信最常用的方式就是串口通信.在Arduino控制器上,串口都是位于Rx和Tx两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接.该转换芯片 ...
- Arduino学习笔记② Arduino语言基础
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- Arduino—学习笔记—基础语法
图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...
随机推荐
- 在64系统里执行32位程序出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
安装下glic即可 sudo yum install glibc.i686
- 实操:Could not autowire No beans of 'FastDFS Client' type found 的解决方法
前言: 今天接手了同事之前做的一个小项目,里面涉及到了 FastDFS 的使用.但是当我在本地运行项目的时候,却报了 Could not autowire No beans of 'FastDFS C ...
- PHP操作redis 【转】
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis支持的数据类型有 Stirng(字符串), Lis ...
- [Vue warn]: Duplicate keys detected: 'area'. This may cause an update error.
运行vue程序,浏览器报错: 原因:检测到重复的密钥:'area',因为在使用v-for循环绑定的时候,key的值是唯一的,不能相同,否则会出现意想不到的bug 解决办法:v-for时绑定的key唯一
- Linux版本号的数值含义
Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字.第一个组数字:目前发布的内核主版本.第二个组数字:偶数表示稳定版本:奇数表示开发中 ...
- Python学习笔记整理总结【Django】:Form组件
Form组件 Django的Form主要具有一下几大功能: --生成HTML标签 --验证用户数据(显示错误信息) --HTML Form提交保留上次提交数据 --初始化页面显示内容 1.内置字段 ...
- JAVA线程基础概念及使用
一.线程和进程的区别 在操作系统中所有运行的任务通常对应一个进程,进程是系统进行资源分配和调度的一个独立单位.线程是进程的组成部分,一个进程最少包含一个线程.并发和并行的区别是,并发指的在同一时刻内, ...
- 12.Django基础十之Form和ModelForm组件
一 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户 ...
- php无限级分类实战——评论及回复功能
经常在各大论坛或新闻板块详情页面下边看到评论功能,当然不单单是直接发表评论内容那么简单,可以对别人的评论进行回复,别人又可以对你的回复再次评论或回复,如此反复,理论上可以说是没有休止,从技术角度分析很 ...
- Chrome浏览器启动报错:应用程序无法启动,因为应用程序的并行配置不正确。
因为国庆节了,难得关一次机(可能搞IT的习惯吧),结果给祖国庆祝完70寿辰之后归来,启动电脑,就打不开Chrome浏览器了,报错如下: 应用程序无法启动,因为应用程序的并行配置不正确.有关详细信息,请 ...