0

現在、(数時間) Adafruit LEDBackpack で DS18B20 から取得した温度を表示しようとしています。しかし、セットアップ( matrix.begin(0x070) ) でディスプレイを初期化しようとすると、センサーから返される温度は常に-127です。

私が間違っていたことを理解するのを手伝ってもらえますか?

ユースケース

  1. 温度センサーのみ: 温度は正しい
  2. 画面のみ: 画面は期待どおりに機能します
  3. Both : 画面は機能し、予想される温度が表示されますが、返される温度は常に -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 に答える