Буфер LCD

ronny99
Offline
Зарегистрирован: 10.09.2013

Добрый день, где-то читал что можно завести буфер для LCD и обновлять его, а затем выводить на экран. Поделитесь пожалуйста примером реализации...

P.S. Заранее спасибо!

vov4ik
Offline
Зарегистрирован: 10.09.2013
ronny99
Offline
Зарегистрирован: 10.09.2013

Что за бредовая ссылка? Там ссыль на скетч битая даже.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

ronny99 пишет:

Что за бредовая ссылка? Там ссыль на скетч битая даже.

я бы тебе ответил, но не понимаю, что за нах "буфер" ты собрался выводить на дисплей.

ronny99
Offline
Зарегистрирован: 10.09.2013

Клапауций 999 пишет:

я бы тебе ответил, но не понимаю, что за нах "буфер" ты собрался выводить на дисплей.

http://arduino.ru/forum/programmirovanie/pomogite-s-lcd-menyu#comment-44411

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

ronny99 пишет:

Клапауций 999 пишет:

я бы тебе ответил, но не понимаю, что за нах "буфер" ты собрался выводить на дисплей.

http://arduino.ru/forum/programmirovanie/pomogite-s-lcd-menyu#comment-44411

я понял, что kisoft рекомендует переписывать экран поверх вместо стирания, что бы избежать мерцаний - спроси у него по этой ссылке, что конкретно он имел ввиду.

ronny99
Offline
Зарегистрирован: 10.09.2013

Он написал где копать, я прочиал 2 статьи Di Halt'a про lcd, но что-то ничего про буфер не нашёл. Хотелось бы конкретно пример реализации.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

ronny99 пишет:

Он написал где копать, я прочиал 2 статьи Di Halt'a про lcd, но что-то ничего про буфер не нашёл. Хотелось бы конкретно пример реализации.

ну, подозреваю, что как-то так

/*
 PROGMEM string demo
 How to store a table of strings in program memory (flash),
 and retrieve them.

 Information summarized from:
 http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

 Setting up a table (array) of strings in program memory is slightly complicated, but
 here is a good template to follow.

 Setting up the strings is a two-step process. First define the strings.
*/

#include <avr/pgmspace.h>
const char string_0[] PROGMEM = "String 0";   // "String 0" etc are strings to store - change to suit.
const char string_1[] PROGMEM = "String 1";
const char string_2[] PROGMEM = "String 2";
const char string_3[] PROGMEM = "String 3";
const char string_4[] PROGMEM = "String 4";
const char string_5[] PROGMEM = "String 5";


// Then set up a table to refer to your strings.

const char* const string_table[] PROGMEM = {string_0, string_1, string_2, string_3, string_4, string_5};

char buffer[30];    // make sure this is large enough for the largest string it must hold

void setup()
{
  Serial.begin(9600);
  while(!Serial);
  Serial.println("OK");
}


void loop()
{
  /* Using the string table in program memory requires the use of special functions to retrieve the data.
     The strcpy_P function copies a string from program space to a string in RAM ("buffer").
     Make sure your receiving string in RAM  is large enough to hold whatever
     you are retrieving from program space. */


  for (int i = 0; i < 6; i++)
  {
    strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i]))); // Necessary casts and dereferencing, just copy.
    Serial.println(buffer);
    delay( 500 );
  }
}

http://www.arduino.cc/en/Reference/PROGMEM

вместо Serial.println(buffer);, используя lcd.print(buffer);

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

У DI HALT есть пример на ассемблере, вывод на lcd производится из буфера. Эти исходники идут вместе с платой Pinboard, ищите среди док на эту плату. Там кроме вывода на дисплей чтение данных с энкодера. Этакая простенькая ОС.
Я свой вариант пока не доделал, времени не хватает.

ronny99
Offline
Зарегистрирован: 10.09.2013

Что-бы тот, кто будет искать нашёл, оставлю пруф тут.

http://forum.easyelectronics.ru/viewtopic.php?f=4&t=22507