标签搜索

目 录CONTENT

文章目录

『聚合』 PlatformIO+ESP32+Vscode+DS18B20温度传感器(一直输出-127)

沙漠渔
2024-03-15 12:15:24 / 0 评论 / 0 点赞 / 95 阅读 / 995 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-03-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

DS18B20一直输出-127 ??

一、硬件连线

二、代码

三、遇到的问题

一、硬件连线

将相应的线接到ESP wroom 32 

 二、代码

  1. 先在PlatformIO的library添加onWire库和DallasTemperature
  2. #include <Arduino.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define DS18B20PIN 4
    
    OneWire onWire(DS18B20PIN);
    DallasTemperature sensors(&onWire);
    void setup()
    {
      Serial.begin(115200);
      sensors.begin();
    }
    
    
    void loop()
    {
      sensors.requestTemperatures(); // Send the command to get temperatures
      float ds_num = sensors.getTempCByIndex(0);
      Serial.println(ds_num);
    }

三、遇到的问题

代码编译运行没有问题,但是在串口看到都是输出-127。

网上看了解决方案是这样说的:

  1. ESP32 的GPIOx与Dx可能不是一个口,所以定义的时候得注意下那个IO口是不是对的。
  2. 电源没有正确接入
  3. 需要外加一个上拉电阻

我遇到的是第3个。后来查看ESP32 的数据手册知道,有点GPIO是不提供上拉的。而且DS18B20的手册也有说,需要加上拉电阻。原因是这样的,IO作为输出时,自带锁存功能,也就是写1后,输出一直是1(锁存器上的值),引脚上可能被外部电路影响而不是1了。所以需要上拉。

加了上拉电阻之后,就能够输出正常的温度值了。

 

 如有见解,欢迎留言指教。


⚠ 文章源地址: https://www.cnblogs.com/loremmoqi/p/18071671.html 转载请注明出处
0
广告 广告

评论区