``# HC-SRO4 超声波测距
VCC 是HC-SR04超声波距离传感器的电源,我们连接了Arduino上的5V引脚。

Trig (Trigger) 引脚用于触发超声波脉冲。(A0)

Echo 回声当接收到反射信号时,引脚产生一个脉冲。脉冲的长度与检测发射信号所需的时间成正比。(A1)

GND 应该连接到Arduino的地。

int TrgPin = A0;
int EcoPin = A1;
float dist;
void setup()
{
Serial.begin(9600);
//设置TrgPin为输出状态
pinMode(TrgPin, OUTPUT);
// 设置EcoPin为输入状态
pinMode(EcoPin, INPUT);
}
void loop()
{digitalWrite(TrgPin, LOW);
delayMicroseconds(8);
digitalWrite(TrgPin, HIGH);
// 维持10毫秒高电平用来产生一个脉冲
delayMicroseconds(10);
digitalWrite(TrgPin, LOW);
// 读取脉冲的宽度并换算成距离
dist = pulseIn(EcoPin, HIGH) / 58.00;
Serial.print("Distance:");
Serial.print(dist);
Serial.println("cm");
delay(300);
}

PULSEIN

读引脚的脉冲信号, 被读取的脉冲信号可以是 HIGH 或 LOW. 例如我们要检测HIGH脉冲信号, Arduino将在引脚变为高电平时开始计时, 当引脚变为低电平时停止记时,并返回脉冲持续时长(时间单位:微秒)。如果在超时时间内没有读到脉冲信号的话, 将返回0.

根据经验发现,pulseIn()函数在检测脉冲间隔过短的信号时会产生错误。Arduino可检测的脉冲间隔时间范围是10微秒到3分钟。请留意假如调用pulseIn()函数时读取信号的引脚上已经为高电平,此时Arduino将等待该引脚变为低电平以后再开始检测脉冲信号。另外只有Arduino的中断是开启时,才能使用pulseIn()。

先了解arduino的功能

找到超声波接口

了解LCD1602显示屏

LCD1602

是一种工业字符型液晶,能够同时显示16x02即32个字符。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。

转接板

SDA----数据线 SCL-----控制线

是SCL\SDA是I2C总线的信号线.

SDA是双向数据线,SCL是时钟线SCL.在I2C 总线上传送数据,首先送最高位,由主机发出启动信号

SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据.

数据传送完毕,由主机发出停止信号,SDA在SCL 高电平期间由低电平跳变为高电平.
I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

// include the library code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>LiquidCrystal_I2C lcd(0x27,16,2)#define TRIGGER_PIN  2  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     3  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 400 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.void setup() {Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.lcd.init(); lcd.backlight();
}void loop() {delay(100);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).Serial.print("Ping: ");Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)Serial.println("cm");lcd.setCursor(0, 0);lcd.print("Distance:");lcd.setCursor(0, 1);lcd.print("             ");lcd.setCursor(9, 1);lcd.print(uS / US_ROUNDTRIP_CM);lcd.setCursor(12, 1);lcd.print("cm");
}

显示屏

 */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2);  //配置LCD地址及行列void setup()
{lcd.init(); //初始化LCDlcd.backlight(); //打开背光
}void loop()
{lcd.setCursor(0,0);//设置显示位置lcd.print("  HELLO WORLD!");//显示字符数据lcd.setCursor(0,1);//设置显示位置lcd.print("ARDUINO.NXEZ.COM");//显示字符数据
}

尝试使用带有转接板的LCD1602显示超声波测距的数据

#include <LiquidCrystal_I2C.h>#define LM35 A0
#define Trig 2 //引脚Tring 连接 IO D8
#define Echo 3 //引脚Echo 连接 IO D9float cm; //距离变量LiquidCrystal_I2C lcd(0x27,16,2);      //构造一个LiquidCrystal的类成员。使用数字IO ,12,11,5,4,3,2int val = 0;        //存放AD变量值
float temp = 0;     //存放温度值的10倍void setup()
{lcd.init();lcd.backlight(); lcd.print("Welcome to use!");   //液晶显示Welcome to use!delay(1000);        //延时1000mslcd.clear();        //液晶清屏pinMode(Trig, OUTPUT);pinMode(Echo, INPUT);
}void loop()
{//给Trig发送一个低高低的短时间脉冲,触发测距digitalWrite(Trig, LOW); //给Trig发送一个低电平delayMicroseconds(2);    //等待 2微妙digitalWrite(Trig,HIGH); //给Trig发送一个高电平delayMicroseconds(10);    //等待 10微妙digitalWrite(Trig, LOW); //给Trig发送一个低电平temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,//pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时//返回脉冲的长度//声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000//因为发送到接收,实际是相同距离走了2回,所以要除以2//距离(厘米)  =  (回波时间 * (34 / 1000)) / 2//简化后的计算公式为 (回波时间 * 17)/ 1000cm = (temp * 17 )/1000; //把回波时间换算成cmlcd.setCursor(0,0);       //设置液晶开始显示的指针位置lcd.print("Now Distance:"); //液晶显示“LM35 temp =”lcd.setCursor(0,1);       //设置液晶开始显示的指针位置,在下一行显示lcd.print(cm);  //液晶显示距离delay(1000);              //延时1000ms
}

