Вывод температуры на 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 в 17:11