zoukankan      html  css  js  c++  java
  • [笔记]Arduino平台使用US100超声波测距模块的串口模式测距实验

    上次学习了使用电平方式利用US-100超声波测距模块来测距,现在再学习一种使用串口方式测距的方法。

    注意 Trig连接数字Pin1,Echo连接数字Pin0,这两个Pin是Arduino的串口输出/输入口。

    根据文档“US-100超声波测距模块在Arduino平台上的使用说明”的说法,“在串口模式下,通过Trig/TX 管脚输入0X55(波特率9600),US-100 便会通过Echo/RX管脚输出两字节的距离值,第一个字节是距离的高8 位(HDate),第二个字节为距离的低8 位(LData),单位为毫米。即距离值为 (HData*256 +LData)mm。”

    /* ----------------------------------------
    * 超声波测距模块US-100串口方式测距
    * 选择串口方式需要插上模块背面的跳线
    * US-100的探头面向自己时,从左到右Pin脚依次为:
    * VCC / Trig(Tx) / Echo(Rx) / GND / GND
    * 两个GND只需要一个接地即可
    * Trig 接1脚,Echo接0脚
    * -----------------------------------------
    */

    void setup(){
    // 将Arduino 的RX 与TX(Digital IO 0 和1)分别于US-100 的Echo/Rx 和Trig/Tx相连
    // 确保连接前已经插上跳线,使US-100 处于串口模式
    Serial.begin(9600); // 设置波特率为 9600bps.
    }

    void loop(){
    unsigned int lenHigh = 0; // 高位
    unsigned int lenLow = 0; // 低位
    unsigned int dist_mm = 0; // 距离

    Serial.flush(); // 清空串口接收缓冲区
    Serial.write(0x55); // 发送0x55,触发US-100 开始测距
    delay(500); // 延时500 毫秒

    // 当串口接收缓冲区中数据大于2字节
    if(Serial.available() >= 2){
    lenHigh = Serial.read(); // 距离的高字节
    lenLow = Serial.read(); // 距离的低字节
    dist_mm = lenHigh*256 + lenLow; // 计算距离值

    // 有效的测距的结果在1mm 到 10m 之间
    if((dist_mm > 1) && (dist_mm < 10000))
    {
    Serial.print("Distance is: ");// 输出结果至串口监视器
    Serial.print(dist_mm, DEC);
    Serial.println("mm");
    }
    }

    delay(500); // 等待500ms
    }

    注意下载程序之前,因为复用了串口,所以要先将超声波模块与Arduino板断开,否则下载会失败。

  • 相关阅读:
    非常好的一个CentOS 6.2 apache 2.4.2 编译教程
    通过wifi 连接 adb 到 手机
    gradlew 的https代理设定
    ubuntu 安装 firefox 的 jre plugin
    如何在pycharm中使用配置好的virtualenv环境
    git clone了整个远程仓库分支
    centos7 mysql允许远程连接设置
    JPA hibernate spring repository pgsql java 工程(二):sql文件导入数据,测试数据
    hibernate 多对多 懒加载问题
    spring data jpa 利用@Query进行查询
  • 原文地址:https://www.cnblogs.com/journeyonmyway/p/2323115.html
Copyright © 2011-2022 走看看