野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10637|回复: 5

基于stm32用nrf通信通过按键来控制舵机的转角

[复制链接]
发表于 2015-11-13 17:48:11 | 显示全部楼层 |阅读模式
请问各位大神,怎么用nrf通信通过按键来控制舵机的转角呀,nrf已经调通,舵机的驱动也OK了,而主函数只能通过复位键控制舵机转动。这应该是自动应答模式吧,要改为按键控制怎么改呀
回复

使用道具 举报

 楼主| 发表于 2015-11-13 21:24:51 | 显示全部楼层
发送主函数代码:

  1. int main(void)                  
  2. {   
  3.        
  4.         /* config the led */
  5.         LED_Init();
  6.         //LED1_ON;
  7.        
  8.        
  9.        


  10.         /*config key*/
  11.         Key_Initial ();       
  12.        
  13.        
  14.        
  15.         CLI();
  16.         SEI();
  17.        
  18.    SPI_NRF_Init();
  19.    
  20.   /* ′®¿ú13õê¼»ˉ */
  21.         USART1_Config();

  22.         printf("\r\n ÕaêÇò»¸ö NRF24L01 ÎTÏß′«êäêμÑé \r\n");
  23.            printf("\r\n ÕaêÇÎTÏß′«êä Ö÷»ú¶Ë μÄ·′à¡DÅÏ¢\r\n");
  24.         printf("\r\n   ÕyÔú¼ì2aNRFóëMCUêÇ·ñÕy3£ᬽ󡣡£¡£\r\n");

  25.          /*¼ì2aNRFÄ£¿éóëMCUμÄᬽó*/
  26.            status = NRF_Check();

  27.         /*ÅD¶Ïᬽó×′ì¬*/  
  28.    if(status == SUCCESS)
  29.          {         
  30.                         LED2_ON;//
  31.                     printf("\r\n      NRFóëMCUᬽó3é1|£¡\r\n");  
  32.          }
  33.    else          
  34.          {
  35.                                  LED3_ON;//       
  36.                 printf("\r\n  NRFóëMCUᬽó꧰ü£¬ÇëÖØD¼ì2é½óÏß¡£\r\n");
  37.          }
  38. while(1)
  39.                 {
  40.                    printf("\r\n Ö÷»ú¶Ë ½øèë×Ôó|′e·¢ËíÄ£ê½\r\n");
  41.                  NRF_TX_Mode();
  42.                         
  43.                         /*¿aê¼·¢Ëíêy¾Y*/       
  44.                 status = NRF_Tx_Dat(txbuf);          
  45.                   
  46.                   /*ÅD¶Ï·¢Ëí×′ì¬*/
  47.                   switch(status)
  48.                           {
  49.                             case MAX_RT:
  50.                                           printf("\r\n Ö÷»ú¶Ë û½óêÕμ½ó|′eDÅoÅ£¬·¢Ëí′Îêy3¬1yÏT¶¨Ö죬·¢Ëí꧰ü¡£ \r\n");
  51.                                
  52.                                  break;
  53.        
  54.                           case ERROR:
  55.                                            printf("\r\n Î′ÖaÔ-òòμ¼Ö·¢Ëí꧰ü¡£ \r\n");
  56.                                  break;
  57.        
  58.                           case TX_DS:
  59.                                           printf("\r\n Ö÷»ú¶Ë ½óêÕμ½ ′ó»ú¶Ë μÄó|′eDÅoÅ£¬·¢Ëí3é1|£¡ \r\n");       
  60.                                                         LED1_ON;
  61.                                                         Key_Test();
  62.                                                         Delay(1000);
  63.                                                         //LED2_ON;//
  64.                                                         //Delay(1000);
  65.                                  break;                                                                 
  66.                           }                                  
  67.        
  68.                  printf("\r\n Ö÷»ú¶Ë ½øèë½óêÕÄ£꽡£ \r\n");       
  69.                 NRF_RX_Mode();
  70.        
  71.                         /*μè′y½óêÕêy¾Y*/
  72.                 status = NRF_Rx_Dat(rxbuf);
  73.        
  74.                         /*ÅD¶Ï½óêÕ×′ì¬*/
  75.                         switch(status)
  76.                         {
  77.                          case RX_DR:
  78.                                  for(i=0;i<4;i++)
  79.                                 {                                       
  80.                                         printf("\r\n &#214;÷&#187;ú&#182;&#203; &#189;óê&#213;μ&#189; ′ó&#187;ú&#182;&#203; ·¢&#203;íμ&#196;êy&#190;Y&#206;a£o%d \r\n",rxbuf[i]);
  81.                                         txbuf[i] =rxbuf[i];
  82.                                 }
  83.                                   break;
  84.        
  85.                          case ERROR:
  86.                                           printf("\r\n &#214;÷&#187;ú&#182;&#203; &#189;óê&#213;3&#246;′í&#161;£   \r\n");
  87.                                   break;                 
  88.                         }
  89.                 }

  90. }
复制代码



