Вывод температуры на Oled дисплей
- Войдите на сайт для отправки комментариев
Втр, 09/01/2018 - 11:45
Добрый день! Подскажите пожалуйста! Есть скетч работы Ардуино Уно, Олед 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); }
43ю строчку целиком после 53й поставь
Спасибо! Вечером попробую!
43ю строчку целиком после 53й поставь
Не помогает! Эта строчка влияет на время обновления экрана, а не на обновление опроса датчика.
Сложно что-то сказать, не изучив библиотек
Библиотеку sensors не знаю, но вообще для ds18b20 между запросом на измерение и получением температуры должно пройти минимум 0.7 секунды, а у вас они идут подряд - строки 46 и 49. Скорее всего датчик просто не успевает. Для начала вставьте после строки 46 delay(800);. Если поможет - значит дело в этом.