arduino - 为什么我的温度探头读数如此之高?
问题描述
我们正在尝试测试一个简单的 DS18B20 温度探头的读数。读数即将到来,但它们都显示为 -127.0 度。我们不知道从这里去哪里。该引脚位于数字引脚 8 中,因为它为项目产生了更好的数字和数据点。由于引脚不足,无法将其转换为模拟。我们还使用 Arduino Nano 作为我们的动力源。
我们尝试添加一个字符串 temp,因为这是完成代码所需要的帽子,添加一个 float temp,但这似乎不适用于字符串 temp。我们已经一起尝试了其中的每一个,并且分别尝试了它们,但似乎仍然无法解决手头的问题。
#define ONE_WIRE_BUS 8 // Temperature sensor pin
#define MOSI 11 // SD
#define MISO 12
#define SCK 13
#define CS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float temp = 0.0;
String time_str = "";
String data_str = "";
//String temp = "";
int temperature = 0;
digitalWrite(HBRIDGE, LOW); // turn the LED off by making the voltage LOW
digitalWrite(13, LOW); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
buckVoltage = analogRead(BUCK_IN);
hbridgeVoltage = analogRead(HBRIDGE_IN);
negativeData = hbridgeVoltage - buckVoltage;
Serial.println(negativeData);
delay(500);
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
DateTime c = rtc.now();
String seconds = "";
if (c.second() < 10) {
seconds = '0' + c.second();
}
else {
seconds = c.second();
}
time_str = String(c.month()) + '/' + String(c.day()) + "/" +
String(c.year()) + "," +
String(c.hour()) + ":" + String(c.minute()) + ":" +
seconds;
data_str = String(temp) + ',' + String(positiveData) + ',' +
String(negativeData);
Serial.println(time_str + ',' + data_str);
f.println(time_str + ',' + data_str);
f.close();
从理论上讲,我们的结果应该读取我们正在测试的物质的温度,但结果是荒谬的,并且没有任何意义,因为它每次只读取一个负数。
解决方案
推荐阅读
- c++ - 如何使用带有 C++ 扩展名的 VSCode 中显示的参数获取调用 g++ 的命令?
- linux - 如何在 Heroku 测功机上安装 htop?
- javascript - 使用拖放时 appendChild 不起作用
- c# - Http-Server,监控路径/文件夹
- automation - 当一个应用程序想要使用 MacOS 10.14 中的 AppleEvent 与其他应用程序通信时,我们的自动化系统面临问题
- javascript - 查找给定字符串的每个字母的索引,如果字母重复则返回相同的索引
- django - 如何在 aws 上建立与 ec2 实例的安全连接
- javascript - 使用电子打包程序打包时,Firebase 无法在电子应用程序中工作
- angular - 带有来自子组件的路由的路由器出口
- python - 在 Python 中隐式检查子类的返回类型