认识LED灯

一、初识LED灯

  LED灯是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED灯逐步融入到生活中的方方面面:室内外的照明、电子指示牌、酷炫的舞台灯光、车辆的转向灯等等都有LED的存在。

  从信息的视角看,LED灯是一种输出装置,除了可以照明以外,也可以作为机器表达信息的一种方式。本节我们就来学习使用LED灯

  在开源硬件中LED灯的样式很多,如下图所示。为了便于低年级学生使用,在很多开源硬件套件中,LED灯的连接都采用RJ45接口(俗称水晶头借口)封装。

二、控制LED灯

  LED灯的基本使用无非是控制灯的开和关。有人会说这个简单啊,只需要将LED灯的正负极连接到电源上,灯不就可以亮了,断开电路灯不就熄灭了。

  确实如此,这种控制LED灯的方式是物理控制。但LED灯作为开源硬件的一种输出设备时,我们往往在连接好电路后,不会使用物理控制,更高级的做法是利用编程指令来控制LED灯线路上的高低电压,从而改变灯的明暗,即编程控制

  要想进行编程控制,首先要将LED灯连接到开源硬件主控板上,以OSTD主控板为例,连接方法如下图所示:

  完成了LED灯的连接后,我们就可以通过编程指令来控制LED灯了。OSTD套装中的编程指令如下图所示,该指令有两个参数需要填写。

  • 第1个参数是接口,有六个选项,分别对应主板上的六个橙色RJ45接口
  • 第2个参数是电平,有两种选项(高/低),可以让设置的接口输出高/低电平。
    • 高电平:会有较高的电流从相应接口输出,与之连接的LED灯会点亮。
    • 低电平:不会有较高的电流从相应接口输出,与之连接的LED灯不会点亮。

三、LED灯编程

  到此你应该可以通过编程指令来控制LED灯了吧。下面我们来通过两个编程任务来体会编程控制物理控制相比的优势吧。

任务1.闪烁的LED灯

  任务介绍:LED灯作为一种输出装置,我们可以用它来表达信息,单个LED灯可以通过闪烁来表达信息,在不同的场景下可以有不同的含义,如火灾报警器上,LED灯的快闪可以作为警示信号;而LED灯在机器人眼部的闪烁可以作为机器人“眨眼睛”的信息表达。

  任务要求:能够控制LED灯按照指定的时间间隔来闪烁。

  编程脚本

  编程解析:程序开始运行后,反复切换高低电平,等待时间中的秒数可以根据实际需要修改,从而控制LED灯的闪烁频率。

任务2.流光溢彩的流水灯

  任务介绍:当有多个LED灯的时候,我们便可以制作流水灯的特效。这在电子指示牌、汽车转向灯等装置中可以增强指示信号的表达。

  任务要求:能够控制LED灯组(3个或以上)按照一定的方向依次点亮,并循环往复。

  编程脚本

  编程解析:每一时刻需要同时控制所有灯的状态。如一开始只有接口4的灯亮,下一个状态(当0.5秒后)只有接口5的灯亮,其他的要设置为低电平。

拓展任务:美轮美奂的呼吸灯

  任务介绍:当有多个LED灯的时候,我们便可以制作流水灯的特效。这在电子指示牌、汽车转向灯等装置中可以增强指示信号的表达。

  任务要求:能够控制一个LED灯的亮度由暗到亮逐步变化,再由亮到暗逐步变化,类似呼吸的节奏。

  难点提示:设置某一个接口输出电平的指令,输出的状态只有两种:高/低,计算机二进制中也常用1和0表示。我们把这种输出叫做数字输出

  其实,设置高电平,就会给连接的LED灯较高的电压,从而点亮LED灯。那么问题来了,如果只是输出两种状态是无法改变LED灯的亮度变化的。要想改变LED灯的亮度,只有逐步改变输出的电压才能让LED亮度有变化。

  在OSTD的机器人主控板中的指令并没有封装这一指令,但可以如下图所示,将控制板切换为Arduino Uno来找到模拟输出的指令

  模拟输出指令可以输出连续变化的信号(电压),这种连续变化的信号状态就不只两种了,我把称之为模拟信号

  xDing软件中模拟输出指令的使用如下图:

需要特别注意的是:

  • 参数1:是指输出的引脚,而不是橙色的Rj45端口。

    • 可以再xDing的Arduino模式查看橙色的Rj45端口与引脚的对应关系,如下图所示,端口1对于的引脚是10。

    • 并非所有引脚都支持模拟输出,只有带~的引脚是模拟输出引脚。如下图所示:

  • 参数2:数字越大,输出功率越大,灯就越亮。

  编程脚本

  编程解析:通过亮度值变量来改变模拟输出指令中的输出参数,注意为了防止输出电压过大,亮度值最好不要到255。

