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

Тема в разделе "Arduino & Shields", создана пользователем Lihoj, 7 янв 2018.

  1. Lihoj

    Lihoj Нуб

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

    Код (C++):


    // 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);
    }

     
     
    Последнее редактирование: 7 янв 2018
  2. Yaroduino

    Yaroduino Нерд

    #include<OneWire.h>
    #include<DallasTemperature.h>
    #define ONE_WIRE_BUS 10// номер пина к которому подключен DS18B20
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    #include<OLED_I2C.h>
    OLED myOLED(8,9,8);// 8pin - SDA , 9pin - SCL
    externuint8_tRusFont[];// Русский шрифт
    externuint8_tMegaNumbers[];// Подключение больших шрифтов
    externuint8_tSmallFont[];// Базовый шрифт без поддержки русскийх символов.
    void setup()
    {
    sensors.begin();
    myOLED.begin();
    }
    void loop()
    {
    sensors.requestTemperatures();
    myOLED.clrScr();// очищаем экран
    myOLED.setFont(RusFont);// Устанавливаем русский шрифт
    myOLED.print("Ntvgthfnehf", CENTER,0);// Выводим надпись "Температура"
    myOLED.setFont(MegaNumbers);
    myOLED.print(String(sensors.getTempCByIndex(0),1), CENTER,9);// Отображение температуры
    myOLED.update();
    delay(100);
    }
    должно работать
     
  3. ostrov

    ostrov Гуру

    Сдается мне что в лупе не хватает команды вывода на экран.
     
  4. Yaroduino

    Yaroduino Нерд

    #include<OneWire.h>
    #include<DallasTemperature.h>
    #define ONE_WIRE_BUS 10// номер пина к которому подключен DS18B20
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    #include<OLED_I2C.h>
    OLED myOLED(8,9,8);// 8pin - SDA , 9pin - SCL
    externuint8_tRusFont[];// Русский шрифт
    externuint8_tMegaNumbers[];// Подключение больших шрифтов
    externuint8_tSmallFont[];// Базовый шрифт без поддержки русскийх символов.
    void setup()
    {
    sensors.begin();
    myOLED.begin();
    }
    void loop()
    {
    sensors.requestTemperatures();
    myOLED.clrScr();// очищаем экран
    myOLED.setFont(RusFont);// Устанавливаем русский шрифт
    myOLED.print("Ntvgthfnehf", CENTER,0);// Выводим надпись "Температура"
    myOLED.setFont(SmallFont);
    myOLED.print("OLed ", CENTER,55);// вывод текста
    myOLED.setFont(MegaNumbers);
    myOLED.print(String(sensors.getTempCByIndex(0),1), CENTER,9);// Отображение температуры
    myOLED.update();
    delay(100);
    }
    А так?
     
  5. ostrov

    ostrov Гуру

    Научитесь уже тэгами пользоваться, не трудно же.
     
    vasdor, Yaroduino и Tomasina нравится это.
  6. Yaroduino

    Yaroduino Нерд

    Недавно на форуме.Только сейчас разобрался
     
  7. SergeiL

    SergeiL Оракул Модератор

    Рекомендую посмотреть эту тему по поводу выгорания пикселей на OLED.
    Там есть интересное видео с лекций по органическим светодиодам от Валентины Уточниковой :).
     
  8. arssev1

    arssev1 Гик

    OLED-дисплей тут совершенно не уместен, он выгорит в таком режиме за месяц-два... Как вариант решения - вывести кнопку и отображать данные по нажатию, а секунд через 5-10 засыпать, тогда проработает, если же хотите гонять 24/7 - смотрите в сторону ЖКИ, хоть графических, хоть символьных (благо стоят они на Али как жвачка)
     
    Последнее редактирование: 13 янв 2018