请选择 进入手机版 | 继续访问电脑版

作品展示

原创作品:uestc_ecovacs_c

系统分类: 机器人创想秀 - 技术流

作品版权:uestc_ecovacs_c 版权所有,禁止匿名转载;禁止个人使用。

uestc_ecovacs_c

2015-6-20 16:28:49

初赛得分

总分(62.24)点赞数(12)评委打分(61.6)

评委[创想秀_评委1]:1.缺乏创新和新颖性 2.智能是如何体现的?

作品亮点:

机械结构:采用目前市场上广泛应用的圆盘形和辊刷结构,采用全亚克力材料,在减少重量的同时,能够较好地保证耐碰撞能力。 硬件设计:传感器电路,驱动电路以及主控芯片均集成在内部,采用直流减速电机驱动,12V锂电池供电。 软件设计:,11

作品说明:

一、 总体构架设计
采用stm32为主控板的芯片,稳压芯片采用TPS76850,驱动芯片采用L298N,避障传感器采用hc-sr04超声波模块以及红外模块,编码器采用16线光电码盘。

若视频无法查看请点击:http://v.youku.com/v_show/id_XMTI2NjY0MDYwOA==.html?from=s1.8-1-1.2
二、 软件详解
部分程序
#include "includes.h"
/*
* 函数名:main
* 描述  : 主函数
* 输入  :无
* 输出  : 无
*/
//要写入到STM32 FLASH的字符串数组
u8 mode=0;//机器人模式
u8 key=0,coder_read_flag=0;//编码器读取标志
struct DTIME *DTime={0};
struct DIS_PARA *dis_para={0};
struct ULTRONIC *ultronic={0};
struct MPU6050 *mpu6050={0};
/*************************
函数名称:void init(void)
功能:    硬件初始化
参数 无
输出      无
*************************/
void init(void)
{     
     DTime=(struct DTIME*)malloc(sizeof(struct DTIME));
     dis_para=(struct DIS_PARA*)malloc(sizeof(struct DIS_PARA));
     ultronic=(struct ULTRONIC*)malloc(sizeof(struct ULTRONIC));
     mpu6050=(struct MPU6050*)malloc(sizeof(struct MPU6050));
         delay_init();
     NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
     para_init(DTime);//参数初始化
         key_init();
     oled_init();//液晶屏初始化
     RTC_Init(2014,11,25,22,44,0); //RTC初始化,参数为现在年月日时间
         motor_init();//电机初始化,四路PWM控制
         ir_init();//红外避障与防跌落
     ultronic_init();//捕获初始化,还未给触发信号
         encode_init();//编码初始化
}
#if MODE==APPLY
int main(void)
{
           init();//所有硬件初始化
           if(mode==TIME_MODE)//判断是否为定时模式下启动
           {
             DTIME_Read(DTime);//从FLASH中读取DTIME
         rtc_nearweek(DTime);//修改RTC闹钟计数器值为下一预定时间
       }
            else//不是待机唤醒则进入按键控制界面
            {
                 while(!mode)
                 {
                         mode=key_mode(DTime);//等待用户选择模式
                 }
            }
           ultronic_trig();//超声波信号触发
           TIM2_Timer_Init(10,72);//10US定时器
             while(1)
           {                                
                   if(DTime->Set_seconds>DTime->seconds)//时间到
                   {
            stop();//关机
          }
                   coder_read_flag=encode_read(dis_para);//编码器读取
                   if(coder_read_flag)//更新编码器距离后控制一次
                   {                                
             //show_para(ultronic,dis_para);//显示参数                        
                     road_judge(ultronic,dis_para);//判断道路,“回”字形
                     danger_happen(ultronic,dis_para);//判断是否发生危险
                     control_car(dis_para->turn_way);//控制车体
                   }
       }
}
#endif

其他作品
返回列表