liuhao 2 年之前
父節點
當前提交
c7c3c7d98f

+ 15 - 13
TEST_Prj/stm32_SmartLed_proprj/Demo/SYSTEM/usart/usart.c

@@ -265,15 +265,15 @@ int settemp=0;
 
 void analyse_data()
 {
-	if(strstr(Usart1ReadBuff,"oepn")!=NULL)
+	if(strstr(Usart1ReadBuff,"open")!=NULL)
 	{
 	    openflag=1;
 	}
-	else if(strstr(Usart1ReadBuff,"close")!=NULL)
+	if(strstr(Usart1ReadBuff,"close")!=NULL)
 	{
 	   openflag=0;
 	}
-	else if(strstr(Usart1ReadBuff,"mode1")!=NULL)
+ if(strstr(Usart1ReadBuff,"mode1")!=NULL)
 	{
 	   mode_flag=1;
 	}
@@ -281,37 +281,39 @@ void analyse_data()
 	{
 	   mode_flag=0;
 	}
-	else if(strstr(Usart1ReadBuff,"dwval")!=NULL) //设置挡位
+	
+	if(strstr(Usart1ReadBuff,"dwval")!=NULL) //设置挡位
 	{
-	   if(strstr(Usart1ReadBuff,"1")!=NULL)
+	   if(strstr(Usart1ReadBuff,"0")!=NULL)
 		 {
 				dw_val=0;
 		 }
-		 if(strstr(Usart1ReadBuff,"2")!=NULL)
+		 if(strstr(Usart1ReadBuff,"1")!=NULL)
 		 {
 		   dw_val=1;
 		 }
-		 if(strstr(Usart1ReadBuff,"3")!=NULL)
+		 if(strstr(Usart1ReadBuff,"2")!=NULL)
 		 {
 		   dw_val=2;
 		 }
 	}
-	else if(strstr(Usart1ReadBuff,"scval")!=NULL) //设置色彩
+	
+	if(strstr(Usart1ReadBuff,"scval")!=NULL) //设置色彩
 	{
-	   if(strstr(Usart1ReadBuff,"1")!=NULL)
+	   if(strstr(Usart1ReadBuff,"0")!=NULL)
 		 {
 				sc_val=0;
 		 }
-		 if(strstr(Usart1ReadBuff,"2")!=NULL)
+		 if(strstr(Usart1ReadBuff,"1")!=NULL)
 		 {
 		   sc_val=1;
 		 }
-		 if(strstr(Usart1ReadBuff,"3")!=NULL)
+		 if(strstr(Usart1ReadBuff,"2")!=NULL)
 		 {
 		   sc_val=2;
 		 }
 	}
-	else if(strstr(Usart1ReadBuff,"alarm:")!=NULL)//设置闹钟 格式alarm:15@43\r\n;
+ if(strstr(Usart1ReadBuff,"alarm:")!=NULL)//设置闹钟 格式alarm:15@43\r\n;
 	{
 		  memset(tempbuf,0,16);
 	    if(String_Sub(Usart1ReadBuff,tempbuf,"alarm:","@")==1) //提取时
@@ -324,7 +326,7 @@ void analyse_data()
 			   set_f1=atoi(tempbuf);
 			}
 	}
