Arduino温度传感器负温度
测量负温度时,led输出上没有显示正确的值。我看到类似4983的东西。我需要关于代码的建议 我使用arduino uno。 senzor的类型:DS18B20 代码:Arduino温度传感器负温度,arduino,sensors,temperature,Arduino,Sensors,Temperature,测量负温度时,led输出上没有显示正确的值。我看到类似4983的东西。我需要关于代码的建议 我使用arduino uno。 senzor的类型:DS18B20 代码: #包括 #包括 #包括 #包括 #定义OLED_MOSI 9 #定义OLED_CLK 10 #定义OLED_DC 11 #定义OLED_CS 12 #定义OLED_重置13 Adafruit_SSD1306显示器(OLED_MOSI、OLED_CLK、OLED_DC、OLED_复位、OLED_CS); #定义NUMF10 #定义X
#包括
#包括
#包括
#包括
#定义OLED_MOSI 9
#定义OLED_CLK 10
#定义OLED_DC 11
#定义OLED_CS 12
#定义OLED_重置13
Adafruit_SSD1306显示器(OLED_MOSI、OLED_CLK、OLED_DC、OLED_复位、OLED_CS);
#定义NUMF10
#定义XPOS 0
#定义YPO 1
#定义三角洲2
#定义LOGO16\u GLCD\u高度16
#定义LOGO16\u GLCD\u宽度16
静态常量无符号字符程序logo16\u glcd\u bmp[]=
{B00000000,B11000000,
B00000001,B11000000,
B00000001,B11000000,
B00000011,B11100000,
B11110011、B11100000、,
B11111110,B11111000,
B01111110,B11111111,
B001100111、B10011111、,
B00011111、B11111100、,
B0000110B01110000,
B00011011,B10100000,
B0011111,B11100000,
B0011111,B11110000,
B01111100,B11110000,
B01110000,B01110000,
B00000000,B0011000};
#如果(SSD1306_LCDHEIGHT!=64)
#错误(“错误,Adafruitssd1306.h!”);
#恩迪夫
#包括
单线ds(2);
无效设置(){
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
display.clearsdisplay();
}
空循环(){
字节i;
存在字节=0;
字节数据[12];
字节地址[8];
如果(!ds.search(addr)){
Serial.print(“\n”);
ds.reset_search();
返回;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
延迟(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE);
对于(i=0;i首先,改变:
Data [i] = ds.read ();
到
然后看看你得到了什么样的结果
我不确定之后的计算结果。我使用以下代码将DS18B20的九个十六进制值转换为温度:
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) { // negative
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
Whole = Tc_100 / 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
if (SignBit) { // If its negative
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if (Fract < 10) {
Serial.print("0");
}
Serial.print(Fract);
Serial.print("\n");
int高字节、低字节、踏板、符号位、Tc_100、整体、分形;
低字节=数据[0];
HighByte=数据[1];
TReading=(HighByte欢迎使用Stack Overflow!您可能希望签出。正确设置问题的格式将大大有助于获得所需的答案。
data[i] = ds.read();
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) { // negative
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
Whole = Tc_100 / 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
if (SignBit) { // If its negative
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if (Fract < 10) {
Serial.print("0");
}
Serial.print(Fract);
Serial.print("\n");