接收部分:

  1. int main(void)
  2. {       
  3.         int k=5000000;
  4.         /* ′&#174;&#191;ú13&#245;ê&#188;&#187;ˉ */
  5.   USART1_Config();

  6.   /*SPI&#189;ó&#191;ú3&#245;ê&#188;&#187;ˉ*/   
  7.   SPI_NRF_Init();
  8.        
  9.         delay_init(72);//&#209;óê±3&#245;ê&#188;&#187;ˉ
  10.         //delay_ms();//
  11.        
  12.        
  13.         /* TIM3 PWM2¨ê&#228;3&#246;3&#245;ê&#188;&#187;ˉ£&#172;2¢ê1&#196;üTIM3 PWMê&#228;3&#246; */
  14.         TIM3_PWM_Init();
  15.         TIM2_PWM_Init();
  16.        
  17.         /* config the led */
  18.         LED_GPIO_Config();
  19.         while(k)
  20.         {
  21.         LED3_ON;
  22.                 k--;
  23.         }
  24.        
  25.         CLI();                /* 1&#216;±&#213;×ü&#214;D&#182;&#207; */  
  26.         SEI();                /* &#191;a·&#197;×ü&#214;D&#182;&#207; */
  27.        
  28.         /* exti line config */
  29.         EXTI_PC13_Config();
  30.         EXTI_PA0_Config();
  31.        
  32.         /* wait interrupt */


  33. //        printf("\r\n &#213;aê&#199;ò&#187;&#184;&#246; NRF24L01 &#206;T&#207;&#223;′&#171;ê&#228;êμ&#209;é \r\n");
  34. //  printf("\r\n &#213;aê&#199;&#206;T&#207;&#223;′&#171;ê&#228; ′ó&#187;ú&#182;&#203; μ&#196;·′à&#161;D&#197;&#207;¢\r\n");
  35. //  printf("\r\n   &#213;y&#212;ú&#188;ì2aNRFó&#235;MCUê&#199;·&#241;&#213;y3£á&#172;&#189;ó&#161;£&#161;£&#161;£\r\n");

  36.   /*&#188;ì2aNRF&#196;£&#191;éó&#235;MCUμ&#196;á&#172;&#189;ó*/
  37.   status = NRF_Check();                  
  38.   if(status == SUCCESS)         
  39.         {               
  40.                 LED2_ON;//
  41.     printf("\r\n      NRFó&#235;MCUá&#172;&#189;ó3é1|\r\n");
  42.         }
  43.   else         
  44.         {       
  45.                 LED3_ON;//
  46.                 //control2();
  47.     printf("\r\n   &#213;y&#212;ú&#188;ì2aNRFó&#235;MCUê&#199;·&#241;&#213;y3£á&#172;&#189;ó&#161;£&#161;£&#161;£\r\n");
  48.         }

  49.   while(1)
  50.   {                          
  51.     printf("\r\n ′ó&#187;ú&#182;&#203; &#189;&#248;è&#235;&#189;óê&#213;&#196;£ê&#189;\r\n");
  52.     NRF_RX_Mode();//&#189;óê&#213;&#196;£ê&#189;

  53.     /*μè′y&#189;óê&#213;êy&#190;Y*/
  54.     status = NRF_Rx_Dat(rxbuf);
  55.     /*&#197;D&#182;&#207;&#189;óê&#213;×′ì&#172;*/
  56.     if(status == RX_DR)
  57.     {
  58.                         flag=1;
  59.       for(i=0;i<4;i++)
  60.       {       
  61.         printf("\r\n ′ó&#187;ú&#182;&#203; &#189;óê&#213;μ&#189; &#214;÷&#187;ú&#182;&#203; ·¢&#203;íμ&#196;êy&#190;Y&#206;a£o%d \r\n",rxbuf[i]);
  62.                                         LED1_ON;
  63.                                 control2();
  64.   /*°&#209;&#189;óê&#213;μ&#196;êy&#190;Y+1oó·¢&#203;í&#184;&#248;&#214;÷&#187;ú*/
  65.         rxbuf[i]+=1;          
  66.         txbuf[i] = rxbuf[i];
  67.                                
  68.       }
  69.     }   
  70.     printf("\r\n ′ó&#187;ú&#182;&#203; &#189;&#248;è&#235;×&#212;ó|′e·¢&#203;í&#196;£ê&#189;\r\n");
  71.     NRF_TX_Mode();

  72.     /*2&#187;&#182;&#207;&#214;&#216;·¢£&#172;&#214;±&#214;á·¢&#203;í3é1|*/          
  73.     do
  74.     {           
  75.       status = NRF_Tx_Dat(txbuf);
  76.     }while(status == MAX_RT);
  77.         }
  78.   }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-11-13 22:15:52 | 显示全部楼层
请问你有试过用pwm脉冲控制舵机吗?
回复 支持 反对

使用道具 举报

发表于 2015-11-13 22:31:02 | 显示全部楼层
我是主机采集AD 通过旋钮也就是电位器控制从机的舵机的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-14 22:25:20 | 显示全部楼层
我是老罗 发表于 2015-11-13 22:15
请问你有试过用pwm脉冲控制舵机吗?

有试过,不过是最近才开始弄的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-14 22:27:36 | 显示全部楼层
cp123456 发表于 2015-11-13 22:31
我是主机采集AD 通过旋钮也就是电位器控制从机的舵机的

现在按键控制基本解决了,但是不知道为什么单独使用按键可以持续转动,而如果用通信方式按按键实现的话却不能
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 12:51 , Processed in 0.028430 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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