-	else if(strstr(Usart1ReadBuff,"time:")!=NULL&&strstr(Usart1ReadBuff,"\r\n")!=NULL)//设置闹钟 格式time:15S43F34\r\n;
+	 if(strstr(Usart1ReadBuff,"time:")!=NULL&&strstr(Usart1ReadBuff,"\r\n")!=NULL)//设置闹钟 格式time:15S43F34\r\n;
 	{
 		  memset(tempbuf,0,16);
 	    if(String_Sub(Usart1ReadBuff,tempbuf,"time:","S")==1) //提取时

文件差異過大導致無法顯示
+ 2 - 3
TEST_Prj/stm32_SmartLed_proprj/Demo/USER/Demo.uvguix.liuhao


+ 144 - 287
TEST_Prj/stm32_SmartLed_proprj/Demo/USER/main.c

@@ -35,9 +35,11 @@ u16 GetTimer=0;//
 u8 dw_val=0;//挡位//亮度值
 u8 sc_val=0;//色彩
 int set_s1=7,set_f1=0; //设置 时间1 
-int cnt_s1=2,cnt_f1=0,cnt_m1=0;//学习时间 时分秒
+int cnt_s1=0,cnt_f1=0,cnt_m1=0;//学习时间 时分秒
 #define RT_INPUT PBin(8)//人体红外感应
 
+#define YP_BUSY PAin(6)
+
 #define KEY_GPIO_PROT   GPIOA 
 #define KEY1_GPIO_PIN 	GPIO_Pin_0
 #define KEY2_GPIO_PIN 	GPIO_Pin_1
@@ -55,12 +57,18 @@ void key_gpio_init(void)
 {
 	GPIO_InitTypeDef GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
-	GPIO_InitStructure.GPIO_Pin  = KEY1_GPIO_PIN|KEY2_GPIO_PIN|KEY3_GPIO_PIN|KEY4_GPIO_PIN|KEY5_GPIO_PIN;
+	GPIO_InitStructure.GPIO_Pin  = KEY1_GPIO_PIN|KEY2_GPIO_PIN|KEY3_GPIO_PIN|KEY4_GPIO_PIN|KEY5_GPIO_PIN|GPIO_Pin_6;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
  	GPIO_Init(KEY_GPIO_PROT, &GPIO_InitStructure);
+	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 	GPIO_Init(GPIOA, &GPIO_InitStructure);
+	
+	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;
+	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
+	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+	GPIO_Init(GPIOA, &GPIO_InitStructure);
 }
 
 
@@ -173,6 +181,7 @@ void TIMER3_Int_Init(u16 arr,u16 psc)
 
 }
 
+char clear_flag=0;
 
 
 int key_Task(void)
@@ -194,7 +203,7 @@ int key_Task(void)
 						   if(++dw_val>2)dw_val=0;
 						 }else
 						 {
-						 
+						   cnt_s1++;
 						 }
 				 }
 				 else if(KEY3_IN==0)
@@ -204,7 +213,7 @@ int key_Task(void)
 						    if(++sc_val>2)sc_val=0;
 						 }else
 						 {
-						 
+						   if(cnt_s1>0)cnt_s1--;
 						 }
 				 }
 				 else if(KEY4_IN==0)
@@ -214,12 +223,12 @@ int key_Task(void)
 						   openflag^=1;//开关按钮
 						 }else
 						 {
-						 
+						   
 						 }
 				 }
 				 else if(KEY5_IN==0)
 				 {
-				    
+				     clear_flag^=1;
 				 }
 			}
 	 }else
