STM32
直播中

池鹄展

7年用户 919经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

怎样去修改ESP8266的代码以便实现WIFI调节小灯的亮度呢

怎样去修改ESP8266的代码以便实现WIFI调节小灯的亮度呢?要修改哪几个部分呢?

回帖(1)

贾乐

2021-12-13 10:17:54
基于正点原子精英版的PWM输出实验修改

只需修改三个部分的代码即可,根据之前WIFI控制小灯的教程,可以把ESP8266的代码稍作修改,就可以实现WIFI调节亮度。
  led.h

#ifndef __LED_H
#define __LED_H         
#include "sys.h"
#include "usart.h"       
#include "timer.h"
#include "delay.h"       
#include "stdio.h"
//
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5       


void LED_Init(void);//初始化
void LED_Ctrl_Up(void);
void LED_Ctrl_Dowm(void);
void LED_Ctrl_Open(void);
void LED_Ctrl_Close(void);
void LED_Ctrl(void);


#endif


led.c


#include "led.h"




static u16 led0pwmval=0; //比较值
void LED_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;
       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);         //使能PB,PE端口时钟
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 输出高


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                             //LED1-->PE.5 端口配置, 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5);                                                  //PE.5 输出高
}

void LED_Ctrl_Up(void)
{               
                TIM_Cmd(TIM3, ENABLE);  //使能TIM3
                delay_ms(10);
                if(led0pwmval<600)
          led0pwmval+=100;
                TIM_SetCompare2(TIM3,led0pwmval);                   //给比较值
}


void LED_Ctrl_Dowm(void)
{                                               
                delay_ms(10);
                if(led0pwmval>110)
          led0pwmval-=100;
                TIM_SetCompare2(TIM3,led0pwmval);                   //给比较值
}


void LED_Ctrl_Close(void)
{
        TIM_Cmd(TIM3,DISABLE );  //使能TIM3
        LED0=1;
       
}
void LED_Ctrl_Open(void)
{
        TIM_Cmd(TIM3, ENABLE);  //使能TIM3
        led0pwmval=200;
        TIM_SetCompare2(TIM3,led0pwmval);       
       
}




//#D1 关灯  #D0开灯   #T1 加亮度


void LED_Ctrl(void)
{
if(USART_RX_STA&0x8000)
                {                                          
                        if(USART_RX_BUF[0]=='?')
                        {
                                printf("#D1开灯rn#D0关灯 rn#T1和#T0调整红灯亮度rn");
                        }
                       
                                        if(USART_RX_BUF[0]=='#')
                                {
                                       
                                        if(USART_RX_BUF[1]=='D')
                                        {
                                                if(USART_RX_BUF[2]=='0')
                                                {
                                                        LED1=1;
                                                        LED_Ctrl_Close();
                                                       
                                                }
                                                        if(USART_RX_BUF[2]=='1')
                                                {
                                                        LED1=0;
                                                        LED_Ctrl_Open();
                                                }
                                               
                                        }
                                       
                                        if(USART_RX_BUF[1]=='T')
                                        {
                                               
                                                if(USART_RX_BUF[2]=='1')
                                                {
                                                        LED_Ctrl_Up();
                                                       
                                                }
                                                        if(USART_RX_BUF[2]=='0')
                                                {
                                                        LED_Ctrl_Dowm();
                                                }
                                               
                                        }
                                       
                                       
                                }
                               
                        USART_RX_STA=0;
                }


}         


main.c


#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"


int main(void)
{               
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);         //串口初始化为115200
        LED_Init();                             //LED端口初始化
        TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz
       
        printf("#D1开灯rn#D0关灯 rn#T1和#T0调整红灯亮度rn");
           while(1)
        {
                LED_Ctrl();
        }         
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分