微信关注字节杂谈公众号,更有视频演示及完整系列教材噢

创客系列教程——认识LED灯的更多相关文章

  1. stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入.   STM ...

  2. 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  3. Raspberry PI 系列 —— 裸机点亮LED灯

    Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...

  4. Arduino 翻译系列 - LED 灯闪烁

    原文地址 - https://www.arduino.cc/en/Tutorial/Blink 闪烁 这个例子展示了你能拿 Arduino / Genuino 板子来干的最简单的事:使开发板上的 LE ...

  5. 我的 FPGA 学习历程(02)—— 实验:点亮 LED 灯

    关于 Quartus 的操作可以使用 Quartus 自带的帮助,帮助中带有全套的操作教程. 中文网络教程链接(链接至 altera中文官网,点击观看) Quartus II 软件设计系列:基础 Qu ...

  6. Beaglebone Black–GPIO 高低电平控制 LED 灯

    上一篇,运用 Linux 的 sysfs,控制本机上的 LED 灯,usr0 至 usr3,这次用 GPIO 控制外部的电路,点亮 LED 灯. 这次的全部材料: BBB 一台 购买 BBB 自带的 ...

  7. Beaglebone Black - 控制 BBB 板上的 LED 灯

    BBB 的板上有五个 LED 灯,一个电源,四个其他指示灯,usr0 至 usr3 .这次学习是控制 usr0 至 3 让它们亮着,熄灭,闪.算是个 Hello World 实验.非常简单. 需要的材 ...

  8. 简易排水简车的制作 TurnipBit 系列教程

    准备工作   ü TurnipBit 开发板 1块 ü 下载数据线 1条 ü 微型步进电机(28BYJ-48) 1个 ü 步进电机驱动板(ULN2003APG) 1块 ü TurnipBit 扩展板 ...

  9. 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯

    关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...

随机推荐

  1. C++STL标准库学习笔记(四)multiset续

    自定义排序规则的multiset用法 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,只不过这一次的笔记主要是我的补充 ...

  2. 数据恢复binlog2sql

    目录 一.原理及其使用 用途 闪回原理简析 binlog 有三种可选的格式: 来实例演习下来实例演习下 二.准备工作 一.原理及其使用 生产上误删数据.误改数据的现象也是时常发生的现象,作为运维这时候 ...

  3. M语言的写、改、删(Power Query 之 M 语言)

    M语言基本上和其他语言一样,用敲键盘的方式写入.修改.删除,这个是废话. M语言可以在[编辑栏]或[高级编辑器]里直接写入.修改.删除,这个也是废话. M语言还有个地方可以写入.修改.删除,就是[自定 ...

  4. CF1139A Even Substrings 题解

    Content 有一个长度为 \(n\) 的数字串 \(s\),试求出代表偶数的子串个数. 数据范围:\(1\leqslant n\leqslant 65000\),\(s\) 仅包含数字 \(1\s ...

  5. python 字符编码讲解

    ANSI不是一种具体的编码格式 ANSI在中文Windows操作系统代码指的是GBK编码 ANSI在中文Mac操作系统代码指的是UTF-8编码 ANSI在其他国家的操作系统中有其他的编码格式 #ASC ...

  6. tomcat 增加内存

    打开tomcat目录的bin/catalina.bat文件,在开头处,增加: SET CATALINA_OPTS= -Xms2048m -Xmx4096m -XX:MaxNewSize=512m -X ...

  7. MySQL查找数据中相同的数据,并进行删除

    查找表中多余的重复记录,重复记录是根据某个字段来判断 select * from 表名 where 字段 in (select 字段 from 表名 group by 字段 having count( ...

  8. 分享一下java需要的一些技术

    1.前言 you are 大哥,老衲很佩服你们_.还是一样的,有我联系方式的人,哪些半吊子不知道要学习哪些技术,一天让我整知识点,老衲也有事情做的,哪有那么多时间来一直搞知识点啊,我的博客更新很慢的, ...

  9. 平衡二叉树(c++)实现(存在问题:插入节点后,问题:调整树的结构存在问题)

    !!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 更新那时间: 22:13  03-02-2020  逻辑存在问题:插入节点后,调整数的结构不 ...

  10. 【LeetCode】663. Equal Tree Partition 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcode ...