小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 7538|回复: 4

超声波雷达尝鲜版,不是很准确,慢慢研究

[复制链接]
发表于 2013-4-19 20:25:00 | 显示全部楼层 |阅读模式
本帖最后由 32314001 于 2013-4-19 20:26 编辑

WiFi_Robot.zip (3.3 KB, 下载次数: 93)
QQ截图20130419200853.jpg
QQ截图20130419200828.jpg
QQ截图20130419200810.jpg

评分

参与人数 1金钱 +3 贡献 +1 收起 理由
liuviking + 3 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-4-19 20:30:57 | 显示全部楼层
#include "STC_NEW_8051.H"
#include "serialport.h"
#include <stdio.h>
#include "type.h"
#include "timer.h"
#include "steer.h"
#include "intrins.h"
#include "STDIO.H"
extern void Timer0Init();
extern void UART_send_byte(uint8 byte);
void Send_wave(void)
{
    TX=1; //  启动模块 10us以上的高电平
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   TX=0;
}
uchar Get_Distance(unsigned long S)
{
   unsigned int  time=0;
   S=0;
     Send_wave();
  TH1=0;
  TL1=0;
     while(!RX);  //当RX为零时等待
  TR1=1;       //开启计数
  while(RX);   //当RX为1计数并等待
  TR1=0;    //关闭计数
  time=TH1*256+TL1;
  TH1=0;
  TL1=0;
  S=(time*1.7)/100;     //算出来是CM  
  if(S>=250)
  {
     return (uchar)(0xff);
  }
  else
    return S;
}
void Send_Distance(void)
{
   UART_send_byte(0xFF);
   UART_send_byte(0x03);
   UART_send_byte(Steering_gear());
   UART_send_byte(Get_Distance());
   UART_send_byte(0xFF);
   Delay_Ms(50);
}

void main(void)
{
UART_init();
/* 定时器0作为舵机专用,不建议更改配置 */
Timer0Init();//舵机初始化
/* 定时器1为自由状态,用户可灵活使用 */
Timer1_Init();
Motor_Init();
    while(1)
{
     Send_Distance();  //向上位机发送超声波距离(单位 CM) ;
  • }
    }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-19 20:31:59 | 显示全部楼层
uchar Steering_gear(uint du)
{
           if(turnflag==0)
           {
               angle=angle+3;
            if(angle>=180)
            {
               turnflag=1;
               angle=180;
            }
           }
       else if(turnflag==1)
       {
           angle=angle-3;
            if(angle<=0)
            {
               turnflag=0;
               angle=0;
            }
       }

           pwm[0]=angle*10.23+461;
          
           du=angle;
           return du;
   
}

以上是部分主要代码
回复 支持 反对

使用道具 举报

发表于 2013-4-20 15:22:46 | 显示全部楼层
围观 学习一下 感谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2013-4-24 09:39:47 | 显示全部楼层
不错。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 05:21 , Processed in 1.102882 second(s), 23 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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