野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6480|回复: 1

【转】麒麟板V2.0--网页应用控制LED

[复制链接]
发表于 2017-7-7 10:17:54 | 显示全部楼层 |阅读模式
本文实现功能,利用OneNET应用网页控件控制麒麟座LED。以及一些其他的东西。
首先感谢之前的网友提供了综合程序,我只是在各位的基础上增加了一些东西~

本文献给那些:想利用网页控制麒麟板的小伙伴,生成应用将数据流关联起来,然后再讲指令格式和我程序中的命名方式即可。
程序我也会附上去,我还将附上我的应用链接!!!
程序还有很多不足,欢迎来撕~

等我有空了,我再来一版FreeRTOS的。立帖为证~

应用链接:
http://open.iot.10086.cn/appview/p/f632ad83b52343d162954d5e244b7f7b
-------------------------------------------正事儿-----------------------------------------------------


增加了一个小任务,用于控制LED,这个小任务里面有两个功能:a、打开一个呼吸灯;b、用占空比去控制LED灯
1、 任务代码段
  • void PWMLED_Task(void *pdata)
  • {
  •         int i;
  •         while(1)
  •         {
  •                 if(PwmStatus)//this is the flag for PwmLED Switch
  •                 {
  •                         UsartPrintf(USART1, "WM-LED ON\r\n\r\n");
  •                         for(i=100; i>50; i--)
  •                         {
  •                                 bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_7, TIM8, 2,10000, i*100);
  •                                 OSTimeDly(10);
  •                         }
  •                         for(i=50; i<=100; i++)
  •                         {
  •                                 bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_7, TIM8, 2,10000, i*100);
  •                                 OSTimeDly(10);
  •                         }
  •                 }
  •                 else
  •                 {
  •                         UsartPrintf(USART1, "WM-LED OFF\r\n\r\n");
  •                         OSTimeDly(100);
  •                 }
  •                 bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_8, TIM8, 3,10000, (10000-LED_duty*100)); //Control PWMLED Duty
  •                 OSTimeDly(800);
  •         }
  • }

复制代码
2、网页控件的设置以及指令编写(看图例)