@@ -254,7 +263,7 @@ void TIM3_IRQHandler(void)//
 				 }
 				 if(rt_flag) //有人 开始计时计算学习时间
 				 {
-				   if(++seccnt>50)
+				   if(++seccnt>=50)
 					 {
 					    seccnt=0;
 						  if(++cnt_m1>59) 
@@ -313,193 +322,22 @@ void uartX_sendByte(uint8_t val)
    IO_TX_GPIO_Port=1;
     delay_us(104);
 }
-/*********************************************************************************************
-//函数名:Next_Play()
-//
-//功能说明:设定音量
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Next_Play()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x01);
-	uartX_sendByte(0xEF); 
-}
-
-/*********************************************************************************************
-//函数名:Last_Play()
-//
-//功能说明:
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Last_Play()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x02);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Specify_Musi_Play()
-//
-//功能说明:指定曲目播放
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Specify_Musi_Play(u8 num)
+void sendData(char *p,unsigned  char n)
 {
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x04);
-	uartX_sendByte(0x03);
-	uartX_sendByte(0x00);
-	uartX_sendByte(num);
-	uartX_sendByte(0xEF); 
-}
-
-/*********************************************************************************************
-//函数名:Volume_add()
-//
-//功能说明:音量加
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Volume_add()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x04);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Volume_nec()
-//
-//功能说明:音量减
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Volume_nec()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x05);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Specify_Volume()
-//
-//功能说明:指定音量
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Specify_Volume(u8 num)
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x03);
-	uartX_sendByte(0x06);
-	uartX_sendByte(num);
-	uartX_sendByte(0xEF); 
-}
-
+  if( p == 0) return ;
+	 if(n > 0)
+	 {
+		 while(n --)
+		 {
+			 uartX_sendByte(*p++);
+		 }
+	 }
 
-/*********************************************************************************************
-//函数名:Music_play()
-//
-//功能说明:播放
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Music_play()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x0D);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Music_pause()
-//
-//功能说明:暂停
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Music_pause()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x0E);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Music_stop()
-//
-//功能说明:停止
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Music_stop()
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x02);
-	uartX_sendByte(0x10);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Switch_play_Device()
-//
-//功能说明:U/TF/AUX/SLEEP/FLASH(0/1/2/3/4)切换
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Switch_play_Device(u8 num)
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x03);
-	uartX_sendByte(0x09);
-	uartX_sendByte(num);
-	uartX_sendByte(0xEF); 
-}
-/*********************************************************************************************
-//函数名:Cycle_play()
-//
-//功能说明:1:全部循环 0:单曲循环
-//
-//入口参数:
-//
-//出口参数:NO
-***********************************************************************************************/
-void Cycle_play(u8 num)
-{
-	uartX_sendByte(0x7E); 
-	uartX_sendByte(0x03);
-	uartX_sendByte(0x11);
-	uartX_sendByte(num);
-	uartX_sendByte(0xEF); 
 }
 u8 test=0;
-
+unsigned char sendbuff1[8]={0x7E, 0x04 ,0x03 ,0x00, 0x01, 0xEF};
+unsigned char sendbuff2[8]={0x7E, 0x04 ,0x03 ,0x00, 0x02, 0xEF};
+unsigned char sendbuff3[8]={0x7E, 0x04 ,0x03 ,0x00, 0x03, 0xEF};
 int main(void)
 {	 
 
@@ -508,7 +346,7 @@ int main(void)
  	LED_Init();		  			//初始化与连接的硬件接口
 	YP1=1;YP2=1;YP3=1;
 	uart_init(9600);
-	delay_ms(1000);
+	delay_ms(100);
 	key_gpio_init();
 	
 	TIMER3_Int_Init(20000,71);//定时器初始化 //10ms进一次中断
@@ -522,93 +360,87 @@ int main(void)
 	SK9822_Intit();
 	Wave_IO_Init();
 	SK9822_Write_Data(0xff,0,0,0);
-	Ds1302_Write_Time_All(1);
-//	Next_Play();
-	delay_ms(10);
-	Cycle_play(1);
-	delay_ms(10);
-		Cycle_play(1);
-	delay_ms(10);
-	Specify_Musi_Play(2);
-	delay_ms(10);
-		Cycle_play(1);
+//	Ds1302_Write_Time_All(1);
 	delay_ms(10);
+  
  	while(1)
 	{	 	
       
 		if(GetTimer>50)//1S
      {  		
 			        GetTimer=0;
-			if(openflag)
-			{
-			 switch(dw_val)
-			 {
-				 case 0:
-					  switch(sc_val)
-						{
-							case 0:
-							YP1=0;YP2=1;YP3=1;
-								SK9822_Write_Data(0xff,0xff,0xff,0xff);
-							break;
-							
-							case 1:
-								YP1=1;YP2=0;YP3=1;
-								SK9822_Write_Data(0xff,255,255,0);
-							break ;
-							
-							case 2:
-								YP1=1;YP2=1;YP3=0;
-								SK9822_Write_Data(0xff,60,255,60);
-							break;
-						}
-					 	
-				 break;
-				 
-				 case 1:
-					  switch(sc_val)
-						{
-							case 0:
-								SK9822_Write_Data(0xff,125,125,125);
-							break;
-							
-							case 1:
-								SK9822_Write_Data(0xff,125,125,0);
-							break ;
-							
-							case 2:
-								SK9822_Write_Data(0xff,30,125,30);
-							break;
-						}
-					 	
-				 break;
-				 
-				 case 2:
-					   switch(sc_val)
-						{
-							case 0:
-								SK9822_Write_Data(0xff,30,30,30);
-							break;
-							
-							case 1:
-								SK9822_Write_Data(0xff,40,40,0);
-							break ;
+			
+				if(openflag)
+					{
+					 switch(dw_val)
+					 {
+						 case 0:
+								switch(sc_val)
+								{
+									case 0:
+
+										SK9822_Write_Data(0xff,0xff,0xff,0xff);
+									break;
+									
+									case 1:
+
+										SK9822_Write_Data(0xff,255,255,0);
+									break ;
+									
+									case 2:
+
+										SK9822_Write_Data(0xff,60,255,60);
+									break;
+								}
+								
+						 break;
+						 
+						 case 1:
+								switch(sc_val)
+								{
+									case 0:
+										SK9822_Write_Data(0xff,125,125,125);
+									break;
+									
+									case 1:
+										SK9822_Write_Data(0xff,125,125,0);
+									break ;
+									
+									case 2:
+										SK9822_Write_Data(0xff,30,125,30);
+									break;
+								}
+								
+						 break;
+						 
+						 case 2:
+								 switch(sc_val)
+								{
+									case 0:
+										SK9822_Write_Data(0xff,30,30,30);
+									break;
+									
+									case 1:
+										SK9822_Write_Data(0xff,40,40,0);
+									break ;
+									
+									case 2:
+										SK9822_Write_Data(0xff,10,50,10);
+									break;
+								}
+								
+						 break;
+					 }
+				 }else{
+					 SK9822_Write_Data(0xff,0,0,0);//熄灭
+				 }
+				 if(mode_flag)//自动模式下控制
+				 {
+					 OLED_ShowString(90,6,"A",16);
+				 }else{ //手动模式下控制
+					 OLED_ShowString(90,6,"M",16);
 							
-							case 2:
-								SK9822_Write_Data(0xff,10,50,10);
-							break;
-						}
-					 	
-				 break;
-			 }
-		 }else{
-		   SK9822_Write_Data(0xff,0,0,0);//熄灭
-		 }
-		 if(mode_flag)
-		 {
-		   OLED_ShowString(90,6,"A",16);
-		 }else{
-		   OLED_ShowString(90,6,"M",16);
-		 }
+				 }
 						
 	          if(dht11_read_data(buffer) == 0)//读取温湿度
 						{
@@ -639,7 +471,25 @@ int main(void)
 									
 					if(mode_flag)//自动模式
 				{
-
+						if(rt_flag) //有人 
+						{
+							openflag=1;
+						   if(GzVal<50)
+							 {
+							   dw_val=0;//开启最大亮度
+							 }
+							 else if(GzVal>50&&GzVal<500)
+							 {
+							   dw_val=1;
+							 }
+							 else if(GzVal>500)
+							 {
+							   dw_val=2;
+							 }
+						}else
+						{
+						  openflag=0;//关闭
+						}
 				}else{   //手动模式
 				
 				}
@@ -674,22 +524,29 @@ int main(void)
 								}else{
 								  warning_cnt&=~0x04;
 								}
-							
-//							if((warning_cnt&0x01)==0x01) //坐姿异常
-//							{
-//							  YP1=0;delay_us(10);YP2=1;delay_us(10);YP3=1;delay_us(10);
-//							}
-//							else if((warning_cnt&0x02)==0x02)//闹钟
-//							{
-//							  YP1=1;delay_us(10);YP2=0;delay_us(10);YP3=1;delay_us(10);
-//							} 
-//							else if((warning_cnt&0x04)==0x04)//学习时间过长
-//							{
-//							  YP1=1;delay_us(10);YP2=1;delay_us(10);YP3=0;delay_us(10);
-//							}
-//							else{
-//							 YP1=1;YP2=1;YP3=1;delay_us(10);
-//							}
+							if(clear_flag==0)//取消提醒标志位
+							{
+							if((warning_cnt&0x01)==0x01) //坐姿异常
+							{
+							  	if(YP_BUSY==0)
+									{
+									   sendData((char*)sendbuff1,6);
+									}
+							}
+							else if((warning_cnt&0x02)==0x02)//闹钟
+							{										
+  								if(YP_BUSY==0)
+									{
+									   sendData((char*)sendbuff2,6);
+									}
+							} 
+							else if((warning_cnt&0x04)==0x04)//学习时间过长
+							{
+								if(YP_BUSY==0)
+									sendData((char*)sendbuff3,6);
+							}
+
+						}
 					}
 				
 			

部分文件因文件數量過多而無法顯示