Добрый вечер. Преследую Цель: получить температуру с датчика DS18B20 (в герметичном исполнении).
Сравнить с заданной в скетче. Если превышает заданную цифру включить встроенный светодиод.
Схема подключения датчика. Питание от USB ноутбука.
Заданная температура 25.00 градусов. И светодиод ведет себя наоборот. То есть когда температура НИЖЕ 25 градусов от светится, а когда ВЫШЕ тухнет. Объясните пожалуйста в чем моя ошибка.
Сравнить с заданной в скетче. Если превышает заданную цифру включить встроенный светодиод.
Схема подключения датчика. Питание от USB ноутбука.
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 градусов от светится, а когда ВЫШЕ тухнет. Объясните пожалуйста в чем моя ошибка.