首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从DS18B20传感器获取温度,并使用Arduino Yun在Adafruit LEDbackpack (4x7段)上显示温度

如何从DS18B20传感器获取温度,并使用Arduino Yun在Adafruit LEDbackpack (4x7段)上显示温度
EN

Stack Overflow用户
提问于 2014-11-29 16:02:06
回答 2查看 2.1K关注 0票数 0

我目前正在尝试(几个小时)在我的Adafruit LEDBackpack上显示来自LEDBackpack的温度。但是,当我尝试在设置 (matrix.begin(0x070))中插入显示时,传感器返回的温度总是-127。

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

用例

  1. 仅限温度传感器:温度正确
  2. 只显示屏幕:屏幕按预期工作
  3. :屏幕工作并显示所期望的,但温度总是-127。

组件:

  • Adafruit LEDBackpack使用I2C,所以它连接到SCL,SDA,5v,GND
  • 温度传感器是DS18B20 (一线总线).它连接到D#2,5v,GND

代码

代码语言:javascript
复制
#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);
}

模式

EN

回答 2

Stack Overflow用户

发布于 2014-12-10 12:44:34

尝试给每个组件自己的电源(即LED - 3V和传感器- 5v)。每个引脚只能输出如此多的功率来阻止对板的损坏。LED可能从传感器中提取功率,传感器可能没有足够的功率来正确工作。

票数 0
EN

Stack Overflow用户

发布于 2016-10-20 18:34:39

你的电路图显示了在DS18B20的(+)和(-)引脚(腿)上的一个短圆圈,那是在电阻下面的短水平导线。值-127.0表示您的温度传感器也有问题.

因此,如果这是一个实际的问题(不仅仅是图表中的问题),请移除电线来修复它。此外,在安装程序()中,您可能希望在循环之前添加某种类型的检查,以确定传感器是否为A:

代码语言:javascript
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27204157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档