实验目的:在本例中,我们将利用 DS18B20模块测定温度。
器材:Stduino UNO / Nano; 杜邦线;数字温度传感器(DS18B20 )模块
电路连接:
代码展示:
#include <OneWire.h>
OneWire ds(10); // 选择I/O,实例化对象
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
if ( !ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(250);
return;
}
Serial.print("ROM =");
for( i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr, HEX);
}
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();
// 利用ROM最低8位判断是否属于DS18B20系列,以及具体的种类
switch (addr[0]) {
case 0x28:
Serial.println(" Chip = DS18B20");
break;
case 0x22:
Serial.println(" Chip = DS1822");
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
//4读取温度,具体过程包括:
//4.1复位、向DS18B20发温度转换命令(0X44)
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // 开始温度转换, 并保持电源接通单总线
delay(1000);
//4.2复位、发读取存储器命令(0XBE)
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // 读取暂存器
Serial.print(" Data = ");
Serial.print(present, HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // 将暂存器里的九字节数据存储给data
data = ds.read();
Serial.print(data, HEX);
Serial.print(" ");
}
Serial.print(" CRC="); //CRC校验
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();
// 4.3对连续读出的两个字节数据进行转换。
int16_t raw = (data[1] << 8) | data[0];//由于最终结果是16位整形数据,因此被存储为“int16_t”类型
// 通过data第四字节判断保留的温度数据位数,将多余的位数置0
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // 9位, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10位, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11位, 375 ms
// 默认为12位,不需要处理,转换时间750 ms
celsius = (float)raw / 16.0; //将数据转化为实际温度,即把数据乘以0.0625
fahrenheit = celsius * 1.8 + 32.0; //摄氏度转华氏温度
//4.4串口打印
Serial.print(" Temperature = ");
Serial.print(celsius);
Serial.print(" Celsius, ");
Serial.print(fahrenheit);
Serial.println(" Fahrenheit");
}
实验效果:如串联监视器所示,现在的温度位 34.50 ℃。
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。IDE当前支持的功能有:
GDB调试
封装库下载安装
代码自动补全提示
中英文模式
UTF-8\GBK编码格式
代码快速格式化
SWD\串口程序下载&调试(已验证)
DFU程序下载方式(待验证)
USB HID程序下载方式(待验证)
maple DFU程序下载方式(待验证)
maple DFU2程序下载方式(待验证)
MassStorage程序下载方式(待验证)
更多功能细节请点击图片上水印显示的网址进行了解
已经支持的芯片&板型列表:
Stduino UNO&Nano
Nucleo 144 boards
Nucleo 64 boards
Nucleo 32 boards
Discovery boards
Eval boards
STM32MP1 series coprocessor boards
Generic STM32F0 boards
Generic STM32F1 boards
Generic STM32F3 boards
Generic STM32F4 boards
Generic STM32H7 boards
Generic STM32L0 boards
3D printer boards
LoRa boards
Electronic Speed Controller boards
Generic flight controllers
Garatronics boards
Midatronics boards
更多功能集成正在进行中~