ESP8266 сравнение температуры c DS18B20

Haaans

✩✩✩✩✩✩✩
27 Сен 2024
1
0
Добрый вечер. Преследую Цель: получить температуру с датчика DS18B20 (в герметичном исполнении).
Сравнить с заданной в скетче. Если превышает заданную цифру включить встроенный светодиод.
Схема подключения датчика. Питание от USB ноутбука.
схема подключения.JPG
C++:
#include <GyverDS18.h>
GyverDS18Single ds(13);                          // пин
#include "GyverOLED.h"                           //либа для экрана
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;  //Параметры дисплея

//===ТЕМПЕРАТУРА===
float tempNado = 25.00;  //Заданная температура
float tempC;            //Переменная для записи в нее значения температуры
//===ТАЙМЕР===
uint32_t preMillis = 0;       //начало отработки таймера
uint32_t myInterval = 15000;  //пауза в таймере

const int fanPin = D4;    //Пин светодиода
bool ledStatus = false;   //Изначальное положение диода ВЫКЛ


void setup() {
  Serial.begin(115200);  //старт СОМ порта
  oled.init();           //инициализация дисплея
  if (ds.getConversionTime() <= myInterval) {
    Serial.print("Small Request Time");
  }
  pinMode(fanPin,OUTPUT);
  zaprosTemp();
}

void loop() {
  uint32_t curMillis = millis();  //текущий таймер
  if (curMillis - preMillis >= myInterval) {
    preMillis = curMillis;
    zaprosTemp();
  }
  compareTempC();
}

void zaprosTemp() {     //Фун-ия для запроса температуры с датчика
  if (ds.readTemp()) {
    Serial.print("temp: ");
    Serial.println(ds.getTemp());


  } else {
    Serial.println("read error");
  }

  // запрос
  if (!ds.requestTemp()) {
    Serial.println("request error");
  }
  tempC = ds.getTemp();
  showTemp();
}

void showTemp() {       //Фун-ия вывода на экран тем-ры с подписью вода
  oled.clear();
  oled.home();
  oled.autoPrintln(true);
  oled.setScale(2);
  oled.print("T");
  oled.setCursor(13, 1);
  oled.setScale(1);
  oled.print("воды");
  oled.setCursor(40, 0);
  oled.setScale(2);
  oled.print(tempC);
  oled.print("C");
  oled.update();
}

void compareTempC() {     //Сравнение температуры с заданым значением
if (tempC >= tempNado) {
    ledStatus = true;
  }
  else {
    ledStatus = false;
  }
digitalWrite(fanPin, ledStatus);

}

Заданная температура 25.00 градусов. И светодиод ведет себя наоборот. То есть когда температура НИЖЕ 25 градусов от светится, а когда ВЫШЕ тухнет. Объясните пожалуйста в чем моя ошибка.
 

poty

★★★★★★✩
19 Фев 2020
3,179
928
@Haaans, круто, конечно, представлять схему включения датчика, а спрашивать про светодиод.
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
426
127
@Haaans,
Возможно на вашей плате светодиод включается низким уровнем, т.е. когда false, а не высоким (когда true).