基于arduino超声波测距学习相关推荐

  1. 基于单片机超声波测距

    预期目标: 1.超声波模块测定发送源至障碍物的距离 2.数码显示管显示发送源到障碍物的距离 3.通过按键设定报警距离,当障碍物在一定超声范围内,蜂鸣器报警 硬件实物图及演示: 使用 HC6800-MS ...

  2. 基于cc2530超声波测距报警系统

    基于cc2530超声波测距报警系统 1. 关于超声波传感器 简介:超声波传感器是将超声波信号转换成其他能量信号的传感器.超声波是振动频率高于20kHz的机械波超声波测距主要应用于一些工业现场的位置监控 ...

  3. 基于单片机的TLC稳压电源系统设计-基于单片机大脑运算能力智力测试仪-基于单片机超声波测距系统仿真设计(报告 PCB 原理图)-基于单片机超高精度电参数测试设计-基于单片机变电站变压器运行参数监测仿真

    1316基于单片机的TLC稳压电源系统设计-毕设课设仿真资料 三极管射极电压是稳压电源的输出电压,可以接用电器或负载,这个电压值通过TLC549(A/D,同TLC548)数据转换后,送往单片机处理并显 ...

  4. 【在线仿真】Arduino 超声波测距+LCD1602显示

    [在线仿真]Arduino 超声波测距+LCD1602显示 程序代码 /*LiquidCrystal Library - Hello WorldThis sketch prints "Hel ...

  5. Arduino超声波测距模块控制蜂鸣器

    Arduino超声波测距模块控制蜂鸣器 超声波传感器 蜂鸣器 电路连接.接线 源码 超声波传感器 超声波传感器是利用超声波的特性研制而成的传感器.超声波是一种振动频 率高于声波的机械波,由换能晶片在电 ...

  6. arduino 超声波测距原理_超声波测距灯

    介绍硬件准备 本篇文章专门介绍用Arduino制作超声波测距灯,需要的材料是: 1. Arduino开发板 2. HC-SR04超声波模块 3. LED灯 4. 杜邦线若干 注意事项   之所以要写这 ...

  7. 基于arduino的ESP32 学习笔记(一) 基于ESP32的智能花盆

    前言 本文的目的是为了给将要制作的ESP32手环做技术储备 准备学习下ESP32,还有嵌入式GUI框架LVGL,通过做几个小项目练手是不错的选择,最终目标是做一个ESP32的手环 做一个ESP32手环 ...

  8. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)

    这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...

  9. Arduino 超声波测距 LCD1602A

    arduino 实现超声波测距 涉及模块:四线超声波测距模块,LCD1602A LCD1602连接 实验代码: #include <LiquidCrystal.h> LiquidCryst ...

最新文章

  1. h3c服务器安装linux,H3C服务器安装Ubuntu操作系统
  2. 实现物体绕不同轴旋转,并可以外部调用的函数
  3. 计算机控制系统开卷试卷,13自动化计算机控制技术考试A卷
  4. 在C++中可以用3种方法访问一个字符串
  5. P3242 [HNOI2015] 接水果(整体二分、扫描线、dfs序)
  6. coreboot学习10:coreboot第一阶段学习小结
  7. 在过去的12个月(2016)里,你用到的最多的算法或方法是什么?
  8. 【Android】两种动画介绍(Tween动画、Frame动画)
  9. GO语言学习之路26
  10. 50款PS完美汉化插件一键安装,win+mac
  11. 计算机无法连接到wifi但手机可以使用,电脑连不上wifi但是手机可以连得上怎么解决...
  12. PHP 图片合成、仿微信群头像
  13. 无秘app android2.2.3.5能用么,关于“无秘”APP的竞品分析
  14. Rate Limiting Algorithms (限流算法)
  15. 唯品会的服务化[转]
  16. 利用mybatis拦截器注解处理sql
  17. ng 无法加载文件 C:\Users\hl\AppData\Roaming\npm\ng.ps1 解决方法
  18. linux进程与服务管理,linux基础之进程管理与服务
  19. 马斯克宣布特斯拉车主可以免费试用Autopilot
  20. [BOI2003]团伙

热门文章

  1. Python可视化库matplotlib.pyplot里contour与contourf的区别
  2. “我数学太烂,但高考136分!”刷完上万道题后,我找到2个月多考58分的捷径…...
  3. AIR - 网页系统回到桌面应用
  4. Oracle 数据库
  5. 小程序使用vant中的步骤条 vant-steps
  6. TCP三次握手和四次挥手学习
  7. opencv-python读取摄像头视频流保存为视频
  8. redis——从零开始
  9. 太香了!推荐6个Python数据分析神器!!
  10. 【dva】dva使用与实现(四)