首页 > 解决方案 > 为什么我的温度探头读数如此之高?

问题描述

我们正在尝试测试一个简单的 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();

从理论上讲,我们的结果应该读取我们正在测试的物质的温度,但结果是荒谬的,并且没有任何意义,因为它每次只读取一个负数。

标签: arduino

解决方案


推荐阅读