5110 пропадает текст

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

Всем привет.

имеется ардуино уно, к нему подключены bmp280, dht11 и дисплей 5110

библиотека была найдена где то тут - поддержка кириллицы.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <DHT.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
#define DHTTYPE DHT11 
#define DHTPIN 2 
#define XPOS 0
#define YPOS 1
#define DELTAY 2
DHT dht(DHTPIN, DHTTYPE);
int tem;                         
int hem;                          
int dav;                          

Adafruit_BMP280 bme; // I2C




void setup() 
{ 

  Serial.begin(9600); 
  
  display.begin();
  // установить контраст фона экрана
  display.setContrast(60);
  display.clearDisplay();       // очистить экран
  display.setTextSize(1);    // размер шрифта
  display.setTextColor(BLACK);   // цвет
display.cp437(true);
  display.setCursor(15,15);   
display.print(utf8rus("ЁжМетеоЭкспресс "));
  display.display();

  Serial.println(F("BMP280 test"));
  
  if (!bme.begin()) {  
    Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    while (1);
  }
 dht.begin();  
  
}


void loop() 
{ 
int tem2 = dht.readTemperature();
int vlazh1 = dht.readHumidity();

  delay(100); 
  
   Serial.print("tem ");
 Serial.println(tem2);
    Serial.print("vl ");
 Serial.println(vlazh1);

   Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    tem=(bme.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bme.readPressure());
    Serial.println(" Pa");

    Serial.print("Approx altitude = ");
    Serial.print(bme.readAltitude(1022)); // this should be adjusted to your local forcase
    //   Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase
    Serial.println(" m");
    Serial.print("davl = ");
    dav=(bme.readPressure()*0.007500637554192);
    Serial.println(bme.readPressure()*0.007500637554192);
    Serial.println();



  display.setContrast(60);
  display.clearDisplay();       // очистить экран




display.setCursor(0,0); 
display.print(utf8rus("темп: "));
display.println(tem);
  

display.setCursor(0,10); 
display.print(utf8rus("темп: "));
display.println(tem2);

        
display.setCursor(0,20); 
display.print(utf8rus("влажность: "));
display.println(vlazh1);
    
display.setCursor(0,30); 
display.print(utf8rus("давление: "));
display.println(dav);

display.display();

delay(1000); 

}













/* Recode russian fonts from UTF-8 to Windows-1251 */
String utf8rus(String source)
{
  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;
}

проблема в том, что через некоторое время на экране просто пусто. в монитор при этом данные поступают. подскажите, пожалуйста, где я косякнул?

yucan
Offline
Зарегистрирован: 20.04.2015

Сам дисплей на предмет глюков был проверен?

Joiner
Offline
Зарегистрирован: 04.09.2014

У меня зависал такой дисплей, когда запускал скетч, где использовались прерывания по таймеру. Когда прерывания убрал, все нормализовалось. В Ваших библиотеках прерывания не используются?

И еще... Один из моих дисплеев отказывался нормально работать. Я его даже записал в неисправные. Но когда подключил его с правильными напряжениями и сигналами 3.3 вольта все чудесным образом наладилось. Другие дисплейчиками работают нормально и с пятивольтовыми ардуинками.

Я не даю Вам советов, просто рассказал как было у меня.

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

yucan пишет:

Сам дисплей на предмет глюков был проверен?

как его правильно проверить?

кстати вчера раза два пердергивал питание - не "заводился"...а потом "завёлся" и почти полчаса показывал.. 

у меня как и у автора ниже тоже закрадываются подозрения по питанию... хотя ардуинка подключена к 5,2В 2А

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Здесь одни изверги собрались? У этих дисплеев питание 2.8В вообще то. Вот правильное включение.