SerialDisplay и LCD Nokia 5110

Sirocco
Offline
Зарегистрирован: 28.09.2013

Хотел выводить на 5110 всё то, что пришло в Serial, по типу тестового скетча LiquidCrystal -> SerialDisplay, но не тут-то было. На экран выводятся коды символов в десятичном виде, а не сами символы.

Как исправить?

Мой код:

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup() {
  display.begin();
  display.setContrast(49);
  display.setTextSize(1);
  Serial.begin(9600);
}
 
 
void loop() 
{
  if (Serial.available()) {
    // wait a bit for the entire message to arrive
    delay(100);
    // clear the screen
    display.clearDisplay();
    // read all the available characters
    while (Serial.available() > 0) {
      // display each character to the LCD
      display.print(Serial.read());
      display.display();
    }
  }
}

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

maksim
Offline
Зарегистрирован: 12.02.2012
    display.print((char)Serial.read());

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

maksim пишет:
 display.print((char)Serial.read());

Угу! Помогло!

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup() {
  display.begin();
  display.setContrast(49);
  display.setTextSize(1);
  Serial.begin(9600);
}
 
void loop() 
{
  if (Serial.available()) {
    // wait a bit for the entire message to arrive
    delay(100);
    // clear the screen
    display.clearDisplay();
    // read all the available characters
    while (Serial.available() > 0) {
      // display each character to the LCD
      display.print((char)Serial.read());
      display.display();
    }
  }
}

zvyagaaa
Offline
Зарегистрирован: 31.05.2015

Приветствую.

Подскажите, какую библиотеку вы используете для показа русских шрифтов?

Я понимаю что от адафрут, но их много модификаций и в основном без русского шрифта. То, что я нашел - не заработало, к сожалению.

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

В чем может быть косяк? Можете поделиться полностью своей библиотекой?

Спасибо.

Если вывести, что получает ардуино в хекс виде, кодом:

display.print(Serial.read(),HEX);

то выводятся коды кодировки СР1251, т.е. вместо А - C0, вместо а - E0. Не пойму в чем проблема :)