找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4132|回复: 2
收起左侧

六足机器人源码分享 sixfeet-robot初始

[复制链接]
ID:332915 发表于 2018-5-18 13:20 | 显示全部楼层 |阅读模式
stm32f103rc主控,具体看程序吧。这是初始程序,想要完整的私聊。

单片机源程序如下:
  1. #include "delay.h"
  2. #include "uart.h"
  3. #include "LobotServoController.h"
  4. #include "bool.h"
  5. #include "work.h"
  6. #include "lcd1602.h"
  7. #include "timer.h"
  8. #include "wave.h"
  9. #include "FreeRTOS.h"
  10. #include "task.h"
  11. #include "queue.h"

  12. //外设引脚
  13. /*
  14. 1602: -、+、-、pb15/pb14/pb13、pc0-pc7、+/-
  15. 超声波:trig pb5/echo pb6
  16. */

  17. extern u16 Distance;

  18. void vTask0_length( void *pvParameters)    //测距任务
  19. {
  20.         u8 i=0;
  21.         while(1)
  22.         {
  23.                 if(i==0)
  24.                 {
  25.                         GPIO_SetBits(GPIOB,GPIO_Pin_10); i=1;
  26.                 }
  27.                 else
  28.                 {
  29.                         GPIO_ResetBits(GPIOB,GPIO_Pin_10); i=0;
  30.                 }
  31.                 Wave_SRD_Strat();
  32.                 if(Distance>=200) Distance=200;
  33.                 //LCD1602_Show_Str(0,0,"Distance");
  34.                 //LCD1602_Show_num(0,9,Distance);
  35.     vTaskDelay(300 / portTICK_RATE_MS);
  36.         }
  37. }

  38. void vTask0_work( void *pvParameters)   //机器人动作任务
  39. {
  40.         u8 head=2;
  41.          stop();
  42.          hold();
  43.          while(1)
  44.          {
  45.                  if(Distance<=40)  //先左边再右边测距,若都小于阈值,后退
  46.                  {
  47.                          if(head==2)     
  48.                          {
  49.                                  head_left(); head=1;         
  50.                          }
  51.                          else if(head==1)
  52.                          {
  53.                                  head_right(); head=3;
  54.                          }
  55.                          else  
  56.                          {
  57.                                  turn_back(); head_centre(); head=2;
  58.                          }
  59.                  }
  60.                  else
  61.                  {
  62.                          if(head==1)
  63.                          {
  64.                                  turn_left(); head_centre(); head=2;
  65.                          }
  66.                          else if(head==2) ahead();
  67.                          else
  68.                          {
  69.                                  turn_right(); head_centre(); head=2;
  70.                          }
  71.                  }
  72.                  vTaskDelay(300 / portTICK_RATE_MS);
  73.          }        
  74. }

  75. int main(void)
  76. {
  77.          SystemInit();//系统时钟等初始化
  78.         delay_init();             //延时初始化
  79.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  80.         uartInit(9600);//串口初始化为9600
  81.         GPIO_Configuration();
  82.         LCD1602_Init();
  83.         Timer_SRD_Init(5000,7199);
  84.         Wave_SRD_Init();

  85.                   xTaskCreate(vTask0_length,"length",200,NULL,1,NULL);
  86.            xTaskCreate(vTask0_work,"work",200,NULL,2,NULL);
  87.          
  88.            vTaskStartScheduler();          //开启任务调度
  89. }

复制代码

初始化部分分享给大家,请多多指教:
sixfeet-robot初始.rar (599.4 KB, 下载次数: 29)
回复

使用道具 举报

ID:488747 发表于 2019-5-23 15:25 | 显示全部楼层
楼主使用的什么驱动板?
回复

使用道具 举报

ID:868894 发表于 2020-12-27 17:32 来自手机 | 显示全部楼层
你好 有完整代码吗 我现在在做一个类似的项目
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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