Вывод температуры на Oled дисплей

lihoj
Offline
Зарегистрирован: 18.12.2017

Добрый день! Подскажите пожалуйста! Есть скетч работы Ардуино Уно, Олед 0,96 дисплей, датчик температуры DS18B20. При включении дисплей показал температуру и на этом остановился показ, тоесть, температура меняется а на дисплее все та же. После перезагрузки дисплей показывает температуру правильно, но она не изменяется! Я так понимаю что должен быть циклический вывод, но как прописать не соображу!

// DS18B20 Read to 128x64 OLED Display

// Include the OneWire library
#include <OneWire.h>

// Include the Dallas Temperature library
#include <DallasTemperature.h>

// Setup the OneWire bus on Pin 2
OneWire bus(10);

// Setup DallasTemperature to work on the OneWire bus
DallasTemperature sensors(&bus);

// Include the U8glib Library
#include <U8glib.h>

// Configure the OLED Screen (I2C)
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST);

float temperature;
char temperatureString[6] = "-";

void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_fur11);
u8g.drawStr( 0, 22, "Temp:");
u8g.setFont(u8g_font_fub25);
u8g.drawStr( 0, 54, temperatureString);
u8g.drawStr( 100, 54, "C");
}

void setup() {
// Start the sensors
sensors.begin();
}

void loop() {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );

// Update the sensor readings
sensors.requestTemperatures();

// Read Temperature
temperature = sensors.getTempCByIndex(0);
dtostrf(temperature, 2, 2, temperatureString);

// Delay for 2 seconds between readings
delay(5000);
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

43ю строчку целиком после 53й поставь

lihoj
Offline
Зарегистрирован: 18.12.2017

Спасибо! Вечером попробую!

lihoj
Offline
Зарегистрирован: 18.12.2017

DetSimen пишет:

43ю строчку целиком после 53й поставь

Не помогает! Эта строчка влияет на время обновления экрана, а не на обновление опроса датчика.

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Сложно что-то сказать, не изучив библиотек

b707
Offline
Зарегистрирован: 26.05.2017

Библиотеку sensors не знаю, но вообще для ds18b20 между запросом на измерение и получением температуры должно пройти минимум 0.7 секунды, а у вас они идут подряд - строки 46 и 49. Скорее всего датчик просто не успевает. Для начала вставьте после строки 46 delay(800);. Если поможет - значит дело в этом.