實驗目的:在本例中,我們將利用 DS18B20模塊測定溫度。
器材:Stduino UNO / Nano; 杜邦線;數字溫度傳感器(DS18B20 )模塊
電路連接:
30DS18B20電路連接.png (120.66 KB, 下載次數: 75)
下載附件
2020-8-18 20:27 上傳
代碼展示:
#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 ℃。
30-ds18b20效果圖.png (37.13 KB, 下載次數: 86)
下載附件
2020-8-18 20:29 上傳
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
更多功能集成正在進行中~