在前面的课程中,我们学习了流水灯、呼吸灯的实现方法,本期课程我们将把呼吸灯和流水灯"组合"到一起,做一个"呼吸流水灯"的效果。呼吸流水灯,实际上就是"流星灯",看上去就像一个"拖着尾巴"的彗星(或流星),头部最亮,越往尾部越暗。在实现这个效果的过程中,我们将应用到"流水灯"及"呼吸灯"的一些控制方法,因此给它取名为"呼吸流水灯"。

呼吸流水灯,本质上就是让几个亮度递减的LED在做流水灯一样的流动。在流水灯中"流动"的是LED的"开/关"状态,而在呼吸流水灯中"流动"的则是LED的"亮度"状态,也就是PWM的占空比,因此,LED的控制引脚必须全部具备PWM(DA)的输出能力,本次课程使用了MEGA2560板,它的2-13引脚都具备PWM功能,可以做一个12位的呼吸流水灯。而UNO或NANO板则只有3,5,6,9,10,11这六个PWM输出引脚,则只能做到6位呼吸流水灯。本次课程使用了NANO摇摇棒电路及MEGA2560mini型板,将MEGA2560板的D2-D13依次连接到NANO摇摇棒电路的D1-D12,并且将摇摇棒电路与MEGA2560mini板“共地”,如下图:

下图为呼吸流水灯的效果示意图:

图中的一行代表LED的一组状态,黑色的为熄灭的LED,红色深色的代表高亮度的LED,浅色的代表低亮度的LED。这样的一行,包括了12个LED,我们可以把"一行"看作一个可视的"视界",视界内是我们可以看到的12个LED,视界外我们假设还有一些"看不到"的LED。因此我们可以在5个"亮度"组成的"彗星"的左右两端各加上12个黑点组成一条"亮度分布带",然后我们在"亮度分布带"上滑动12个LED长度的可视"视界",就可以看到如上面图中所示的每一行不同的画面,也就是"彗星"飞过的效果。下面是原理图:

以上的"亮度分布带",实际上就是一系列PWM的值,把这些PWM的值放在一个总长度的29的数组中,然后再以一个长度为12的数组作为"视界","滑动"着在PWM数组中取12个值,每取完一次则将12个PWM状态写入对应的12个LED中,这样即完成了一个方向的"彗星"飞过。为了让"彗星"也能反向飞过,我们可以再建立一个"反向"分布的"亮度分布带",然后"视界"从右往左滑动,即实现了"彗星"的反向飞过。下面是示例代码:

实现"彗星灯"-呼吸流水灯的方法有很多种,以上是比较直观的一种。其他实现方法欢迎各位读者在评论区留言讨论。

八位流水灯的verilog代码_Arduino入门 第七节-彗星灯 呼吸流水灯相关推荐

  1. e300氛围灯哪里调节_保时捷macan内饰改装升级32色呼吸氛围灯

    保时捷MACAN虽然有着不俗的外表,豪华的内饰,但是车内氛围却总还是缺少了那么一丢丢,随着新车的更新,车友对汽车的内饰特别的着重,品味也在逐步提升,汽车氛围灯也随之诞生,目前新车系都几乎标配各种各种的 ...

  2. Java入门 第七节 类和对象

    文章目录 1. 引言 1.1 什么是对象 1.2. 什么是类 2. 类和对象的关系 2.1 计算机怎么描述世界 2.2 类和对象 语法结构 2.3 创建类 和 调用对象 2.4 简单分析对象创建过程 ...

  3. 基于Proteus无实物STM32入门自学教程(二)--LED流水灯

    本教程面向新手,前期没有用到stm32的内部库,源程序尽量使用单文件.方便从51直接转过来的同学有个适应期.proteus仿真stm32总所周知没有51仿真的那么完美.笔者在51年代进行仿真时基本与实 ...

  4. 【51单片机入门】点亮多个LED流水灯

    [51单片机&入门]点亮多个LED流水灯 实验环境 功能实现 PCB原理图 代码 要点 仿真 代码 实验环境 Keil C51 Proteus 8.9 功能实现 LED流水灯依次从右向左亮起, ...

  5. 【Verilog零基础入门-边看边练】学习笔记——第三讲 组合逻辑代码设计和仿真(补码转换和七段译码逻辑设计)(二)

    二.七段译码逻辑设计 所需软件 Verilog编程软件:Lattice Diamond(3.11.0.396.4_Diamond_x64) Verilog仿真软件:ModelSim SE-64 10. ...

  6. 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

    移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...

  7. 网页版的svn怎样同步代码_学会使用Hdlbits网页版Verilog代码仿真验证平台

    大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过 "https://hdlbits.01xz.net/wiki/Main_Page&q ...

  8. (67)FPGA面试题-为priority encoder编写Verilog代码,实现MUX4_1

    1.1 FPGA面试题-为priority encoder编写Verilog代码,实现MUX4_1 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-为pr ...

  9. (66)FPGA面试题-为parallel encoder编写Verilog代码,实现MUX4_1

    1.1 FPGA面试题-为parallel encoder编写Verilog代码,实现MUX4_1 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-为pa ...

最新文章

  1. 2019 GDUT Rating Contest I : Problem H. Mixing Milk
  2. Web设计离不开的4项基本原则
  3. JavaSE_坚持读源码_ClassLoader对象_Java1.7
  4. Linux下多网卡MAC配置问题
  5. 运满满的技术架构演进之路
  6. Linux打印指定的行范围
  7. SPICE:过程改进的又一种选择
  8. C#黔驴技巧之去重(Distinct)
  9. 草稿 ktv 航版 1211 rs ga 打开文件控件 文件的复制操作
  10. 装饰模式【设计模式学习-03】
  11. 《2022爱分析·人工智能应用实践报告》发布:从点到面,人工智能推动企业智能化转型
  12. 深入浅出理解SVM支持向量机
  13. java练习题-猜数字游戏
  14. 用户个人隐私保密协议
  15. [JAVA]EXCEL工具推荐-MyExcel
  16. SpringBoot整合RedisTemplate实现缓存信息监控
  17. STM32CubeMX新建工程+基本IO配置过程
  18. 淘宝技术发展3(Oracle/支付宝/旺旺)
  19. yarn install报错及解决办法
  20. 数据库查询优化(转载)

热门文章

  1. display 隐藏css,CSS-元素的显示与隐藏
  2. 快充线与普通线的区别_四种不同线身材质对比:iPhone12首次标配编织线或将引领潮流?...
  3. c语言程序设计基础广西师范大学漓江学院,广西师范大学漓江学院试卷-计算机基础A方案.doc...
  4. pymysql使用变化的变量,构造SQL语句
  5. 配置python程序debug/run,避免每次运行都会重复加载数据集或模型,节约大量等待时间
  6. tshark查看、指定网卡
  7. 数据分箱1——人工手动分箱
  8. python使用logging捕获异常后继续执行函数
  9. php 模型 关联,PHP模型关联一对多如何给关联表加条件?
  10. php5.6代码转换7.1,通过PHP5.6源代码在WINDOWS 7下进行编译生成(最详细步骤)