python控制灯_树莓派python编程 做一个LED呼吸灯「建议收藏」

呼吸灯概述上一篇我们通过控制GPIO口输出高低电平来控制一只LED的亮灭。这次我们来控制LED的亮度,灯由暗渐渐变亮,再由亮渐渐边暗,反复循环,也就是呼吸灯的效果。按Ctrl+C结束程序。通过本节课,你能学习到:脉冲宽度调制技术所需硬件树莓派x1面包板x1杜邦线x2LED灯x1名称解释我们知道,通过LED的电流越大,LED越亮,电流越小,LED越暗。如果可以控制输出电流大小就可…

大家好,又见面了,我是你们的朋友全栈君。

呼吸灯

概述

上一篇 我们通过控制GPIO口输出高低电平来控制一只 LED 的亮灭。这次我们来控制 LED 的亮度,灯由暗渐渐变亮,再由亮渐渐边暗,反复循环,也就是呼吸灯的效果。按 Ctrl+C结束程序。

通过本节课,你能学习到:

脉冲宽度调制技术

所需硬件

树莓派 x1

面包板 x1

杜邦线 x2

LED灯 x1

名称解释

我们知道,通过LED的电流越大,LED越亮,电流越小,LED越暗。如果可以控制输出电流大小就可以控制LED的明暗了。但是树莓派的各引脚并没有直接调整输出电流大小的功能,要想别的办法。这里,我们需要了解以下2个名词:

脉宽调制(PWM)

脉冲宽度调制(PWM)是一种利用数字手段获得模拟结果的技术。数字控制用于创建方波,电平在高和低之间切换。简单的说,PWM技术就是不停的通断电路并控制通断持续的时间片段长度,从而控制用电器在单位时间内实际得到的电能。再简单点说,如果你的手足够快,打开电灯开关后马上关闭,如果这个时间间隔足够短,灯丝还没有全部亮起来就暗下去了。你再次打开电灯再关闭,再打开再关闭……如果你一直保持相同的频率,那么电灯应该会保持一个固定的亮度不变。理论上,你可以通过调整开灯持续的时间长度和关灯持续的时间长度的比例就能得到不同亮度了。

“导通时间”的持续时间称为脉冲宽度。要获得不同的模拟值,可以更改该脉冲的宽度。

占空比

一个脉冲循环内通电时间所占的比例。

beepress1-1540734246.jpeg

连线图

在开始连接硬件电路之前,首先要做的事是将树莓派电脑关机,并断开电源。因为如果树莓派主板带电的时候,进行插接电路可能会导致电子元器件的烧毁,所以一定要记住:连接电路的时候主板必须断电。本次的接线图和上一篇(第一个GPIO控制LED小灯的程序)连线图完全一样

beepress4-1540734246.jpeg

图片使用 Fritzing 绘制,更多示例图片请到 Fritzing官网 浏览。

电路原理图

beepress2-1540734246.jpeg

示例代码截图防缩进失效!!!

beepress9-1540734247.jpeg

beepress8-1540734247.jpeg

保存文件为

breathing-light.py

,并运行之。

sudo python breathing-light.py

最终效果

beepress5-1540734247.gif

相关课程目录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127963.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sqlmap报错注入

    sqlmap报错注入0x00背景学习记录一下报错型的注入,经各方整理和自己总结形成。所有的注入原理都是一样,即用户输入被拼接执行。但后台数据库执行语句产生错误并回显到页面时即可能存在报错注入。0x01概念报错型注入的利用大概有以下3种方式:复制代码1:?id=2’and(select1from(selectcount(*),concat(floor(rand(0)*2),(select(…

    2022年9月29日
    0
  • 选择排序-Java「建议收藏」

    选择排序-Java「建议收藏」堆排序理论:https://blog.csdn.net/qq_36186690/article/details/82505569代码:packagecom.paixu.paixuTest;importjava.util.Arrays;importjava.util.Scanner;/***选择排序*1)简单选择排序*2)堆排序*/publicclassxuanZhePaiXu{publicstaticvoidmain(String[]a

    2022年7月8日
    21
  • c# dllimport用法(强中台能力)

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。

    2022年4月11日
    152
  • StretchDIBits 函数

    StretchDIBits 函数不知道各位有咩有被这个函数搞得很蛋疼,反正我是了,网上的文章很多其实都是到处copy,看了很多然并卵。这个函数的功能和参数就不多说了,蛋疼主要是它画的图片是倒着的,主要问题是怎么把他搞回来。网上的文章说了当目标宽度和源宽度的符号不一样他会做关于x轴的镜像,高度的符号不一样会做Y轴的镜像。好的我的开始函数是这样的StretchDIBits(bufferHDC,0,0,m_nVideoW

    2022年6月16日
    25
  • 网站被挂马了如何清理_网站在线挂马检测工具

    网站被挂马了如何清理_网站在线挂马检测工具
     
    您好,今天我们讲下挂马的危害和处理办法。挂马是常见的对网站和客户都影响巨大的危害之一。
          上海快网的经验是:如果是在访问出来的源文件的头上,或是最后有被加代码,这个一般是网站文件被要改了,或是ARP,如果是源文件的很多数据位置(中间),那一般是数据库被人挂了。
         不完全统计,90%的网站都被挂过马,挂马是指在获取网站或者网站服务器的部分或者全部权限后,在网页文件中插入一段恶意代码,这些恶意代码主要是一些包括IE等漏洞利用代码,用户访问被挂马

    2022年9月30日
    0
  • leetcode-139. 单词拆分(记忆化搜索|动态规划)

    leetcode-139. 单词拆分(记忆化搜索|动态规划)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict = [

    2022年8月9日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号