5110 пропадает текст
- Войдите на сайт для отправки комментариев
Ср, 25/01/2017 - 18:16
Всем привет.
имеется ардуино уно, к нему подключены 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; }
проблема в том, что через некоторое время на экране просто пусто. в монитор при этом данные поступают. подскажите, пожалуйста, где я косякнул?
Сам дисплей на предмет глюков был проверен?
У меня зависал такой дисплей, когда запускал скетч, где использовались прерывания по таймеру. Когда прерывания убрал, все нормализовалось. В Ваших библиотеках прерывания не используются?
И еще... Один из моих дисплеев отказывался нормально работать. Я его даже записал в неисправные. Но когда подключил его с правильными напряжениями и сигналами 3.3 вольта все чудесным образом наладилось. Другие дисплейчиками работают нормально и с пятивольтовыми ардуинками.
Я не даю Вам советов, просто рассказал как было у меня.
Сам дисплей на предмет глюков был проверен?
как его правильно проверить?
кстати вчера раза два пердергивал питание - не "заводился"...а потом "завёлся" и почти полчаса показывал..
у меня как и у автора ниже тоже закрадываются подозрения по питанию... хотя ардуинка подключена к 5,2В 2А
Здесь одни изверги собрались? У этих дисплеев питание 2.8В вообще то. Вот правильное включение.