3、串口接收程序的解析
增加判断信息,判断信息一定要与下达指令一直不然就接收不到哦
  • void OneNetApp(USART_INFO *usartInfo)
  • {
  •         unsigned short i=0;
  •         uint32_t temp=0;
  •         UsartPrintf(USART1, "usart2Info.usartCmdBuf--> %s \r\n",usart2Info.usartCmdBuf); //专用调试接收指令打印
  •         UsartPrintf(USART1, "usart2Info.usartExtBuf--> %s \r\n",usart2Info.usartExtBuf);
  •         //printf("%s/r/n",usart2Info.usartCmdBuf);
  •         if(strstr((char *)usart2Info.usartCmdBuf, "Red_Led"))
  •         {
  •                 if(usart2Info.usartExtBuf[0] == '1')    //×&yen;&Egrave;&iexcl;&sup3;&ouml;&Agrave;&acute;&frac34;&Iacute;&Ecirc;&Ccedil;&Ocirc;&Uacute;&Icirc;&raquo;&Ouml;&Atilde;1&Auml;&Ccedil;&cedil;&ouml;&micro;&Oslash;·&frac12;&sup2;&Aring;&Oacute;&ETH;&Ecirc;&yacute;&frac34;&Yacute;
  •                 {
  • //                        ledStatus.Led4Sta = LED_ON;
  • //                        Led4_Set(LED_ON);
  •                 }
  •                 else if(usart2Info.usartExtBuf[0] == '0')
  •                 {
  • //                        ledStatus.Led4Sta = LED_OFF;
  • //                        Led4_Set(LED_OFF);
  •                 }
  •                 OneNet_SendData(kTypeString);
  •         }
  •         else if(strstr((char *)usart2Info.usartCmdBuf, "Green_Led"))
  •         {
  •                 if(usart2Info.usartExtBuf[0] == '1')
  •                 {
  •                         ledStatus.Led5Sta = LED_ON;
  •                         Led5_Set(LED_ON);
  •                 }
  •                 else if(usart2Info.usartExtBuf[0] == '0')
  •                 {
  •                         ledStatus.Led5Sta = LED_OFF;
  •                         Led5_Set(LED_OFF);
  •                 }
  •                 OneNet_SendData(kTypeString);
  •         }
  •         else if(strstr((char *)usart2Info.usartCmdBuf, "Blue_Led"))
  •         {
  •                 if(usart2Info.usartExtBuf[0] == '1')
  •                 {
  •                         ledStatus.Led6Sta = LED_ON;
  •                         Led6_Set(LED_ON);
  •                 }
  •                 else if(usart2Info.usartExtBuf[0] == '0')
  •                 {
  •                         ledStatus.Led6Sta = LED_OFF;
  •                         Led6_Set(LED_OFF);
  •                 }
  •                 OneNet_SendData(kTypeString);
  •         }
  •         else if(strstr((char *)usart2Info.usartCmdBuf, "Yellow_Led"))
  •         {
  •                 if(usart2Info.usartExtBuf[0] == '1')
  •                 {
  •                         ledStatus.Led7Sta = LED_ON;
  •                         Led7_Set(LED_ON);
  •                 }
  •                 else if(usart2Info.usartExtBuf[0] == '0')
  •                 {
  •                         ledStatus.Led7Sta = LED_OFF;
  •                         Led7_Set(LED_OFF);
  •                 }
  •                 OneNet_SendData(kTypeSimpleJsonWithTime);
  •         }
  •         else if(strstr((char *)usart2Info.usartCmdBuf, "WMLED"))
  •         {
  •                 if(usart2Info.usartExtBuf[0] == '1')
  •                 {
  •                         PwmStatus = 1;
  •                 }
  •                 else if(usart2Info.usartExtBuf[0] == '0')
  •                 {
  •                         PwmStatus = 0;
  •                 }
  •                 OneNet_SendData(kTypeString);
  •         }
  •         else if(strstr((char *)usart2Info.usartCmdBuf, "LED_Duty"))
  •         {
  •                 for(i=0;i<usart2Info.usartExtLen;i++)//&frac12;&laquo;×&Ouml;·&ucirc;&acute;&reg;&Agrave;à&ETH;&Iacute;&Ouml;&micro;×&ordf;&raquo;&raquo;&sup3;&Eacute;&Ecirc;&yacute;&Ouml;&micro;&ETH;&Iacute;
  •                 {
  •                         temp =temp*10+(uint32_t)(usart2Info.usartExtBuf-'0');
  •                 }
  •                 LED_duty = temp;
  •                 temp = 0;
  •                 OneNet_SendData(kTypeString);
  •                 UsartPrintf(USART1, "LED_duty--> %d \r\n",LED_duty);
  •         }
  • }

复制代码
4、实验现象及解释

a、按钮可以控制,PWMLED的打开和关闭
b、旋钮可以控制LED灯的亮度。由于麒麟座LED的电路采用的是低电平点亮,所以控件上显示66%时,示波器上显示的是高电平34%(可以示波器也可以显示低电平的占空比,我懒得设置了)。





本主题由 lihanliangbilly 于 2016-11-13 23:34 设置高亮
EDP指令命名格式.jpg (0 Bytes, 下载次数: 1377)
下载附件
2016-9-26 19:58 上传




EDP指令格式

控件图例.jpg (0 Bytes, 下载次数: 1371)
下载附件
2016-9-26 19:55 上传




设计的控件

指令图例解释.jpg (0 Bytes, 下载次数: 1375)
下载附件
2016-9-26 20:04 上传




指令图例解释

上传信息更改.jpg (0 Bytes, 下载次数: 1377)
下载附件
2016-9-26 20:08 上传




上传信息更改

tek0000.jpg (0 Bytes, 下载次数: 1375)
下载附件
2016-9-26 20:11 上传




示波器显示

占空比百分之66.jpg (0 Bytes, 下载次数: 1375)
下载附件
2016-9-26 20:16 上传




占空比66%



回复

使用道具 举报

发表于 2017-7-7 11:23:36 | 显示全部楼层
                    
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-12 14:34 , Processed in 0.031560 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表