导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]关于AVR单片机和机器人开发技术的问题2[wangxd5429]

 *第56233篇: [求助]关于AVR单片机和机器人开发技术的问题2

  
楼 主:wangxd5429 2014年9月16日10:04
 [求助]关于AVR单片机和机器人开发技术的问题2
各位高手,小弟正在基于AVR单片机开发一款智能小车,正在开发超声波测距兼避障功能,测试发现测距的数据超出有效范围。调试发现如果屏蔽掉避障操作,只是保留超声波测距功能,则距离数据可以正确显示。同时,调试发现:计算距离是通过外部中断2实现的,用定时器计数,数值过大。请教其中的原因。主函数部分代码如下:
void main(void)
{
MCUCSR |= BIT(7);
        MCUCSR |= BIT(7); 
  
        init_devices();    
  
        while(1)
        { 
            LCD_write_string(0,0,"CCFROBOT");
            LCD_write_string(12,0,"CSB");
            LCD_write_string(0,1,"SPACE:");
            CSB_data=CSB_data*1.72*8/100;  

            if (CSB_data>  400) 
            {
                LCD_write_string(7,1,"Err!");
            }
            else
            {
                change(CSB_data,Data);   
                LCD_write_string(7,1,Data);
                LCD_write_string(12,1,"CM");
            }

            start_SB();      
   
           if ((L_BZ!=0)&&(CSB_data>  =20)&&(R_BZ!=0))
         {
             pwm(250,250);
              forward;
         }
         else if ((L_BZ!=0)&&(CSB_data  <=20)&&(R_BZ!=0))
         {
             pwm(220,250);
              back;
             delay_nms(5);
         }
         else if((L_BZ==0)&&(CSB_data  <=20)&&(R_BZ==0))
         {
             pwm(220,250);
             back;
             delay_nms(5);
         }
         else if((L_BZ==0)&&(CSB_data  <=20)&&(R_BZ!=0))
         {
             pwm(250,250);
             right;
             delay_nms(5);
         }
         else if((L_BZ==0)&&(CSB_data>  =20)&&(R_BZ!=0))
         {
             pwm(250,250);
             right;
             delay_nms(5);
         }
         else if((L_BZ==0)&&(CSB_data  <=20)&&(R_BZ!=0))
         {
             pwm(250,250);
             right;
             delay_nms(5);
         }
         else if((L_BZ!=0)&&(CSB_data>  =20)&&(R_BZ==0))
         {
             pwm(250,250);
             left;
             delay_nms(5);
         }
         else if((L_BZ!=0)&&(CSB_data  <=20)&&(R_BZ==0))
         {
             pwm(250,250);
             left;
             delay_nms(5);
         }

     delay_nms(150);
     }
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:多用途串口Slice

[下一篇主题]:dt830b数字万用表使用方法