精华内容
下载资源
问答
  • 呼吸灯原理图

    2015-10-10 16:47:21
    呼吸灯原理仿真图,基于proteus的仿真原理图
  • 本文主要讲了呼吸灯电路设计原理,希望对你的学习有所帮助。
  • 呼吸灯原理

    2020-10-15 11:38:48
    1.呼吸灯原理分析:模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。 2.呼吸灯程序设计:就是改变这40...

    1.呼吸灯原理分析:模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。

    2.呼吸灯程序设计:就是改变这40ms中,亮和灭所占的百分比(40ms相对不柔和,20ms效果柔和)。

    亮的百分比多,人眼看到的就亮,反之就是暗(实验,为了提高呼吸灯的柔和效果,采用设置20ms一个周期,20ms内调整亮和灭的比例)

    因此程序设计:1.5S需要1500/20=75个周期,75个周期中,亮度百分比有0%增长到100%,因此每个周期增长时间为20ms/75=266us(点亮)。熄灭的原理,正好相反,熄灭时间增长。程序中需要两个循环,一个用来点亮一个用来熄灭。 程序要灵活设计,能够调整呼吸时间的长短,1.5s这个参数。可以调整柔和度,可以调整40ms这个周期参数,这样就实现了呼吸灯的灵活调整。

    展开全文
  • 1.呼吸灯原理分析: 模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。2.呼吸灯程序设计: 就是改变这40ms...

    1.呼吸灯原理分析:
    模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。

    2.呼吸灯程序设计:
    就是改变这40ms中,亮和灭所占的百分比(40ms相对不柔和,20ms效果柔和)。

    亮的百分比多,人眼看到的就亮,反之就是暗(实验,为了提高呼吸灯的柔和效果,采用设置20ms一个周期,20ms内调整亮和灭的比例)

    因此程序设计:
    1.5S需要1500/20=75个周期,75个周期中,亮度百分比有0%增长到100%,因此每个周期增长时间为20ms/75=266us(点亮)。熄灭的原理,正好相反,熄灭时间增长。程序中需要两个循环,一个用来点亮一个用来熄灭。

    3.STM32程序实现代码
    程序要灵活设计,能够调整呼吸时间的长短,1.5s这个参数。可以调整柔和度,可以调整40ms这个周期参数,这样就实现了呼吸灯的灵活调整。源代码先不放出来了,等做完实验放出。
    ***********

    428f3f31b7c95907c154196b3183ec18.png

    //=======================================
    void LedOnOff(uint32_t t,uint32_t xx) //T代表整个周期的时间,xx代表周期中点亮时间的长度{ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //GPIO_PIN_SET HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET); mydely_us(xx); //点亮时间
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET); mydely_us(t-xx); //熄灭时间
    }
    //*****************下面注视的代码是通过调用库函数来实现IO控制的方法*****************************************int main(void){ int i; int myLongTime=1500; //ms 呼吸总体时间 int myshortTime=40; //ms int myCYC=myLongTime/myshortTime; delay_init(); //初始化延时函数 LED_Init(); //初始化LED端口 while(1) { for(i=1; i1; i-=1)
    LedOnOff(myshortTime*1000,i*myshortTime*1000.0/myCYC);
    }}

    3a85d21b39501fc9548d45e5525b5bc2.png

    4.原理分析:

    模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面)按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)呼吸灯,就是改变这40ms中,亮和灭所占的百分比。
    1500/40=38周期,40ms/37=1052us。38个周期变比中,每个周期增长1个单位1052us,38个周期刚好是40ms.这样达到全亮
    亮的百分比多,人眼看到的就亮,反之就是暗。
    利用40ms这个时间,目测感觉有闪烁,减少这个时间,变化就会缓慢,没有闪烁感。参考用20ms

    //us延时函数的实现

    void mydely_us(uint32_t count)

    {

    HAL_TIM_Base_Stop_IT(&htim1);

    my_tim1_count=0;

    HAL_TIM_Base_Start_IT(&htim1);

    while(my_tim1_count

    HAL_TIM_Base_Stop_IT(&htim1);

    }

    void TIM1_UP_IRQHandler(void)

    {

    /* USER CODE BEGIN TIM1_UP_IRQn 0 */

    extern uint32_t my_tim1_count;

    my_tim1_count++;

    __HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);

    /* USER CODE END TIM1_UP_IRQn 0 */

    //HAL_TIM_IRQHandler(&htim1);

    /* USER CODE BEGIN TIM1_UP_IRQn 1 */

    /* USER CODE END TIM1_UP_IRQn 1 */

    }

    29e9f0fcfa9e0c99aad116e65637d389.png

    5.说明:

    利用HAL库,默认没有办法实现us的定时器,方法是。利用硬件定时器,产生一个1us的周期中断,每进入一次中断,一个全局变量加1,通过判断这个变量的值,来确定当前的延时时间。

    6.问题:
    1.HAL库的执行效率比较低,1us中断的实际,还没有处理完中断过程,因此需要手动修改中断函数,
    添加__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);
    屏蔽: //HAL_TIM_IRQHandler(&htim1);
    这样中断处理时间会减少很多。
    2.全局变量的变化,如果总开着定时中断,会影响正常程序的执行,因此,需要延时的时候,开启定时器,延时结束,关闭定时器

    void mydely_us(uint32_t count)

    {

    HAL_TIM_Base_Stop_IT(&htim1);

    my_tim1_count=0;

    HAL_TIM_Base_Start_IT(&htim1);

    while(my_tim1_count

    HAL_TIM_Base_Stop_IT(&htim1);

    展开全文
  • 飞思卡尔MC9S12XEP100P,PWM呼吸灯,呼吸灯原理图,呼吸灯源程序,流水灯。使用飞思卡尔CodeWarrior编写软件。
  • 上篇文章全彩呼吸灯的制作(一)已经谈论了呼吸灯原理及设计过程,不过我们上篇文章是使用STM32控制的,这篇文章就让我们一起使用Arduino控制呼吸灯,下面让我们一起来来看一下具体如何实现吧!一、所需硬件1.1 实验...

    1deb54593fc83c46153b836d57be4d07.png

    上篇文章全彩呼吸灯的制作(一)已经谈论了呼吸灯的原理及设计过程,不过我们上篇文章是使用STM32控制的,这篇文章就让我们一起使用Arduino控制呼吸灯,下面让我们一起来来看一下具体如何实现吧!

    一、所需硬件

    1.1 实验所需原元件

    • 一个LED

    • 一个arduino开发板

    • 一个电阻

    • 两根杜邦线

    1.2 实验原理图

    4937f5e876a06ac86ea2f2b5ad5daa3b.png

    1.3 硬件连接

    LED长脚的为正,短脚为负极。LED的正极连接 IO口3,LED负极连接电阻,电阻的另外一端接GND.54a50363d5200f28997973f93a3ac2bf.png

    二、代码讲解

    int brightness = 0//定义整数型变量brightness与其初始值,此变量用来表示LED的亮度。
    int fadeAmount = 5//定义整数型变量fadeAmount,此变量用来做亮度变化的增减量。
     
    void setup() {
     
    pinMode(3, OUTPUT);// 设置3号口为输出端口:
    }
     
    void loop() {
     
    analogWrite(3, brightness);//把brightness的值写入3号端口
     
    brightness = brightness + fadeAmount;//改变brightness值,使亮度在下一次循环发生改变
     
    if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; //在亮度最高与最低时进行翻转

     
    delay(30); //延时30毫秒 
    }

    三、实验现象

    e23fe7cc89e7417760e5d78f545f5d7a.gif

    从图中我们可以看到呼吸灯的效果LED灯由亮变暗,又由暗变亮,呈现出呼吸的效果。

    2336580a6dd67c79e78e070547abf1a8.png

    7e8c79a321e352c9d1357e4a1e747f70.gif  你们点点 “在看” ,给我充点儿电吧~

    展开全文
  • 自定义 呼吸灯 闪烁效果 View原理:根据属性动画的因子,在规定时间内,让某些属性持续性增加或者减少说明:本案例只是最基本的原理,知道原理了可以无限扩展需求,连自定义属性都没写,反正已经满足我的需求了,哈哈,有需要...

    自定义 呼吸灯 闪烁效果 View

    原理:根据属性动画的因子,在规定时间内,让某些属性持续性增加或者减少

    说明:本案例只是最基本的原理,知道原理了可以无限扩展需求,连自定义属性都没写,反正已经满足我的需求了,哈哈,有需要可以自行完善;这种呼吸灯效果一般用于地图定位点显示,股票当前点显示提醒,反正是用于特别提示用户的地方都可以,一闪一闪亮晶晶

    demo.gif

    package com.example.wangjianfeng.blnwaveview;

    import android.animation.ValueAnimator;

    import android.content.Context;

    import android.graphics.Canvas;

    import android.graphics.Paint;

    import android.os.Handler;

    import android.util.AttributeSet;

    import android.util.Log;

    import android.view.View;

    /**

    * author:JianFeng

    * date:17/4/26:下午2:30

    * description:呼吸灯效果的View

    * 原理:在指定时间内,递减透明色,递增半径

    */

    public class BreatheView extends View implements ValueAnimator.AnimatorUpdateListener {

    private static final String TAG = "BreatheView";

    /**

    * 扩散圆圈颜色

    */

    private int mColor = getResources().getColor(R.color.colorAccent);

    /**

    * 圆圈中心颜色

    */

    private int mCoreColor = getResources().getColor(R.color.colorPrimary);

    /**

    * 中心圆半径

    */

    private float mCoreRadius = 30f;

    /**

    * 整个绘制面的最大宽度

    */

    private float mMaxWidth = 40f;

    /***

    * 初始透明度

    */

    private int color = 255;

    /**

    * 是否正在扩散中

    */

    private boolean mIsDiffuse = false;

    private Paint mPaint;

    private float mFraction;//变化因子

    private ValueAnimator mAnimator;

    private static final long HEART_BEAT_RATE = 2000;//每隔多久闪烁一次

    private Handler mHandler;

    //圆圈中心坐标

    private float circleX ;

    private float circleY ;

    public BreatheView(Context context) {

    this(context, null);

    }

    public BreatheView(Context context, AttributeSet attrs) {

    this(context, attrs, 0);

    }

    public BreatheView(Context context, AttributeSet attrs, int defStyleAttr) {

    super(context, attrs, defStyleAttr);

    init();

    }

    private void init() {

    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

    mPaint.setAntiAlias(true);

    mAnimator = ValueAnimator.ofFloat(0, 1f).setDuration(2000);

    mAnimator.addUpdateListener(this);

    if (null == mHandler) {

    mHandler = new Handler();

    }

    }

    @Override

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {

    super.onSizeChanged(w, h, oldw, oldh);

    circleX = w /2 ;

    circleY = h /2 ;

    }

    /***

    * 设置中心圆半径

    *

    * @param radius

    */

    public void setCoreRadius(float radius) {

    mCoreRadius = radius;

    }

    /***

    * 设置闪烁圆圈最大半径

    *

    * @param width

    */

    public void setMaxWidth(float width) {

    mMaxWidth = width;

    }

    public void setCoordinate(float x, float y) {

    circleX = x;

    circleY = y;

    }

    @Override

    public void invalidate() {

    if (hasWindowFocus()) {

    super.invalidate();

    }

    }

    @Override

    public void onWindowFocusChanged(boolean hasWindowFocus) {

    super.onWindowFocusChanged(hasWindowFocus);

    if (hasWindowFocus) {

    invalidate();

    }

    }

    private Runnable heartBeatRunnable = new Runnable() {

    @Override

    public void run() {

    start();

    mHandler.postDelayed(this, HEART_BEAT_RATE);

    }

    };

    public void onConnected() {

    mHandler.removeCallbacks(heartBeatRunnable);

    mHandler.post(heartBeatRunnable);

    }

    public void onDestroy() {

    mIsDiffuse = false;

    mHandler.removeCallbacks(heartBeatRunnable);

    }

    @Override

    protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    if (mIsDiffuse) {

    //绘制扩散圆

    mPaint.setColor(mColor);

    mPaint.setAlpha((int) (color - color * mFraction));

    canvas.drawCircle(circleX, circleY, mCoreRadius + mMaxWidth * mFraction, mPaint);

    // 绘制中心圆

    mPaint.setAlpha(255);

    mPaint.setColor(mCoreColor);

    canvas.drawCircle(circleX, circleY, mCoreRadius, mPaint);

    }

    invalidate();

    }

    public void start() {

    mIsDiffuse = true;

    mAnimator.start();

    Log.e(TAG, "闪烁开始");

    invalidate();

    }

    @Override

    public void onAnimationUpdate(ValueAnimator valueAnimator) {

    mFraction = (float) valueAnimator.getAnimatedValue();

    Log.e(TAG, "mFraction:" + mFraction);

    }

    }

    展开全文
  • Mixly-呼吸灯及可调灯

    2019-10-27 21:35:54
    Mixly-呼吸灯及可调灯 一、实验目的及要求 熟悉函数应用及中断用法。 二、实验原理与内容 1.使用函数方法实现呼吸灯功能。 2.使用中断或其他方式实现可调灯功能。 三、实验软硬件环境 硬件:Arduino、LED灯、按钮 ...
  • 呼吸灯(Verilog)

    千次阅读 2019-01-13 20:14:46
    产生一个2s的led呼吸灯,呼吸灯原理是调整亮灭的占空比实现的,1s钟由灭到亮,1s由亮到灭, 中是由灭到亮的占空比。 使用三个计数器描述由灭到亮的过程。 应当注意,在计数器归零时的判别条件。 ...
  • PWM实现呼吸灯

    万次阅读 多人点赞 2019-07-30 20:34:20
    PWM实现呼吸灯 一、PWM简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制, ...
  • 呼吸灯 串口 SGM3146

    2017-06-02 22:56:44
    1、呼吸灯与主板的连接 EN引脚调试时最好串联一个1K电阻 原理图所在位置如下图: SGM3146数据手册 呼吸灯相关测试 USB转串口连接示意图
  • 51单片机心形灯——实现旋转呼吸灯流水编程 实现按键K1实现从左向右流水,按键K2实现从右往左流水,按键K3实现暂停流水,按键K4实现...心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载:https://...
  • 呼吸灯 呼吸灯:我们将通过脉宽调制技术来实现“呼吸灯”,实现LED的亮度由最暗...实现原理:如上所示,脉冲信号的周期为T,高电平脉冲宽度为t,占空比为t/T。为了实现PWM脉宽调制,我们需要保持周期T不变,调整...
  • Unity 实现物体上呼吸灯效果Shader

    千次阅读 2019-08-20 20:08:28
    这次说的呼吸灯其实和之前写的流光有点类似,不过比流光更为简单 呼吸灯效果其实就是一个周期变化,周期变化就想到一个...部分呼吸原理:最终呼吸效果 = 当前颜色+ 周期变化的数值*呼吸灯颜色*mask某个通道 原...
  • 实现功能简介: ① 按下蓝色电源键 ...③ 按键二 为呼吸灯 [渐亮渐灭] ④ 按键三 为流水灯 [十多种流水灯方式] *每次切换模式请先按下 按键四 复位键进行复位。 *可搭载充电模块{普通安卓 MINI-USB都可进行充电}
  • 整体原理图2).PCB电路3).3D_PCB2.单片机程序设计1)呼吸灯[简易模拟PWM]2)蜂鸣器音乐3)几种简易流水灯方式3.效果展示1).实物电路顶层图2).实物电路底层图3).整体效果图 注:本文仅用于学习分享,分享自己DIY...
  • 炫酷LED呼吸灯

    千次阅读 2019-05-23 21:40:46
    LED(发光二极管)虽然体积很小,但内有乾坤,在我们的生活中也是随处可见他...上是LED的内部结构,具体的发光原理这边就不赘述了,如需要详细了解,可以看这篇文章:https://www.jzic.com/news_item/3230.ht...
  • 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。其广泛应用于手机之上,并成为各大品牌新款手机...现在分享一个呼吸灯PWM控制的仿真原理图如下(proteus仿真工程文件可到附件中下载):
  • 一般使用PWM脉冲调制实现,其原理就时通过改变高电平的时间(占空比),从而实现呼吸灯的效果。在这里通过延时来模拟PWM脉冲。 PWM原理如下所示: 硬件说明如下所示: 实现代码 1.宏定义 #define LED1_ON ...
  • 本工程代码在STM32F407ZET6开发板上测试通过,其中使用TIM14产生一个PWM脉冲信号来控制一个LED灯,使之成为一个呼吸灯。本压缩包中也包含了STM32F4xx的中文用户手册,以及本人使用的开发板的原理图。欢迎大家下载...
  • Zynq-PL之PWM呼吸灯

    2021-01-31 21:27:05
    1、硬件原理图 1.1 LED 2、全局时钟 3、复位 2、设计 2.1、LED 闪烁控制 2.2、LED 的 PWM 呼吸灯 2.2.1、PWM 控制器 2.2.2、PWM 占空比可变 2.3、顶层设计 2.4、约束 玩 Zynq 呢,可以有几个方面,单玩...
  • 全彩RGB呼吸灯效果实现-STM32

    千次阅读 2019-11-15 16:38:22
    全彩RGB呼吸灯效果实现——PWM方式 全彩LED 灯控制原理: 使用STM32控制LED灯输出多种亮度等级,可以通过控制输出脉冲的占空比来实现,见1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img...
  • 本次实验为呼吸灯实验,实际上是调节占空比程序的编写,通过占空比的变化使led灯有亮到灭,由灭到亮。输入信号为时钟信号和复位信号,输出信号为led信号。占空比变化原理如下: 实验中用到的led灯为核心板上的...
  • 硬件设计:与实验1的LED原理图相同 程序设计 学习单片机中用过PWM的应该都知道,我们一般生成PWM都是用两个计数器,一个是一直不停的周期性地加,从0加到某一最大值,另外一个计数器,存放一个比较值,当第一个...
  • 基于FPGA的VHDL语言呼吸灯设计

    千次阅读 2018-06-07 09:08:22
    1.系统概述 本设计在AlteraCyclone II EP2C35 FPGA平台上,利用锁相环、计数器等数字电路,...2.系统原理图 如图 1所示,input和output为输入输出模块。altpll0为锁相环模块,inclk0为输入引脚,c0为输出引脚。cou...
  • 先说一下实验原理:简单来说就是通过调节占空比,改变输出电压大小,从而实现控制小灯亮的程度。 在这里我用的是正点原子的精英板,通过复用重映射将PA7(时钟3的通道2:TIM3_CH2) 的引脚映射到PB5(LED0)上,下面...
  • 这里写目录标题PWM概述PWM输出步骤呼吸灯实现 PWM概述 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点...
  • 1. 开发板原理图 使用的是LED7通过PWM来实现灯的亮度逐渐变高,之后再逐渐的变暗来模拟一个呼吸灯的一个效果。 PWM: PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。它是...
  • 在创建好寄存器模板工程的前提下,我将进一步使用寄存器点亮一个LED(D1),具体步骤及说明如下:1在开发板原理图中查看LED模块电路原理,易知该模块共8个LED小灯,分别为D1~D8,且共阳极,连接在3.3V的电源上。D1...
  • 基于stm32的pwm呼吸灯

    万次阅读 2016-05-07 11:52:29
    《STM32开发指南(库函数版本)》 正点原子著使用定时器来控制I/O口输出PWM波形,从而驱动LED出现类似呼吸频率一般的亮灭。硬件电路: 我的收获: 1 这是STM32数据手册上对TIM3通用定时器复用功能重映象的

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

呼吸灯原理图