#1 2016-09-24 15:03:21

Ми4а
Учасник
Зареєстрований: 2016-09-24
Повідомлень: 1

Проблема с выводом на экран

Здравствуйте.
Бьюсь над проблемой уже который день. Нужна Ваша помощь. А суть проблемы такова. Имеется экран на который надо вывести содержимое текстового файла, который лежит на sd карте.

#include <LiquidCrystalRus.h>
#include <SPI.h>
#include <SD.h>

#define backlight_Pin 5

File myFile;

LiquidCrystalRus lcd(11, 10, 9, 8, 7, 6);

void setup()

{

  pinMode(backlight_Pin, OUTPUT);
  lcd.begin(20, 4);
  String buffer;
  digitalWrite(backlight_Pin, HIGH);
  byte y = 0;
  Serial.begin(9600);

  pinMode(53, OUTPUT);

  if (myFile) {

    Serial.println("0000.txt:");

    // считываем все данные из файла:

    while (myFile.available()) {

      buffer = myFile.readStringUntil('\n');
      Serial.println(buffer);
      lcd.print(buffer);
      y++;
      lcd.setCursor(0, y);

    }

    // закрываем файл:

    myFile.close();
    lcd.display();

  }

}

void loop()

{

  // после setup ничего не происходит

}

Столкнулся с двумя сложностями.
На экран выводится символ конца строки из фаила 0000.txt. Что выглядит примерно как

Test texti
Теst texti

Т.е. на экран передается '\n', который отображается, как "i"

Вторая сложность, что русский текст из фаила не отображается.

Подскажите, пожалуйста, как решить эти проблемы.

Остання редакція Ми4а (2016-09-24 15:04:36)

Неактивний

#2 2016-09-24 15:19:04

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 876

Re: Проблема с выводом на экран

А В СЕРИАЛ ВЫВОДИТСЯ ?

Неактивний

#3 2016-09-24 17:22:36

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Проблема с выводом на экран

замените все что меньше 0x20 пробелом
например так

int len =  strlen (buffer);
for (int foo = 0; foo < len; foo++)
if (buffer[foo] < 0x20 ) buffer[foo] = ' ';

а индикатор вообще может не показывать русские буквы ))
успеха

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму