您的位置:首页 > 产品设计 > UI/UE

[笔记]Arduino平台使用US-100超声波测距模块的串口模式测温实验

2012-01-15 22:43 387 查看
上次学习了使用电平和串口方式利用US-100超声波测距模块来测距,其实作为带有温度补偿的模块,当然也可以测温了。
连线与串口测距方式完全相同。
根据文档“US-100超声波测距模块在Arduino平台上的使用说明”的说法,“在串口模式下,通过Trig/TX 管脚输入0X50(波特率9600),US-100 便会通过Echo/RX管脚输出一个字节的温度值(TData), 实际的温度值为TData-45。例如通过TX 发送完0X50 后,在RX 端收到0X45,则此时的温度值为 [69(0X45 的10 进制值)-45] = 24度。”

/* ----------------------------------------
* 超声波测距模块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(){
int temperature = 0;

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

//当串口接收缓冲区中数据大于1字节
if(Serial.available() >= 1){
temperature = Serial.read();        //读出US-100 返回的结果

//返回的有效值在 1 到130 之间
if((temperature > 1) && (temperature < 130)){
temperature -= 45;                //实际温度值等于返回值减45
Serial.print("Temperature is: "); //输出结果至串口监视器
Serial.print(temperature, DEC);
Serial.println(" C'");
}
}

delay(500); //等待500ms
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: