基于STM32F103单片机WIFI无线APP控灯亮度灭设计
一、功能
由STM32F103C8T6单片机核心电路+两位白色高亮LED灯电路+WIFI模块ESP8266电路++电源电路组成。 1、stm32实时监测wifi数据,解析数据后通过pwm控制led的亮灭及亮度程度。 2、手机发送指令: OPEN1,第一个灯亮;OPEN2,第二个灯亮; CLOSE1,第一个灯灭;CLOSE2,第二个灯灭; LED1-1,第一个等处于1档,LED1-2,第1个等处于2档,LED1-3,第一个等处于3档。 LED2-1,第2个等处于1档,LED2-2,第2个等处于2档,LED2-3,第2个等处于3档, OPENALL:全亮 CLOSEALL:全灭!
二、材料清单
三、流程图
四、程序
主函数
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "key.h"
#include "usart.h"
#include <string.h>
unsigned char led1Count=0;
unsigned char led2Count=0;
unsigned char PWML_LED1=10;
unsigned char PWML_LED2=10;
unsigned char BufTab[10];
unsigned char Count;
unsigned char UartBusy=0;
unsigned char ReadFlag=0;
unsigned char sendDataFlag=0;
u8 rebackFalg= 0;
u8 MesCount=0;
unsigned char i ;
int main(void)
{
delay_init();
NVIC_Configuration();
LED_Init();
uart_init(9600);
TIM3_Int_Init(499,7199);
i=50;
while(i--) delay_ms(100);
printf("AT+CIPMUX=1\r\n");
i=10;
while(i--) delay_ms(100);
printf("AT+CIPSERVER=1,8080\r\n");
while(1)
{
if(ReadFlag== 1)
{
Count=0;
UartBusy=0;
ReadFlag=0;
if((strstr((const char *)BufTab,"PEN1")!=NULL)||(strstr((const char * )BufTab,"ED1-3")!=NULL))
{
PWML_LED1=10;rebackFalg=1;
}
else if(strstr((const char * )BufTab,(const char * )"LOSE1")!=NULL)
{
PWML_LED1=0;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"ED1-1")!=NULL)
{
PWML_LED1=3;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"ED1-2")!=NULL)
{
PWML_LED1=6;rebackFalg=1;
}
else if((strstr((const char *)BufTab,"PEN2")!=NULL)||(strstr((const char *)BufTab,"ED2-3")!=NULL))
{
PWML_LED2=10;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"LOSE2")!=NULL)
{
PWML_LED2=0;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"ED2-1")!=NULL)
{
PWML_LED2=3;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"ED2-2")!=NULL)
{
PWML_LED2=6;rebackFalg=1;
}
}
else if(strstr((const char *)BufTab,"PENALL")!=NULL)
{
PWML_LED1=10;PWML_LED2=10;rebackFalg=1;
}
else if(strstr((const char *)BufTab,"LOSEALL")!=NULL)
{
PWML_LED1=0;PWML_LED2=0; rebackFalg=1;
}
for(i=0;i<10;i++)
{
BufTab[i]='0';
}
if((sendDataFlag == 1)&&(rebackFalg != 0))
{
if(MesCount == 0)
{
MesCount =1;
printf("AT+CIPSEND=0,2\r\n");
}
else
{
if(rebackFalg ==1)
{printf("OK");}
MesCount = 0;
rebackFalg = 0;
}
sendDataFlag = 0;
}
led1Count++;
led2Count++;
if(led1Count<PWML_LED1)
{
LED1=0;
}
else if((led1Count>=PWML_LED1)&&(led1Count<=10))
{
LED1=1;
}
else
{
led1Count=0;
}
if(led2Count<PWML_LED2)
{
LED2=0;
}
else if((led2Count>=PWML_LED2)&&(led2Count<=10))
{
LED2=1;
}
else
{
led2Count=0;
}
}
}
|