上次学习了使用电平和串口方式利用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
}