SSD1306 дисплей

Тема в разделе "Arduino & Shields", создана пользователем AlexARDUINOUNO, 24 май 2019.

  1. AlexARDUINOUNO

    AlexARDUINOUNO Нерд

    Помогите! на дисплей я хотел вывести температуру но дисплей показывал темп и моргала надпись NANc.
    Код (C++):
    #include <Wire.h>

    #include <Adafruit_SSD1306.h>

    #include <Adafruit_GFX.h>

    #include "DHT_NEW.h"
    DHT _dht1;

    bool EN_163932959_1;
    String in_163932959_1;
    byte size_163932959_1;
    byte X_163932959_1;
    byte Y_163932959_1;
    bool invert_163932959_1;
    Adafruit_SSD1306 display(4);
    unsigned long _dht1LRT = 0UL;
    unsigned long _dht1Tti = 0UL;
    void setup()
    {
    _dht1.setup(2);
    _dht1LRT = millis();
    _dht1Tti = millis();


    display.begin(SSD1306_SWITCHCAPVCC);
    display.display();
    display.clearDisplay();
    }
    void loop()
    {





    display.clearDisplay();      

    if(_isTimer(_dht1Tti, 1000)) {
    if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
    _dht1.readSensor();
    _dht1LRT = millis();
    _dht1Tti = millis();
    }
    }
    EN_163932959_1 = 1;
    in_163932959_1 = ((String("t")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String("c")));
    size_163932959_1 = 2;
    X_163932959_1 = 0;
    Y_163932959_1 = 0;
    invert_163932959_1 = 1;

    if (EN_163932959_1==1)
    {
    if (invert_163932959_1==1)
        {display.setTextColor(WHITE, BLACK);
    }
        else
         {display.setTextColor(BLACK, WHITE);
    }
    display.setCursor(X_163932959_1,Y_163932959_1);
    display.setTextSize(size_163932959_1);
    display.print(utf8rus(in_163932959_1));
    }

    display.display();




    }
    String  _floatToStringWitRaz(float value, int raz)
    {
      return String(value,raz);
    }
    bool _isTimer(unsigned long startTime, unsigned long period )
      {
      unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
      }
    String utf8rus(String source)
    {
    /* Recode russian fonts from UTF-8 to Windows-1251 */
      int i,k;
      String target;
      unsigned char n;
      char m[2] = { '0', '\0' };

      k = source.length(); i = 0;

      while (i < k) {
        n = source[i]; i++;

        if (n >= 0xC0) {
          switch (n) {
            case 0xD0: {
              n = source[i]; i++;
              if (n == 0x81) { n = 0xA8; break; }
              if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
              break;
            }
            case 0xD1: {
              n = source[i]; i++;
              if (n == 0x91) { n = 0xB8; break; }
              if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
              break;
            }
          }
        }
        m[0] = n; target = target + String(m);
      }
    return target;

    }
     
  2. Daniil

    Daniil Гуру

    2ое слагаемое не число
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Первое - тоже. там везде строки.

    А вот _dht1.temperature скорее всего точно не число, но я не знаю, что там за dht_new, если ТС её выложит - посмотрю.

    А вообще, нафига тащить сюда флпроговские какашки?
     
    Daniil нравится это.
  4. Daniil

    Daniil Гуру

    Я это и имел в виду.
    Про строки, мне показалось, очевидным.