0

我目前正在尝试(几个小时)在我的 Adafruit LEDBackpack 上显示从 DS18B20 获得的温度。但是当我尝试在设置matrix.begin(0x070))中初始化显示时,传感器返回的温度始终为-127

你能帮我理解我做错了什么吗?

用例

  1. 只有温度传感器:温度正确
  2. 只有屏幕:屏幕按预期工作
  3. 两者:屏幕工作并显示预期但返回的温度始终为-127。

成分:

  • Adafruit LEDBackpack 使用 I2C,因此它连接到 SCL、SDA、5v、GND
  • 温度传感器是 DS18B20(1-Wire 总线)。它连接到 D#2, 5v, GND

代码

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Bridge.h>
#include <Wire.h> // Enable this line if using Arduino Uno, Mega, etc.
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

#define ONE_WIRE_BUS 2
#define TEMP_DELAY 2000 // Request temp every two seconds

Adafruit_7segment matrix = Adafruit_7segment();

unsigned long time, lastTempCheck = 0;
float temp = 0;
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);

  // Start up the library
  sensors.begin(); 
  matrix.begin(0x70); // If I comment this and do not use the matrix, the temperature is correct.
}

void loop(void)
{ 
  time = millis();

  if((time - lastTempCheck) > TEMP_DELAY){
    lastTempCheck = time;
    processTemp();
  }else { 
  matrix.print(100);
  matrix.writeDisplay();
  }
}

void processTemp(void){
  sensors.requestTemperatures(); // Send the command to get temperatures
  temp = sensors.getTempCByIndex(0);
  Serial.print("Temperature: ");
  Serial.println(temp);
}

架构

架构

4

2 回答 2

0

尝试为每个组件提供自己的电源(即 LED - 3V 和传感器 - 5v)。每个引脚只能输出这么大的功率来阻止对电路板的损坏。LED 可能正在从传感器获取电力,而传感器可能没有足够的电力正常工作。

于 2014-12-10T12:44:34.397 回答
0

您的电路图显示了 DS18B20 的 (+) 和 (-) 引脚(腿)上的短路 - 电阻下方的短水平线。值 -127.0 表示您的温度传感器也有问题。

因此,如果这是一个实际问题(不仅仅是在图表中),请移除该电线以修复它。此外,在您的 setup() 中,您可能希望在循环之前添加某种检查以确保您的传感器是 A-OK:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS    2  // Arduino pin D2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

setup()
{
    Serial.begin(115200);
    Serial.println("setup() runs ...");

    sensors.begin();
    if (sensors.getDeviceCount() < 1)
    {
        Serial.println("DS18B20 Error - No sensors found");
    }
}

// ... rest of code
于 2016-10-20T18:34:39.460 回答