精华内容
下载资源
问答
  • 炫酷LED呼吸灯

    千次阅读 2019-05-23 21:40:46
    LED(发光二极管)虽然体积很小,但内有乾坤,在我们的生活中也是随处可见他...上图是LED灯的内部结构图,具体的发光原理这边就不赘述了,如需要详细了解,可以看这篇文章:https://www.jzic.com/news_item/3230.ht...

    LED(发光二极管)虽然体积很小,但内有乾坤,在我们的生活中也是随处可见他的身影,电子钟表表盘上的数字、超大电视屏幕上的图像、或是用于点亮交通信号灯,他是电子世界中真正的英雄,默默无闻,但是作用巨大,出现的形式也是多种多样的;

    上图是LED灯的内部结构图,具体的发光原理这边就不赘述了,如需要详细了解,可以看这篇文章:https://www.jzic.com/news_item/3230.html

    对于我们的实现来讲,我们需要简单了解一下LED的电气特性:

    1. 从外观上来讲,它由发光部分、正极引线(长的一根)和负极引线(短的一根)组成;
    2. 从电气实现上来讲,当有电流经过时,LED就将被点亮,电流越大,发光就越强(但是需要注意的是,如果电流过大,会造成内部的击穿,就会损坏LED了,所以我们一般来讲,要在电路中间添加一个电阻,缓冲电流)

    我们首先直接通过Arduino供电,看看能否点亮LED灯:

    当Arduino上电之后,我们会发现LED也亮了,我们一起来分析一下电流的走向:

    1. 首先正电从Arduino中流出,通过导线流向面包板;
    2. 然后通过跳线流向电阻;
    3. 经过电阻的缓冲,电流变弱了;
    4. 然后流向LED的正极;
    5. 从LED正极流入,负极流出;
    6. 最后流向Arduino的GND,使其构成了一个回路,LED灯被点亮;

    现在我们不能通过Arduino对他进行控制,只能随着Arduino的上电和断电实现LED的亮灭,那么我们怎么才能通过Arduino控制LED呢?

    我们在初识Arduino——以UNO为例中已经知道了Arduino的引脚构成,通过这些引脚我们就可以控制传感器或者获取传感器的采集数据,接下来我们就通过数字引脚2实现LED灯的闪烁:

    /*
     * 实现功能:LED灯隔3秒闪烁
     * 使用材料:Arduino UNO*1、面包板*1、LED*1、1K欧姆电阻*1、杜邦线若干
     * 创建时间:2019年5月23日19:16:16
     * 修改时间:
     */
    
    #define LED 2       //给引脚2取个名字,方便后面我们调用
    
    void setup() {      //一些初始化操作
      // put your setup code here, to run once:
      pinMode(LED,OUTPUT);      //设置引脚2为输出模式
      digitalWrite(LED,LOW);    //设置引脚2的初始状态是低电平(即熄灭状态)
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      digitalWrite(LED,LOW);    //设置引脚2为高电平状态(即点亮)
      delay(3000);              //延时3秒(需要注意的是,这里的单位是毫秒,进制是1000)
      digitalWrite(LED,HIGH);
      delay(3000);
    }

    当我们将程序烧录到Arduino中,我们会发现,LED灯会点亮3秒、熄灭3秒做周期运动,那么就证明我们的电路连接和程序没有问题啦!

    这是我们第一次使用Arduino IDE进行编程,对程序的几个部分做一下简单的分析:

    #define LED 2
    /************************************************
        #define 标识符 参数
        在C++中是预处理宏定义操作的意思,简单的说,就是在程序编译链接之前,先将代码中所有的标识符替换成他具体的参数,当所有的标识符都替换
    完毕后,预处理部分就完成了,就会接下去编译链接生成固件,下载到Arduino中;
    ************************************************/
    void setup() {
      // put your setup code here, to run once:
      // 将您的设置代码放在这里,运行一次
      // 这部分代码会在程序的最开始运行一次,简单的说就是一系列的初始化操作,比如引脚模式的设定、串口波特率的设置等
    }
      pinMode(引脚,模式);          //设置引脚的模式
      //INPUT 输入    OUTPUT 输出
    
      digitalWrite(引脚,状态);     //设置引脚的状态
      //HIGH 高电平   LOW 低电平
      //对于数字引脚来讲,只有高电平或者低电平
    void loop() {
      // put your main code here, to run repeatedly:
      // 把你的主要代码放在这里,重复运行
      // 我们可以把这个看做一个死循环,里面的程序会无止境的执行下去,我们需要把功能实现的流程代码放在这里;
    }
    delay(毫秒);        //这是一个延时函数,单位是毫秒,1000毫秒=1秒

    现在我们已经可以实现LED的周期闪烁了,那么又如何实现呼吸灯的效果呢?

    这会儿就需要提到一个新的概念了,PWM(脉宽调制)通过调整占空比来实现呼吸灯效果,举个最简单的栗子,“三天打鱼两天晒网”,这里一共花费了五天时间,但是实际工作的就只有三天,所以只能得到三天的收益,那么这里的占空比就是60%;在这里我们指在一个工作周期内,高电的时间比是怎么样的,如果一个工作周期一半时间是高电,那么占空比就是50%;

    那么呼吸灯又是怎么实现的呢?工作周期内,高电的时间越短,电量越小,LED就越暗,高电的时间越长,点亮越大,LED就越亮;我们可以从0渐渐把占空比调大,到达最大后再见见把占空比调小,以此往复,实现呼吸灯的效果;

    /*
     * 实现功能:实现LED呼吸灯效果
     * 创建时间:2019年5月23日20:13:52
     * 修改时间:
     */
    
    #define LED 3        //注意,这里的引脚改为3了,这是因为引脚2不具备PWM
    
    int PWM_VALUE = 0;        //用来存储占空比的值,最小是0,最大是255
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(LED,OUTPUT);
      analogWrite(LED,0);     //由于我们需要改变IO口输出占空比,用数字信号来模拟的模拟电压信号,所以这里是模拟信号输出  
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      PWM_VALUE = PWM_VALUE + 16;        //改变占空比的值
      while (PWM_VALUE <= 255){          //如果值小于等于255,即没有超出最大值,使占空比趋向100%,当超过100%则跳出循环
        analogWrite(3,PWM_VALUE);
        delay(100);                      //需要等待100毫秒,等待电流平稳
        PWM_VALUE = PWM_VALUE + 16;
      }
      
      PWM_VALUE = PWM_VALUE - 16;
      while (PWM_VALUE >= 0){
        analogWrite(3,PWM_VALUE);
        delay(100);
        PWM_VALUE = PWM_VALUE - 16;
      }
    }

     

    展开全文
  • 常见的应用在手机的呼吸灯,这里我们采用硬件描述语言来实现LED呼吸灯的效果,即在1s内,LED灯由暗逐渐变亮,再1s内再由亮逐渐变暗。 一、设计原理 呼吸灯设计原理归结为对于分频和占空比的应用,就是先分频,然后再...

    FPGA基础入门篇(九)使用 Verilog 实现 LED 呼吸灯效果

    呼吸灯为常见的数字IC设计案例,也比较简单,主要是关于呼吸灯的原理需要理解。常见的应用在手机的呼吸灯,这里我们采用硬件描述语言来实现LED呼吸灯的效果,即在1s内,LED灯由暗逐渐变亮,再1s内再由亮逐渐变暗。

    一、设计原理

    呼吸灯设计原理归结为对于分频占空比的应用,就是先分频,然后再设置占空比的设计。占空比也就是控制LED暗亮的时间达到具有呼吸灯的效果。

    首先要引入 脉冲宽度调制(PWM) 的概念,LED的点亮和熄灭,是电平高低变换的结果,可以将一高一低看作一个周期,每个周期一亮一灭,会显示为LED的闪烁,当周期很短,也就是频率很高时,这种闪烁将不被肉眼识别,会让人产生LED连续发光的感觉。在一个周期内,高电平时长与一个周期时长的比叫做占空比占空比越高,相当于通过LED的电流就越大,视觉上的感觉就越亮。说到这里,应该就有了做呼吸灯的思路,就是改变占空比!让占空比小幅度有级提升,就会有LED无级变亮的感觉。反之就会变暗。占空比越高,亮度越亮。

    首先将1s 分为1000份(1ms),然后在1ms内在继续分为1000份(1us),每一个1ms内,依次增加亮灯时间
    即:
    第1个1ms内亮灯1us
    第2个1ms内亮灯2us
    第3个1ms内亮灯2us
    … …
    第1000个1ms内亮灯1000us

    二、基于Verilog设计
    module led_breath(
    input clk_i,    //100MHz
    input rst_n_i,
    output led_o
    );
    
    //1s计数器
    reg flag_1s;
    reg [26:0] cnt_1s;
    always @(posedge clk_i)
    begin
            if (! rst_n_i)begin
                cnt_1s <= 27'b0;
                flag_1s <= 1'b0;
            end
            else if(cnt_1s == 27'd100_000_000 ) begin
                cnt_1s <= 27'b0;
                flag_1s <= 1'b1;
            end
            else begin
                cnt_1s <= cnt_1s + 1'b1;
                flag_1s <= 1'b0;
            end
    end
    
    //1ms计数器
    reg flag_1ms;
    reg [17:0] cnt_1ms;
    always @(posedge clk_i)
    begin
            if (! rst_n_i)begin
                cnt_1ms <= 18'b0;
                flag_1ms <= 1'b0;
            end
            else if(cnt_1ms == 18'd100_000 ) begin
                cnt_1ms <= 18'b0;
                flag_1ms <= 1'b1;
            end
            else begin
                cnt_1ms <= cnt_1ms + 1'b1;
                flag_1ms <= 1'b0;
            end
    end
    
    //1us计数器
    reg flag_1us;
    reg [6:0] cnt_1us;
    always @(posedge clk_i)
    begin
            if (! rst_n_i)begin
                cnt_1us <= 7'b0;
                flag_1us <= 1'b0;
            end
            else if(cnt_1us == 7'd100) begin
                cnt_1us <= 7'b0;
                flag_1us <= 1'b1;
            end
            else begin
                cnt_1us <= cnt_1us + 1'b1;
                flag_1us <= 1'b0;
            end
    end
    
    //计数多少个ms
    reg [9:0] number_ms;
    always @(posedge clk_i)
    begin
            if (! rst_n_i )begin
                number_ms <= 10'd0;
            end
            else begin
                    if(number_ms == 10'd1000)begin
                        number_ms <= 10'd0;
                    end
                    else if(flag_1ms == 1'b1) begin
                        number_ms <= number_ms + 1'b1;
                    end
                    else begin
                        number_ms <= number_ms;
                    end
            end
    end
    
    
    
    //计数多少个us
    reg [9:0] number_us;
    always @(posedge clk_i or negedge rst_n_i)
    begin
            if (! rst_n_i )begin
                number_us <= 10'd0;
            end
            else begin
                    if(number_us == 10'd1000)begin
                        number_us <= 10'd0;
                    end
                    else if(flag_1us == 1'b1) begin
                        number_us <= number_us + 1'b1;
                    end
                    else begin
                        number_us <= number_us;
                    end
            end
    end
    
    //module of led breath
    //
    wire led_flag0; //由暗逐渐变亮
    wire led_flag1; //由亮逐渐变暗
    assign  led_flag0 = (number_ms > number_us)? 1: 0;
    assign  led_flag1 = (number_ms > number_us)? 0: 1;
    
    assign led_o = (led_flag)? led_flag0 : led_flag1;
    
    reg led_flag;		//每隔1s 翻转一次信号
    always @(posedge clk_i or negedge rst_n_i)
    begin
            if (! rst_n_i)begin
                    led_flag <= 1'b1;
            end
            else if (flag_1s == 1'b1) begin
                    led_flag <= ~ led_flag;
            end
            else begin
                    led_flag <= led_flag;
            end
    
    end
    
    
    endmodule
    

    仿真结果
    在这里插入图片描述
    在这里插入图片描述
    当复位信号复位时,ms和us计数器均开始计数.
    1us,1ms的时间均通过计数器来控制
    每过1us,us计数器累加(number_us),一直到1ms累加到1000us即计数清零。
    每过1ms,ms计数器累加(number_ms),一直到1ms累加到1000ms即计数清零。

    当 number_us < number_ms,led_flag被拉高成高电平。这样在1s内,有1000次 led_flag 被拉高的,并且每次时间间隔一次增加。(0到999)

    经过上板验证,确实可以实现LED灯有呼吸效果。

    关于使用C语言程序来控制GPIO实现LED呼吸灯的效果可以参考下面一篇博文,主要介绍使用ZYNQ PS部分来实现。

    展开全文
  • led实现呼吸灯

    千次阅读 2018-08-12 10:46:46
    1.呼吸灯原理就是要让led灯的亮灭时间不同,需要多个计数器实现。从1us到1s钟,改变led呼吸灯的触发条件。 2.依旧把程序写出来,这次在写计数器的时候,发现自己很大问题,就是计数器条件写不全。要不就是只写...

    1.呼吸灯原理就是要让led灯的亮灭时间不同,需要多个计数器实现。从1us到1s钟,改变led呼吸灯的触发条件。

    2.依旧把程序写出来,这次在写计数器的时候,发现自己很大问题,就是计数器条件写不全。要不就是只写计数不清零,要么就是忘记清零不拉高。说白了,就是不理解时序,没有将一个周期的计算器完全描述出来。

    module	hx_led(
    		input wire sclk,
    		input wire rst_n,
    		output reg [3:0]led
    );
    
    reg [6:0] cnt_1;
    reg [9:0] cnt_2;
    reg [9:0] cnt_3;
    
    //reg flag_cnt_1;
    //reg flag_cnt_2;
    //reg flag_cnt_3;
    
    parameter CNT_1=10'd49;
    parameter CNT_2=10'd999;
    
    always @(posedge sclk or negedge rst_n)    //计数器2us
    		if(!rst_n)
    			cnt_1<=7'b0000_000;
    			else if(cnt_1==CNT_1)
    			 		cnt_1<=7'b0000_000;
    			 	else	cnt_1<=cnt_1+1'b1;
    			 	
    always @(posedge sclk or negedge rst_n)   //少记了一个2us
    		if(!rst_n)	
    			cnt_2<=10'd0;
    			else if(cnt_2==CNT_2&&cnt_1==CNT_1)	  //拉低条件要仔细看
    				 cnt_2<=10'd0; 	
    				 else if(cnt_1==CNT_1)
    						cnt_2<=cnt_2+1'b1;
    always @(posedge sclk or negedge rst_n)
    		if(!rst_n)	
    			cnt_3<=10'd0;
    			else if(cnt_3==CNT_2&&cnt_2==CNT_2&&cnt_1==CNT_1)	
    				 cnt_3<=10'd0; 	
    				 else if(cnt_2==CNT_2&&cnt_1==CNT_1)	
    						cnt_3<=cnt_3+1'b1;
    		//		 				 
    		//always @(posedge sclk or negedge rst_n)    //产生flag-cntus标志位
    		//if(!rst_n)
    		//flag_cnt_1<=1'b0;
    		//else if(cnt_1==CNT_1)
    		//	flag_cnt_1<=1'b1;
    		//	else flag_cnt_1<=1'b0;
    		//	
    		/*always @(posedge sclk or negedge rst_n)    //产生flag-cntms标志位
    		if(!rst_n)
    		flag_cnt_2<=1'b0;	
    		else if(flag_cnt_1==1'b1&&)		*/
    
    always @(posedge sclk or negedge rst_n)
    		if(!rst_n)	
    		led<=4'b0000;
    		else if(cnt_2<=cnt_3)
    			led<=4'b1111;
    			else led<=4'b0000;				
    endmodule

     

    3.仿真时序,就可以看出计数器的问题,说白了就是自己仿真做的少。波形分析的太少,需要多分析模块中的波形。

             波形分析:计数器第一个是实现1000us的计数,因为时钟频率为50MHZ,所以周期就是20us技术到50就是千分之一ms,所以第二个计数器记到1000就是1ms,第三个计数器就是记到1000就达到了1s钟的亮了。仿真的时候,修改了计数器的最大值参数,第二第三没记到1000而是记到10,第一个记到4。仿真出了,以上的波形。

    展开全文
  • 这篇文章 [使用 Verilog 实现 LED 呼吸灯效果]是基于纯数字逻辑来实现呼吸灯的效果,本节介绍采用C语言来实现LED呼吸灯的效果,重点理解如何通过ARM来实现LED呼吸灯效果的,即原理和过程。 本次利用一个GPIO 外设...

    SoC第二讲——使用C语言实现 LED 呼吸灯效果(五)
    这篇文章 使用 Verilog 实现 LED 呼吸灯效果 是基于纯数字逻辑来实现呼吸灯的效果,本节介绍采用C语言来实现LED呼吸灯的效果,重点理解如何通过ARM来实现LED呼吸灯效果的,即原理和过程。

    本次利用一个GPIO 外设接口PS和PL部分用GPIO连接起来,通过ARM控制GPIO进而控制PL部分。

    引脚输出的电平只有0和1,但要实现渐变的效果,传入的电流必须有0.x的值,为了达到这个目的,首先要引入脉冲宽度调制(PWM)的概念。

    LED的点亮和熄灭,是电平高低变换的结果,可以将一高一低看作一个周期,每个周期一亮一灭,会显示为LED的闪烁,当周期很短,也就是频率很高时,这种闪烁将不被肉眼识别,会让人产生LED连续发光的感觉。在一个周期内,高电平时长与一个周期时长的比叫做占空比,占空比越高,相当于通过LED的电流就越大,视觉上的感觉就越亮。说到这里,应该就有了做呼吸灯的思路,就是改变占空比!让占空比小幅度有级提升,就会有LED无级变亮的感觉。反之就会变暗。

    占空比越高,亮度越亮

    C代码部分main主体:
    int main()
    {		int i,j;
    		int led=0;
    		initGpio();//调用gpio初始化函数
    		while(1){
    			for(i=0;i<1000;i++){
    				for(j=0;j<1000;j++){
    					if(i>j){
    						XGpioPs_WritePin(&GpioPs,LED0,0x01);
    					}
    					else
    					{
    						XGpioPs_WritePin(&GpioPs,LED0,0x00);
    					}
    				}
    			}
    		}
    }
    

    上面的代码只是实现了LED由暗变灭的过程,实现完整的呼吸灯效果,可以再增加一段对称的代码,实现由亮变暗。
    完整main主函数

    int main()
    {
    	initGpio();  //initial GPIO
    //	int led = 0;
    	int i,j;
    	XGpioPs_WritePin(&GpioPs,LED1,0x01);//fpga led 闪烁
    	while(1){
    		for(i=0;i<1000;i++){
    			for(j=0;j<1000;j++){
    				if(i>j){
    					XGpioPs_WritePin(&GpioPs,LED0,0x01);
    					usleep(1);
    				}
    				else
    				{
    					XGpioPs_WritePin(&GpioPs,LED0,0x00);
    					usleep(1);
    				}
    			}
    		}
    		usleep(10);
    		for(i=0;i<1000;i++){
    					for(j=0;j<1000;j++){
    						if(i>j){
    							XGpioPs_WritePin(&GpioPs,LED0,0x00);
    							usleep(1);
    						}
    						else
    						{
    							XGpioPs_WritePin(&GpioPs,LED0,0x01);
    							usleep(1);
    						}
    					}
    				}
    	}
    

    与纯逻辑实现呼吸灯的算法(设计原理)一致,通过两个变量来控制计数时间(这里是CPU循环一次周期的时间为最小的亮灯时间或是暗灯时间),并通过一个循环嵌套来实现。

    调用GPIO初始化函数在使用C语言通过GPIO驱动点亮LED灯(四)里面,再次不过多赘述。

    在SDK中上板调试中,可以出现和纯逻辑一样的效果。

    展开全文
  • 定时器实现led呼吸灯 实验原理: 灯在高速闪烁时,光信号传入大 脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失。每次循环时,前半部分先让亮的时间逐渐增加,暗的时间逐渐减小;后半部分先让...
  • 2.GPIO实现led呼吸灯 首先添加一下库函数 看一下开发板原理图 得到对应的PC10,PC11,PC13 什么都不要说直接上代码 先LED初始化 void LEDInit(void) { GPIO_InitTypeDef GPIO;//自定义GPIO RCC_AHB1...
  • 前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸...这篇博文里介绍的就是我对本周的实验LED呼吸灯原理通过学习进行的浅层次的理解分享. 理解PWM需要知道的知识 (1)脉冲 解释: 电子...
  • 原理LED长脚的为正,短脚为负极。LED的正极连接 IO口9,LED负极连接电阻,电阻的另外一端接GND. 代码: int brightness = 0; //定义整数型变量brightness与其初始值,此变量用来表示LED的亮度。 int ...
  • 简述PWM  PWM——脉宽调制信号(Pulse ... LED特效呼吸灯原理  采用pwm的方式,在固定的频率下,采用占空比的方式来实现LED亮度的变化。占空比为0,LED灯不亮,占空比为100%,则LED灯最亮。所以将占空比从0到...
  • ESP32的LED_PWM实现呼吸灯效果

    千次阅读 2019-01-11 00:20:16
    乐鑫的ESP32的esp_idf实现了一个呼吸灯的接口;我按着接口写了个小程序去实现闪烁和呼吸的效果,但调了半天才调出了想要的呼吸效果;故作此笔记;先来说下几个简单的概念; PWM:Pulse Width Modulation 的缩写,即...
  • 使用定时器4输出PWM来实现呼吸灯效果。 在人眼辨识能力范围内,调节LED亮的时间,达到LED灯的亮度不同。例:给低电平LED就亮,如果一个脉冲中全是低电平那么LED最亮,如果一个脉冲一半是高电平,一半是低电平,那么...
  • 51之旅的第一步,亮灯。但我们不仅仅只是亮一个就够了,我们亮就要亮出...原理支撑:对于嵌入的LED,低电平亮,高电平灭(这个大部分这样,实际情况不放心可以自己测一下,分别给个高低的电平看看那个亮)。对于独...
  • 呼吸灯(Verilog)

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

    2019-10-31 15:21:06
    Mixly-呼吸灯及可调灯 一、实验目的及要求 熟悉函数应用及中断用法。 二、实验原理与内容 1.使用函数方法实现呼吸灯功能。 2.使用中断或其他方式实现可调灯功能。 三、实验软硬件环境 硬件:Arduino、LED灯、按钮 ...
  • 文章目录延时函数介绍呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535。 呼吸灯原理led以点亮和熄灭时间相同的时候,...
  • 呼吸灯原理 ------呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。其广泛应用于手机之上,并成为各大品牌新款手机的卖点之一,起到一个通知提醒的作用。 设计要求 ------时钟频率50...
  • 呼吸灯的实现

    千次阅读 2019-04-02 17:36:54
    有要求要实现LED灯光强弱变化控制的,之前有了解过呼吸灯的概念,也知道通过PWM来控制,但也只是停留在概念上面,以前也没有真正去做过这方面的,所以就在网上再搜罗了一番,感觉还是有些云里雾里的,最后只好自己静...
  • 本文利用Arduino和8个LED灯制作了一个简易的跑马灯,其中5个为频闪灯,另外3个为呼吸灯。 二、基本测试电路 将单片机的串口2定义为输出模式,通过几行简单的代码熟悉跑马灯的基本原理。 代码如下: int PIN_2...
  • 呼吸灯:我们将通过脉宽调制技术来实现“呼吸灯”,实现LED的亮度由最暗逐渐增加到最亮,再逐渐变暗的过程。 脉冲宽度调制。它是利用微控制器的数字输出调制实现,是对模拟电路进行控制的一种非常有效的技术,广泛...
  • led的亮度由电流的大小控制,电流越大,灯越亮,但是在数字电路中无法控制电流的大小,由于人眼的视觉暂留显效,可以控制led的点亮时间,来实现呼吸灯的。 3,方案 可以将2s时间划分为1000个小段,每段2ms,在第一个...
  • 蓝桥杯单片机PWM呼吸灯程序,通过调节PWM值,改变灯的亮度,本程序以LED1为例,让其明白原理,应用其它地方就不难了。非常的银杏,非常的好用!
  • ESP32呼吸灯 PWM

    2020-12-13 16:34:34
    (1) 学习如何控制 LED 及硬件原理 (2) 学习 ESP32 的 PWM(ledc)功能的配置 (3) 掌握 PWM(ledc)控制 LED 彩灯渐变程序 3.8.2. 硬件设计和原理 LED 彩灯硬件设计在 3.3 节已经讲解过了,我们知道通过 IO15、IO16...
  • 呼吸灯之定时器实现前言一、呼吸灯原理二、实现代码1.单片机介绍2.代码总结 前言 初入嵌入式,相信大家就是从点亮一个LED灯开始的吧。成功点亮后,我们接下来干的就是让LED灯闪烁起来,当LED闪烁起来后,我们已经不...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

led呼吸灯原理