• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32 + winstar 1602 + кириллица

ieremeev03

New member
Всем привет! Есть у кого то положительный опыт использования esp32 и дисплея формата 1602 с русскими символами? Дисплей подключен через PCF8574T по i2c.

Бьюсь над проблемой уже который день. Использую Arduino IDE и стандартную библиотеку LiquidCrystal_I2C. Суть проблемы в том, что когда я в лупе вывожу текст на экран, то в какой то момент, он выводится иероглифами (как на фото)

С текстом написанным английскими символами проблем нет, работает корректно. Но как только появляются русские символы, то начинаются лаги. Сам дисплей поддерживает русские символы в своей таблице символов.

Прикладываю три фото:

1 фото - Вывод первого экрана
5 сек задержка
2 фото - вывод второго экрана
5 сек задержка
3 фото - видно что начались глюки вместо вывода первого экрана


Вот кусок простейшего кода:

Код:
#define I2C_DISPLAY_ADR 0x27
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

int lines = 2;
int chars = 16;


LiquidCrystal_I2C lcd(I2C_DISPLAY_ADR, chars, lines);
int coin = 15;
int temp = 15;
float liters = 4.6;
float price = 3.0;


void setup() {
  Serial.begin(115200);
  lcd.begin();                     
  lcd.backlight();

}

void loop() {
  String msg;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("\xA8\xB8\xBF\xC4""e""\xB3""a""\xC7");

  lcd.setCursor(0,1);
  lcd.print("t ""\xB3""o""\xE3\xC3");

  delay(5000);
  
  coin = random(1, 60);

  static char outstr[15];

  dtostrf(coin,7, 1, outstr);
  lcd.setCursor(0,0);
  lcd.print("\xA0""a""\xBB""a""\xBD""c:");
  lcd.print(outstr);
  lcd.print("p");

  float L = (coin)/price;
  dtostrf(L,5, 1, outstr);

  lcd.setCursor(0,1);
  lcd.print("\xE0""oc""\xBF""y""\xBE\xBD""o:");
  lcd.print(outstr);
  lcd.print("\xBB");

 
  delay(5000);
 

}
 

Вложения

Сверху Снизу