現在、(数時間) Adafruit LEDBackpack で DS18B20 から取得した温度を表示しようとしています。しかし、セットアップ( matrix.begin(0x070) ) でディスプレイを初期化しようとすると、センサーから返される温度は常に-127です。
私が間違っていたことを理解するのを手伝ってもらえますか?
ユースケース
- 温度センサーのみ: 温度は正しい
- 画面のみ: 画面は期待どおりに機能します
- 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);
}