Arduino и PROGMEM

Dem
Offline
Зарегистрирован: 02.09.2018
Добрый вечер!
Прощу помощи у опытных юзеров!
Уже обращался с этим вопросом, получил пинок нужном направлении, однако усвоил не до конца.
Суть: Нужен проверщик ответов. Т.е. заранее прописываем правильные ответы, задаем вопросы, проверяем, и выводим на дисплей результат. Если ответ правильный - переходим к следующему. В арсенале ардуинка, LCD, мембранная клава.
Вот код:
#include <Keypad.h>
#include <LCD_1602_RUS.h>
#include <Password.h>
#include <Servo.h>
#include <avr/pgmspace.h>
#define Q_COUNT 4

Servo servo;

LCD_1602_RUS lcd(0x27, 16, 2);


const char asnwer_good[] PROGMEM = "Правильно";
const char answer_bad[] PROGMEM = "Неправильно!";
const char answers[] PROGMEM = { 'A', 'C', 'D', 'A' };// тут сидят правильные ответы

const char question01[] PROGMEM = "Первый вопрос?";
const char question02[] PROGMEM = "Второй вопрос?";
const char question03[] PROGMEM = "Третий вопрос?";
const char question04[] PROGMEM = "Четвертый вопрос?";


const char* const questions[] PROGMEM = { question01, question02, question03, question04 };

char buffer[90];
char key_answer;

const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {12, 11, 10, 9}; // тут пишем диджитал пины к которым клава коннектится к ардуинке.
byte colPins[COLS] = {8, 7, 6, 5};   //  Просто тупо слева направо первые 4 это ROWS последние 4 COLS.

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{

  servo.attach(2);
  lcd.begin();
}

void loop() {
   
  // Проходим по списку вопросов
  for (int i = 0; i < Q_COUNT; i++)
  {
    strcpy_P(buffer, (char*)pgm_read_word(&(questions[i])));
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(buffer);
    if (pgm_read_word_near(answers + i) == keypad.getKey())
    {
      strcpy_P(buffer, (char*)pgm_read_word(&(asnwer_good)));
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(buffer);
    } else {
      strcpy_P(buffer, (char*)pgm_read_word(&(answer_bad)));
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(buffer);

      // Выходим из цикла / начинаем сначала.
      break;
    }
  }

}

 

 
Суть проблеммы: не вижу свою ошибку. Вроде-бы умные люди мне показали как надо, я подправил под свои нужны, а все-равно не работает.

 

Как сделать "Проверщик ответов"?
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Для начала запишите желаемый алгоритм работы по-русски.

Dem
Offline
Зарегистрирован: 02.09.2018

Пишу: после подачи питания на ардуино на lcd (1602, подключен по i2c) пользователя встречает надпись: «Первый вопрос» в первой строке и «A B C D» во второй. Пользователь на мембранной клавиатуре (та что с цифрами 0-9, *#, и буквами A-D) выбирает, по его мнению, правильный ответ. Ответ пользотателя сверяется с записанным ранее в код ответом для первого вопроса, выводит на дисплей «ПРАВИЛЬНО» (если ответ пользователя совпадает с записанным в код ответом для первого вопроса) в первой строке и «ПРАВИЛЬНЫХ ОТВЕТОВ: 1 из 4» во второй. И переходит ко второму вопросу, какой тоже имеет варианты ответа A B C D, но только один правильный. Если пользователь даст неправильный ответ, на экран выводится «НЕ ПРАВИЛЬНО» в первой строке и «КОЛИЧЕСТВО ЖИЗНЕЙ: 4». Заранее в коде прописывается счетчик жизней. Например 5. Если дан неправильный ответ, количество жизней уменьшается на 1. Если пользователь правильно ответил на большинство вопросов и количество жизней больше нуля, после последнего вопроса па экран выводится: «ПОБЕДА» и програма завершается. Если после какого-то из ответов количество жизней становится равным 0, на экран выводится: «ПОЖАЖЕНИЕ» и програма завершается. Так-же пытаюсь все это упаковать в PROGMEM, так как вопросов планирую делать много.

Помогите, пожалуйста... Понимаю, что не вижу ошибку у себя под носом...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Dem пишет:

Пользователь на мембранной клавиатуре (та что с цифрами 0-9, *#, и буквами A-D) выбирает, по его мнению, правильный ответ.

Вообще-то подразумевался алгоритм действий программы, а не пользователя.

Не следует путать одно с другим.

Цитата:

Ответ пользотателя сверяется с записанным ранее в код ответом для первого вопроса, выводит на дисплей «ПРАВИЛЬНО» (если ответ пользователя совпадает с записанным в код ответом для первого вопроса) в первой строке и «ПРАВИЛЬНЫХ ОТВЕТОВ: 1 из 4» во второй. И переходит ко второму вопросу, какой тоже имеет варианты ответа A B C D, но только один правильный. Если пользователь даст неправильный ответ, на экран выводится «НЕ ПРАВИЛЬНО» в первой строке и «КОЛИЧЕСТВО ЖИЗНЕЙ: 4». Заранее в коде прописывается счетчик жизней. Например 5. Если дан неправильный ответ, количество жизней уменьшается на 1.

Из этого описания более или менее понятно, что делать при правильном ответе - переходить к следующему вопросу и повторять то же самое для него. Но совершенно непоенятно, что при неправильном. Ладно, уменьшили количество жижней и что дальше?

Цитата:

Если пользователь правильно ответил на большинство вопросов и количество жизней больше нуля,

А разве это независимые условия?

Цитата:

после последнего вопроса па экран выводится: «ПОБЕДА» и програма завершается. Если после какого-то из ответов количество жизней становится равным 0, на экран выводится: «ПОЖАЖЕНИЕ» и програма завершается.

"Программа завершается" - это для ПК, в случае микроконтроллеров программа не завершается никогда.

Для ПК полным высказыванием будет "программа завершается и передает управление ОС", а в случае МК никакой ОС нет и передавать управление некому.

Цитата:

Помогите, пожалуйста... Понимаю, что не вижу ошибку у себя под носом...

Программу можно написать следующим образом:

1. Записать алгоритм работы программы по-русски.

2. Перевести с русского на нужный язык программировангия.

Ваша ошибка заключается в том, что Вы слишком рано взялись за написание текста на Си - еще до того, как сумели внятно и однозначно сформулировать алгоритм по-русски (читай: раньше, чем поняли, как должен работать алгоритм).

b707
Онлайн
Зарегистрирован: 26.05.2017

добавлю к предыдущему оратору

Den - вы так и не написали, что именно в программе не работает. Все ограничилось рассуждениями о том, что вам дали пинок, но этого недостаточно и что вы "не видите ошибку у себя под носом".

Предлагаете, чтоб каждый, кто зайдет в тему - собирал вашу схему и пробовал программу "вживую". пытаясь разобраться. что же там не работает?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Вы потерялись в входящих и исходящих данных. Советую сначала сделать программу с вводом и выводом на терминал, обкатать ее, а затем добавлять клавиатуры, дисплеи и т.д. Обкатайте основной алгоритм программы, а затем занимайтесь украшательствами.

Dem
Offline
Зарегистрирован: 02.09.2018

При неправильном ответе отнимаем одну жизнь и переходим к следующему вопросу.

 

По поводу количества жизней больще нуля соласен, зависимые.

 

Программа завершается, имею ввиду что гаснет дисплей и программа больше не принимает и не отдает ничего.

Dem
Offline
Зарегистрирован: 02.09.2018

У меня не получается из Progmem достать нужную мне инфу в нужном месте программы. Вот я записываю, что загоняю во флеш память (буфер) фразу «Первый вопрос»:

const char question01[] PROGMEM = "Первый вопрос?";

А вот этим куском кода, найденным на просторах интернета, хочу из буфера достать его и вывести его на дисплей (поправьте меня, если я вкорне неправ) 

strcpy_P(buffer, (char*)pgm_read_word(&(questions[i])));
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(buffer);

 

b707
Онлайн
Зарегистрирован: 26.05.2017

а то, что вопрос хранится в массиве question01. а извлекать вы его пытаетесь из массива questions - вас не смущает?

sadman41
Offline
Зарегистрирован: 19.10.2016

Тут вроде все верно. Я pgm давно не трогал, но танцы с массивом pgm-нутых строк похоже на правильные. В массив questions помещаются указатели на массивы строк.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Dem пишет:
const char question01[] PROGMEM = "Первый вопрос?";
Самое главное . Почему вопрос написан по русски. Den Вы что валенок.

b707
Онлайн
Зарегистрирован: 26.05.2017

я бы так написал

strcpy_P(buffer, pgm_read_word_near((int)(questions+ i)));

 

Dem
Offline
Зарегистрирован: 02.09.2018

Вижу первый косяк, b707, спасибо, исправлю!)

Dem
Offline
Зарегистрирован: 02.09.2018

qwone, я человек. В моем первом сообщении указано, что я подключаю библиотеку для работы с lcd 1602 по i2c и использовать кириллицу. Я понимаю, что мои попытки научится и мои ошибки вызывают у Вас ухмылку. Будьте внимательнее. Буду признателен за комментарий по сути.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Dem пишет:

что я подключаю библиотеку для работы с lcd 1602 по i2c и использовать кириллицу. 

Ключевое тут в том, что по умолчанию скетч сохраняется в кодировке UTF-8, в том числе все строки, написанные на русском. Кодировка UTF-8 - до 6 байт на ОДИН символ, чтобы вывести её на дисплей - надо делать дополнительные телодвижения, как правило.

Попробуйте просто: пока написать латиницей тексты - что будет? Латиница в UTF-8 влезает в 1 байт на символ.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Dem пишет:
Я понимаю, что мои попытки научится и мои ошибки вызывают у Вас ухмылку. Будьте внимательнее. Буду признателен за комментарий по сути.
Я по сути и говорю. Научитесь вопрос на английском отправлять на дисплей. А после уже и руссифицировать этот скетч. Сама по себе руссификация уже серьезный порог в достижении результата. А то будет у вас как у той женщины. https://www.youtube.com/watch?v=zhvVn_7m0FM

Dem
Offline
Зарегистрирован: 02.09.2018

DIYMan, qwone, благодарю за подсказки, обязательно попробую. Если-бы не знал, что работает, не пришел бы сюда. В начале я проверил всю переферию отдельно. Дисплей работал как с русским так и с английским текстом, клава выводила нажатые кнопки на этот самый дисплей. Потом я полез в PROGMEM, так как нужно на экран вывести много текста (1602 не лучший инструмент, но его преимущество в том, что он есть). Копаясь в PROGMEM наткнулся на работу одного хорошего человека на соседнем форуме. Он так-же пихал кириллицу в PROGMEM, и на выходе получал кириллицу. Без проблем. Код стащил себе у него. Вот его работа:

http://ns1.arduino.ru/forum/programmirovanie/850-strok-dve-kolonki-tekstovye-znacheniya?page=1#comment-323382

P.S. Не знаю, можно ли тут приводить ссылки на другие форумы, ну раз qvone можно, значит, думаю не накажут.

P.P.S. Я так понимаю, что qvone тут отвечает за развлекательную часть народа. Это похвально, такие люди нужны - без них скучно. В древности даже професия такая была при царском дворе. Никак не припомню, как называлась...

b707
Онлайн
Зарегистрирован: 26.05.2017

Dem пишет:

P.S. Не знаю, можно ли тут приводить ссылки на другие форумы

ЛОЛ

это же тот же форум...

Dem
Offline
Зарегистрирован: 02.09.2018

Господа, оффтоп: почему у моих предыдущих сообщений такой гиганский шрифт? Как это поправить? И где вообще выбирается размер шрифта?

Dem
Offline
Зарегистрирован: 02.09.2018

b707, ничего не знаю, ns1 зачем приставка тогда?))

strarbit
Offline
Зарегистрирован: 12.06.2016

Вариант. Вопросы и вариант ответы сохранять в sd card flash memory. Взамен, нажимать кнопк для ответа, приложить rfid card. Для дети маленькие – это много интересно. Также от id rfid card вы имеете возможность знать, кто верно ответил. Каждый имеет персональные 4 rfid cards ответы. Возможно отказаться от LCD и применить аndroid tablet.

Dem
Offline
Зарегистрирован: 02.09.2018

Отчитываюсь, господа:

#include <Keypad.h>
#include <LCD_1602_RUS.h>
#include <Password.h>
#include <Servo.h>
#include <avr/pgmspace.h>
#define Q_COUNT 4

Servo servo;

LCD_1602_RUS lcd(0x27, 16, 2);

int lives = 0 ; //количество правильных ответов
int all = 0 ; //количество всех ответов
String question  =  "";
String correct_answer  =  ""; //тут хранится правильный ответ всегда
String current_answer  =  ""; //тут хранится текущий ответ
String variants[3]; //тут храним четыре варианта ответов
int OKK = 0;
int ERR = 0;
int CCC = 0;

const char asnwer_correct[] PROGMEM = "Правильно";
const char answer_wrong[] PROGMEM = "Неправильно!";

const char question01[] PROGMEM = "Первый вопрос:";// это выводим на lcd как первый вопрос
const char variants01[] PROGMEM = " A   B   C   D ";// это варианты ответа на первый вопрос

const char question02[] PROGMEM = "Второй вопрос:";
const char variants02[] PROGMEM = " A   B   C   D ";

const char question03[] PROGMEM = "Третий вопрос:";
const char variants03[] PROGMEM = " A   B   C   D ";

const char question04[] PROGMEM = "Четвертый вопрос:";
const char variants04[] PROGMEM = " A   B   C   D ";


const char* const questions[] PROGMEM = { question01, question02, question03, question04 };// тут сидят вопросы
const char answers[] PROGMEM = { 'A', 'C', 'D', 'A' };// тут сидят правильные ответы

char buffer[90]; // размер буфера
char key_answer; // нажатая кнопка на клаве

const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {12, 11, 10, 9}; // тут пишем диджитал пины к которым клава коннектится к ардуинке.
byte colPins[COLS] = {8, 7, 6, 5};   //  Просто тупо слева направо первые 4 это ROWS последние 4 COLS.

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

String str3 =  "_";

void setup()
{

  servo.attach(2);
  lcd.begin();
}

void loop()
{
  lcd.clear() ;
  strcpy_P(buffer, (char*)pgm_read_word(&(questions))); // необходимые функции и расшифровки, просто скопируйте

  question  =  strtok (buffer, "-,"); //загадка
  correct_answer  =  strtok (NULL, "-,");   //правильный ответ
  variants[0] = correct_answer ;


  //а теперь варианты
  while ( OKK == 0) {
    for (int a = 0; a < 4; a++)
    {

      CCC++;

      lcd.clear() ;
      lcd.setCursor(0, 0);
      lcd.print(question); // выводим загаданное слово
      lcd.setCursor(0, 1);
      lcd.print(variants01);
      //lcd.setCursor(0, 1);
      //lcd.print(a + 1);
      //lcd.print(question01);

      //lcd.print(CCC);

      delay (4000);

      if (OKK == 1) {
        lcd.clear() ;
        lcd.setCursor(2, 0);
        lcd.print("ПРАВИЛЬНО!");
        delay (500);
        lives++;
        CCC = 0;

        lcd.clear() ;
        lcd.setCursor(0, 0);
        lcd.print("Верных ответов:");
        lcd.setCursor(5, 1);
        lcd.print(lives);
        lcd.print(" из ");
        lcd.print(lives);
        delay (4000);
        break ;
      } ;
      if (ERR == 1) {
        lcd.clear() ;
        lcd.noBacklight();
        delay (500);
        lives++;
        CCC = 0;

        lcd.backlight();
        lcd.setCursor(2, 0);
        lcd.print("НЕ ПРАВИЛЬНО");
        lcd.setCursor(2, 1);
        //lcd.print("Продолжим");
        delay (1000);
        ERR = 0;
      } ;

      if (CCC > 100) {
        CCC = 0 ;
        OKK = 1 ;
        break ;
      }
кода?
    }
  }
}   

Что умеет этот код: Брать фразу: ПЕРВЫЙ ВОПРОС из PROGMEM и держать её на экране в первой строке.

Что еще я хочу от этого кода: Чтоб выводилось во второй строчке A B C D вместе с ПЕРВЫЙ ВОПРОС в первой. Как я указал в начале кода, const char answers - тут находятся правильные ответы.

Вопрос господа: Как организовать сравнение данных, введеных с мембранной клавиатуры пользователем, с const char answers и последующего вывода на дисплей сообщения ПРАВИЛЬНО (сonst char asnwer_correct) при правильном ответе и, сообветственно НЕПРАВИЛЬНО при неправильном?

Dem
Offline
Зарегистрирован: 02.09.2018

strarbit, идея шикарная, но поймите, я уже месяц пытаюсь разобраться как простенький проверщик ответов сделать. Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа. Ну я описывал выше. Если на таком простом я не могу ничего толкового сделать, то что уж говорить про RFID?

b707
Онлайн
Зарегистрирован: 26.05.2017

Dem пишет:

Отчитываюсь, господа:


  strcpy_P(buffer, (char*)pgm_read_word(&(questions))); // необходимые функции и расшифровки, просто скопируйте

  

Что умеет этот код: Брать фразу: ПЕРВЫЙ ВОПРОС из PROGMEM и держать её на экране в первой строке.

Что еще я хочу от этого кода: Чтоб выводилось во второй строчке A B C D вместе с ПЕРВЫЙ ВОПРОС в первой. Как я указал в начале кода, const char answers - тут находятся правильные ответы.

погодите хотеть что-то еще - давайте разберемся с первым вопросом темы. Я же вам дал пример, как читать из массива PROGMEM, зачем вы его перекорежили? Как вы думаете, что будет читать в буфер приведенная выше строчка кода? - всегда  строку "Первый вопрос" и никогда "Второй.." и "Третий..." Если вы спрашиваете - то хотя бы внимательно относитесь к тем ответам, которые вам дают. Тогда, может, и не придется сетовать, что на этом форуме вас не понимают.

Во-вторых, продолжим разбор кода. Для начала про строки в ПРОГМЕМ. Обьясните, зачем вам четыре одинаковых строки "A B C D" - разве нельзя обойтись одной? И в случае вопросов - они все похожи, меняется только первое слово, а второе всегда одинаково.  Эффективнее будет хранить отдельно "Первый", "Второй", "Третий"... и отдельно строчку " вопрос", а при выводе просто склеивать числительное и существительное

b707
Онлайн
Зарегистрирован: 26.05.2017

Dem пишет:

Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа.

По-моему, это вы что-то не понимаете в отношении форума. Вашу идею с выводом вопросов и ответов форум понял еше в прошлый раз. Непонятно, чего вы ждете от форума в ответ? - что кто-то бросится писать готовый код под это описание? - тут это не принято

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ТС решил "удивить" нас своими вопросами. А мы "удивим" его своми ответами.

/*issues*/
//-------------------------
enum correct_t {corA = 0, corB, corC};
typedef struct {
  const char *question;
  const char *answer_a;
  const char *answer_b;
  const char *answer_c;
  correct_t correct;
} question_t;
/*база данных*/
const char question1[] PROGMEM = "question1";/*первый вопрос*/
const char answer_1a[] PROGMEM = "answer_1a*";
const char answer_1b[] PROGMEM = "answer_1b";
const char answer_1c[] PROGMEM = "answer_1c";

const char question2[] PROGMEM = "question2";/*второй вопрос*/
const char answer_2a[] PROGMEM = "answer_2a";
const char answer_2b[] PROGMEM = "answer_2b*";
const char answer_2c[] PROGMEM = "answer_2c";

const char question3[] PROGMEM = "question3";/*третий вопрос*/
const char answer_3a[] PROGMEM = "answer_3a";
const char answer_3b[] PROGMEM = "answer_3b";
const char answer_3c[] PROGMEM = "answer_3c*";
const question_t DataBase[] PROGMEM = {
  {question1, answer_1a, answer_1a, answer_1a, corA}
  , {question2, answer_2a, answer_2a, answer_2a, corB}
  , {question3, answer_3a, answer_3a, answer_3a, corC}
};
//-------------------------
void setup() {


}

void loop() {


}
/**/

 

Dem
Offline
Зарегистрирован: 02.09.2018

qwone, спасибо, буду разбираться. Это займет некоторе время...

Что означает аббревиатура ТС?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
Dem
Offline
Зарегистрирован: 02.09.2018

b707, может я что-то делал не так, но по Вашему примеру у меня не получилось... Поковырял немного и получилось. 

Так и есть, всегда берет только первый и никогда остальные. Будьте добры, объясните, почему? Я же вверху прописал:

const charconst questions[] PROGMEM = { question01, question02, question03, question04 };

теперь этой строкой пытаюсь извлечь из флеш-памяти первый, второй и т.д вопросы:

strcpy_P(buffer, (char*)pgm_read_word(&(questions)));

Поправьте меня, если я ошибаюсь...

По Вашему примеру 

strcpy_P(buffer, pgm_read_word_near((int)(questions+ i)));

Все... увидел. (int)(questions+ i) стоит читать как "увеличить questions на 1". Но проясните, пожалуйста, для чего там int и i?

ТОЧНО! Абсолютно согласен, я неправ. Вполне возможно обойтис одной строкой A B C D. 

"при выводе просто склеивать числительное и существительное" - объясните, пожалуйста, как это осуществить? А то уже становится интересно)

Вовсе нет, готовый код, это медвежья услуга (qwone, простите)))

Прошлый раз у нас не завязался диалог. В этот раз с каждым разом становится всё понятнее.

P.S. Как правильно цитировать? Имею ввиду куски сообщения, не всё.

Dem
Offline
Зарегистрирован: 02.09.2018

qwone, спасибо, понял

strarbit
Offline
Зарегистрирован: 12.06.2016

Dem пишет:

strarbit, идея шикарная, но поймите, я уже месяц пытаюсь разобраться как простенький проверщик ответов сделать. Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа. Ну я описывал выше. Если на таком простом я не могу ничего толкового сделать, то что уж говорить про RFID?

В форум помогают вам советы.
Ваш выбор удобно применить rfid или кнопка. В ваш скетч можно стереть много раз одникаковые слова, больше flash для скетч.  

b707
Онлайн
Зарегистрирован: 26.05.2017

Dem пишет:

По Вашему примеру 

strcpy_P(buffer, pgm_read_word_near((int)(questions+ i)));

Все... увидел. (int)(questions+ i) стоит читать как "увеличить questions на 1". Но проясните, пожалуйста, для чего там int и i?

Это стоит читать не как "увеличить questions на 1", а как "увеличить на i". questions - это указатель на нулевой элемент массива, а  (questions+ i) - это указатель на элемент массива номер i.

Вы в своем коде берете указатель questions, без индекса - поэтому всегда получаете только "Первый вопрос"

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Я у себя так делал

void PMRead( byte x[], int l ) {
  int len = l;//принимаем длину массива
  byte bufer[len];//создаем буфер для чтения массива из PROGMEM
  byte b, k;//переменные
  for (k = 0; k < len; k++)
  {
    b =  pgm_read_byte_near(x + k);//читаем из PROGMEM
    bufer[k] = b;//заносим в буфер
  }
  drawVector(bufer, cx, cy, m);//выводим на экран из буфера
}

Вызывал функцию в которую передовал имя массива в PROGMEM и его длину

        len = sizeof(space);//определяем длину массива
        PMRead(space, len);

 

psv1962
Offline
Зарегистрирован: 19.06.2019
Добрый День!

Прощу помощи у опытных юзеров!Робота с PROGMEM приятна и в тоже время сложна.Суть проблемы в следующем есть матрица 16 на 16 для опроса 256 контактов(шлейфов).256 названий этих шлейфов лежат в  PROGMEM, но нормально выходят на Serial  128 шлейфов,что я делаю не так.



#include <Keypad.h>
#include <pgmspace.h>
const byte ROWS = 16; //16   rows
const byte COLS = 16; //16 columns
char buffer[256] ;
//  const short const char
unsigned char keys[16][16] = {  
  { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0},
  { 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,16},
  { 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,32},
  { 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,48},
  { 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65,64},
  { 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81,80},  
  { 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97,96},
  { 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113,112},
  { 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129,128},
  { 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145,144},
  { 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161,160},
  { 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177,176},
  { 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193,192},
  { 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209,208},
  { 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225,224}, 
  { 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241,240} 
  };
const char string_0[] PROGMEM = " 1."; //  1
const char string_1[] PROGMEM = " 2.";
const char string_2[] PROGMEM = " 3.";
const char string_3[] PROGMEM = " 4.";
const char string_4[] PROGMEM = " 5.";
const char string_5[] PROGMEM = " 6.";
const char string_6[] PROGMEM = " 7."; //  
const char string_7[] PROGMEM = " 8.";
const char string_8[] PROGMEM = " 9.";
const char string_9[] PROGMEM = " 10.";
const char string_10[] PROGMEM = " 11.";
const char string_11[] PROGMEM = " 12.";
const char string_12[] PROGMEM = " 13."; //  
const char string_13[] PROGMEM = " 14.";
const char string_14[] PROGMEM = " 15.";
const char string_15[] PROGMEM = " 16.";
const char string_16[] PROGMEM = " 17.";
const char string_17[] PROGMEM = " 18.";
const char string_18[] PROGMEM = " 19."; //  
const char string_19[] PROGMEM = " 20.";
const char string_20[] PROGMEM = " 21.";
const char string_21[] PROGMEM = " 22.";
const char string_22[] PROGMEM = " 23.";
const char string_23[] PROGMEM = " 24."; // 
const char string_24[] PROGMEM = " 25.";
const char string_25[] PROGMEM = " 26.";
const char string_26[] PROGMEM = " 27.";
const char string_27[] PROGMEM = " 28.";
const char string_28[] PROGMEM = " 29.";
const char string_29[] PROGMEM = " 30."; 
const char string_30[] PROGMEM = " 31.";
const char string_31[] PROGMEM = " 32.";
const char string_32[] PROGMEM = " 33.";
const char string_33[] PROGMEM = " 34.";
const char string_34[] PROGMEM = " 35.";
const char string_35[] PROGMEM = " 36.";  
const char string_36[] PROGMEM = " 37.";
const char string_37[] PROGMEM = " 38.";
const char string_38[] PROGMEM = " 39.";
const char string_39[] PROGMEM = " 40.";
const char string_40[] PROGMEM = " 41.";
const char string_41[] PROGMEM = " 42.";
const char string_42[] PROGMEM = " 43.";
const char string_43[] PROGMEM = " 44." ;
const char string_44[] PROGMEM = " 45.";
const char string_45[] PROGMEM = " 46.";
const char string_46[] PROGMEM = " 47.";
const char string_47[] PROGMEM = " 48.";
const char string_48[] PROGMEM = " 49.";
const char string_49[] PROGMEM = " 50.";
const char string_50[] PROGMEM = " 51.";
const char string_51[] PROGMEM = " 52.";
const char string_52[] PROGMEM = " 53.";
const char string_53[] PROGMEM = " 54.";
const char string_54[] PROGMEM = " 55.";
const char string_55[] PROGMEM = " 56.";
const char string_56[] PROGMEM = " 57.";
const char string_57[] PROGMEM = " 58.";
const char string_58[] PROGMEM = " 59.";
const char string_59[] PROGMEM = " 60."; //
const char string_60[] PROGMEM = " 61.";
const char string_61[] PROGMEM = " 62.";
const char string_62[] PROGMEM = " 63.";
const char string_63[] PROGMEM = " 64.";
const char string_64[] PROGMEM = " 65.";
const char string_65[] PROGMEM = " 66."; // 
const char string_66[] PROGMEM = " 67.";
const char string_67[] PROGMEM = " 68.";
const char string_68[] PROGMEM = " 69.";
const char string_69[] PROGMEM = " 70.";
const char string_70[] PROGMEM = " 71.";
const char string_71[] PROGMEM = " 72."; // 
const char string_72[] PROGMEM = " 73.";
const char string_73[] PROGMEM = " 74.";
const char string_74[] PROGMEM = " 75." ;
const char string_75[] PROGMEM = " 76.";
const char string_76[] PROGMEM = " 77.";
const char string_77[] PROGMEM = " 78."; //
const char string_78[] PROGMEM = " 79.";
const char string_79[] PROGMEM = " 80.";
const char string_80[] PROGMEM = " 81.";
const char string_81[] PROGMEM = " 82.";
const char string_82[] PROGMEM = " 83.";
const char string_83[] PROGMEM = " 84."; // 
const char string_84[] PROGMEM = " 85.";
const char string_85[] PROGMEM = " 86.";
const char string_86[] PROGMEM = " 87.";
const char string_87[] PROGMEM = " 88.";
const char string_88[] PROGMEM = " 89.";
const char string_89[] PROGMEM = " 90.";  
const char string_90[] PROGMEM = " 91.";
const char string_91[] PROGMEM = " 92.";
const char string_92[] PROGMEM = " 93.";
const char string_93[] PROGMEM = " 94.";
const char string_94[] PROGMEM = " 95.";
const char string_95[] PROGMEM = " 96.";
const char string_96[] PROGMEM = " 97.";  
const char string_97[] PROGMEM = " 98.";
const char string_98[] PROGMEM = " 99.";
const char string_99[] PROGMEM = " 100.";
const char string_100[] PROGMEM = " 101.";
const char string_101[] PROGMEM = " 102.";
const char string_102[] PROGMEM = " 103.";  
const char string_103[] PROGMEM = " 104.";
const char string_104[] PROGMEM = " 105.";
const char string_105[] PROGMEM = " 106.";
const char string_106[] PROGMEM = " 107.";
const char string_107[] PROGMEM = " 108.";
const char string_108[] PROGMEM = " 109."; 
const char string_109[] PROGMEM = " 110.";
const char string_110[] PROGMEM = " 111.";
const char string_111[] PROGMEM = " 112.";
const char string_112[] PROGMEM = " 113.";
const char string_113[] PROGMEM = " 114.";
const char string_114[] PROGMEM = " 115."; 
const char string_115[] PROGMEM = " 116.";
const char string_116[] PROGMEM = " 117.";
const char string_117[] PROGMEM = " 118.";
const char string_118[] PROGMEM = " 119.";
const char string_119[] PROGMEM = " 120."; // 
const char string_120[] PROGMEM = " 121.";
const char string_121[] PROGMEM = " 122.";
const char string_122[] PROGMEM = " 123.";
const char string_123[] PROGMEM = " 124.";
const char string_124[] PROGMEM = " 125.";
const char string_125[] PROGMEM = " 126.";
const char string_126[] PROGMEM = " 127."; //  
const char string_127[] PROGMEM = " 128.";
const char string_128[] PROGMEM = " 129.";
const char string_129[] PROGMEM = " 130.";
const char string_130[] PROGMEM = " 131.";
const char string_131[] PROGMEM = " 132."; 
const char string_132[] PROGMEM = " 133.";
const char string_133[] PROGMEM = " 134.";
const char string_134[] PROGMEM = " 135.";
const char string_135[] PROGMEM = " 136.";
const char string_136[] PROGMEM = " 137.";
const char string_137[] PROGMEM = " 138."; // 
const char string_138[] PROGMEM = " 139.";
const char string_139[] PROGMEM = " 140.";
const char string_140[] PROGMEM = " 141.";
const char string_141[] PROGMEM = " 142.";
const char string_142[] PROGMEM = " 143.";
const char string_143[] PROGMEM = " 144."; //
const char string_144[] PROGMEM = " 145.";
const char string_145[] PROGMEM = " 146.";
const char string_146[] PROGMEM = " 147.";
const char string_147[] PROGMEM = " 148.";
const char string_148[] PROGMEM = " 149.";
const char string_149[] PROGMEM = " 150.";  
const char string_150[] PROGMEM = " 151.";
const char string_151[] PROGMEM = " 152.";
const char string_152[] PROGMEM = " 153.";
const char string_153[] PROGMEM = " 154.";
const char string_154[] PROGMEM = " 155.";
const char string_155[] PROGMEM = " 156.";  
const char string_156[] PROGMEM = " 157.";
const char string_157[] PROGMEM = " 158.";
const char string_158[] PROGMEM = " 159.";
const char string_159[] PROGMEM = " 160.";
const char string_160[] PROGMEM = " 161.";
const char string_161[] PROGMEM = " 162.";  
const char string_162[] PROGMEM = " 163.";
const char string_163[] PROGMEM = " 164.";
const char string_164[] PROGMEM = " 165.";
const char string_165[] PROGMEM = " 166.";
const char string_166[] PROGMEM = " 167.";
const char string_167[] PROGMEM = " 168.";
const char string_168[] PROGMEM = " 169.";
const char string_169[] PROGMEM = " 170.";
const char string_170[] PROGMEM = " 171.";
const char string_171[] PROGMEM = " 172. ";
const char string_172[] PROGMEM = " 173.";
const char string_173[] PROGMEM = " 174.";  
const char string_174[] PROGMEM = " 175.";
const char string_175[] PROGMEM = " 176.";
const char string_176[] PROGMEM = " 177.";
const char string_177[] PROGMEM = " 178.";
const char string_178[] PROGMEM = " 179.";
const char string_179[] PROGMEM = " 180."; //  
const char string_180[] PROGMEM = " 181.";
const char string_181[] PROGMEM = " 182.";
const char string_182[] PROGMEM = " 183.";
const char string_183[] PROGMEM = " 184.";
const char string_184[] PROGMEM = " 185.";
const char string_185[] PROGMEM = " 186.";
const char string_186[] PROGMEM = " 187.";
const char string_187[] PROGMEM = " 188.";
const char string_188[] PROGMEM = " 189.";
const char string_189[] PROGMEM = " 190.";
const char string_190[] PROGMEM = " 191.";
const char string_191[] PROGMEM = " 192."; // 
const char string_192[] PROGMEM = " 193.";
const char string_193[] PROGMEM = " 194.";
const char string_194[] PROGMEM = " 195.";
const char string_195[] PROGMEM = " 196.";
const char string_196[] PROGMEM = " 197.";
const char string_197[] PROGMEM = " 198."; //
const char string_198[] PROGMEM = " 199.";
const char string_199[] PROGMEM = " 200.";
const char string_200[] PROGMEM = " 201.";
const char string_201[] PROGMEM = " 202.";
const char string_202[] PROGMEM = " 203.";
const char string_203[] PROGMEM = " 204."; // 
const char string_204[] PROGMEM = " 205.";
const char string_205[] PROGMEM = " 206.";
const char string_206[] PROGMEM = " 207.";
const char string_207[] PROGMEM = " 208.";
const char string_208[] PROGMEM = " 209.";
const char string_209[] PROGMEM = " 210.";  
const char string_210[] PROGMEM = " 211.";
const char string_211[] PROGMEM = " 212.";
const char string_212[] PROGMEM = " 213.";
const char string_213[] PROGMEM = " 214.";
const char string_214[] PROGMEM = " 215.";
const char string_215[] PROGMEM = " 216.";  
const char string_216[] PROGMEM = " 217.";
const char string_217[] PROGMEM = " 218.";
const char string_218[] PROGMEM = " 219.";
const char string_219[] PROGMEM = " 220.";
const char string_220[] PROGMEM = " 221.";
const char string_221[] PROGMEM = " 222."; 
const char string_222[] PROGMEM = " 223.";
const char string_223[] PROGMEM = " 224.";
const char string_224[] PROGMEM = " 225.";
const char string_225[] PROGMEM = " 226.";
const char string_226[] PROGMEM = " 227.";
const char string_227[] PROGMEM = " 228.";
const char string_228[] PROGMEM = " 229."; 
const char string_229[] PROGMEM = " 230.";
const char string_230[] PROGMEM = " 231.";
const char string_231[] PROGMEM = " 232.";
const char string_232[] PROGMEM = " 233.";
const char string_233[] PROGMEM = " 234.";
const char string_234[] PROGMEM = " 235."; 
const char string_235[] PROGMEM = " 236.";
const char string_236[] PROGMEM = " 237.";
const char string_237[] PROGMEM = " 238.";
const char string_238[] PROGMEM = " 239.";
const char string_239[] PROGMEM = " 240.";
const char string_240[] PROGMEM = " 241."; //  
const char string_241[] PROGMEM = " 242.";
const char string_242[] PROGMEM = " 243.";
const char string_243[] PROGMEM = " 244.";
const char string_244[] PROGMEM = " 245.";
const char string_245[] PROGMEM = " 246.";
const char string_246[] PROGMEM = " 247."; 
const char string_247[] PROGMEM = " 248.";
const char string_248[] PROGMEM = " 249.";
const char string_249[] PROGMEM = " 250.";
const char string_250[] PROGMEM = " 251.";
const char string_251[] PROGMEM = " 252.";
const char string_252[] PROGMEM = " 253."; //  
const char string_253[] PROGMEM = " 254.";
const char string_254[] PROGMEM = " 255.";
const char string_255[] PROGMEM = " 256.";

const char* const  myStrings_table[] PROGMEM={string_0,string_1,string_2,string_3,string_4,string_5,string_6,string_7,string_8,string_9,string_10,string_11,string_12,
string_13,string_14,string_15,string_16,string_17,string_18,string_19,string_20,string_21,string_22,string_23,string_24,string_25,string_26,string_27,
string_28,string_29,string_30,string_31,string_32,string_33,string_34,string_35,string_36,string_37,string_38,string_39,string_40,string_41,string_42,string_43,
string_44,string_45,string_46,string_47,string_48,string_49,string_50,string_51,string_52,string_53,string_54,string_55,string_56,string_57,string_58,string_59,
string_60,string_61,string_62,string_63,string_64,string_65,string_66,string_67,string_68,string_69,string_70,string_71,string_72,string_73,string_74,string_75,
string_76,string_77,string_78,string_79,string_80,string_81,string_82,string_83,string_84,string_85,string_86,string_87,string_88,string_89,string_90,string_91,
string_92,string_93,string_94,string_95,string_96,string_97,string_98,string_99,string_100,string_101,string_102,string_103,string_104,string_105,string_106,
string_107,string_108,string_109,string_110,string_111,string_112,string_113,string_114,string_115,string_116,string_117,string_118,string_119,string_120,string_121,
string_122,string_123,string_124,string_125,string_126,string_127,string_128,string_129,string_130,string_131,string_132,string_133,string_134,string_135,string_136,
string_137,string_138,string_139,string_140,string_141,string_142,string_143,string_144,string_145,string_146,string_147,string_148,string_149,string_150,string_151,
string_152,string_153,string_154,string_155,string_156,string_157,string_158,string_159,string_160,string_161,string_162,string_163,string_164,string_165,string_166,
string_167,string_168,string_169,string_170,string_171,string_172,string_173,string_174,string_175,string_176,string_177,string_178,string_179,string_180,string_181,
string_182,string_183,string_184,string_185,string_186,string_187,string_188,string_189,string_190,string_191,string_192,string_193,string_194,string_195,string_196,
string_197,string_198,string_199,string_200,string_201,string_201,string_202,string_203,string_204,string_205,string_206,string_207,string_208,string_209,string_210,
string_211,string_212,string_213,string_214,string_215,string_216,string_217,string_218,string_219,string_220,string_221,string_222,string_223,string_224,string_225,
string_226,string_227,string_228,string_229,string_230,string_231,string_232,string_233,string_234,string_235,string_236,string_237,string_238,string_239,string_240,
string_241,string_242,string_243,string_244,string_245,string_246,string_247,string_248,string_249,string_250,string_251,string_252,string_253,string_254,string_255
};
 // подключаемся к ряду 
byte rowPins[ROWS] = { 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, A0, A1, A2, A3}; //  A3, A2, A1, A0, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38 
//подключить к колонке 
byte colPins[COLS] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}; //      37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

unsigned long loopCount;
unsigned long startTime;
String msg;

void setup() {

  pinMode(13, OUTPUT);
  Serial.begin(9600);
  loopCount = 0;
  startTime = millis();
  msg = "";
}

void loop() {
  digitalWrite(13, LOW);
  
  loopCount++;
  
  if ( (millis() - startTime) > 5000 ) {
  ////  Serial.print("Average loops per second = ");    Serial.println(loopCount / 5);
    startTime = millis();
    loopCount = 0;
  }
  

  // Fills kpd.key[ ] array with up-to 10 active keys.  массив до 10 активных ключей
  // Returns true if there are ANY active keys.Возвращает true, если есть ЛЮБЫЕ активные ключи.
  if (kpd.getKeys())
  {
    for (int i = 0; i < LIST_MAX; i++) // Scan the whole key list.Сканируем весь список ключей.
    {
      if ( kpd.key[i].stateChanged )   // Only find keys that have changed state.Находим только те ключи, состояние которых изменилось.
      {
        switch (kpd.key[i].kstate) {  //  Сообщение об активном состоянии ключа Report active key state : IDLE, PRESSED, HOLD, or RELEASED
          case PRESSED:            msg = " включен :";            break;// "включено " "PRESSED.
          case HOLD:            msg = " HOLD.";            break;
          case IDLE:            msg = " IDLE.";break;
          case RELEASED:            msg =" выключен :" ; //   " "      RELEASED.
        }
        if((msg == " включен :")||(msg == " выключен :"))  //" " " "PRESSED.RELEASED.
        {
        
        Serial.print("ШЛЕЙФ ");
        Serial.print(msg);
       //Serial.println(kpd.key[i].kcode);//kcode kstate kchar
        
      
        strcpy_P(buffer, (char*)pgm_read_word(&(myStrings_table[kpd.key[i].kchar])));//вывод в buffer
    Serial.println(buffer);
     //Serial.print("  code button ");     Serial.println(kpd.key[i].kcode);//kcode kstate kchar вывод код кнопки 
        }
      }
    }
  }
}

 

 

KindMan
Offline
Зарегистрирован: 19.12.2018

У меня нет библиотеки для кнопок, но подозреваю, что там тип char используется, а он максимум 127.
И зачем вы используете 255 раз слово Гараж? Можно же его просто добавлять к строке. А там у вас цифры в основном, их вообще можно не пихать. Букву А добавлять по условию.

psv1962
Offline
Зарегистрирован: 19.06.2019

Спасибо за ответ.Вместо слов гараж будут дополнительные символы.

psv1962
Offline
Зарегистрирован: 19.06.2019

Добрый День .Подскажите уважаемые какое количество строк можна записать в PROGMEM.

sadman41
Offline
Зарегистрирован: 19.10.2016

Code:

const char string_0[] PROGMEM = " №1."; //  1
const char string_1[] PROGMEM = " №2.";
const char string_2[] PROGMEM = " №3.";
const char string_3[] PROGMEM = " №4.";
const char string_4[] PROGMEM = " №5.";
const char string_5[] PROGMEM = " №6.";
const char string_6[] PROGMEM = " №7."; //
const char string_7[] PROGMEM = " №8.";
const char string_8[] PROGMEM = " №9.";
const char string_9[] PROGMEM = " №10.";
const char string_10[] PROGMEM = " №11.";
const char string_11[] PROGMEM = " №12.";
const char string_12[] PROGMEM = " №13."; //
const char string_13[] PROGMEM = " №14.";
const char string_14[] PROGMEM = " №15.";
const char string_15[] PROGMEM = " №16.";
const char string_16[] PROGMEM = " №17.";
const char string_17[] PROGMEM = " №18.";
const char string_18[] PROGMEM = " №19."; //
const char string_19[] PROGMEM = " №20.";
const char string_20[] PROGMEM = " №21.";
const char string_21[] PROGMEM = " №22.";
const char string_22[] PROGMEM = " №23.";
const char string_23[] PROGMEM = " №24."; //
const char string_24[] PROGMEM = " №25.";
const char string_25[] PROGMEM = " №26.";
const char string_26[] PROGMEM = " №27.";
const char string_27[] PROGMEM = " №28.";
const char string_28[] PROGMEM = " №29.";
const char string_29[] PROGMEM = " №30.";
const char string_30[] PROGMEM = " №31.";
const char string_31[] PROGMEM = " №32.";
const char string_32[] PROGMEM = " №33.";
const char string_33[] PROGMEM = " №34.";
const char string_34[] PROGMEM = " №35.";
const char string_35[] PROGMEM = " №36.";
const char string_36[] PROGMEM = " №37.";
const char string_37[] PROGMEM = " №38.";
const char string_38[] PROGMEM = " №39.";
const char string_39[] PROGMEM = " №40.";
const char string_40[] PROGMEM = " №41.";
const char string_41[] PROGMEM = " №42.";
const char string_42[] PROGMEM = " №43.";
const char string_43[] PROGMEM = " №44." ;
const char string_44[] PROGMEM = " №45.";
const char string_45[] PROGMEM = " №46.";
const char string_46[] PROGMEM = " №47.";
const char string_47[] PROGMEM = " №48.";
const char string_48[] PROGMEM = " №49.";
const char string_49[] PROGMEM = " №50.";
const char string_50[] PROGMEM = " №51.";
const char string_51[] PROGMEM = " №52.";
const char string_52[] PROGMEM = " №53.";
const char string_53[] PROGMEM = " №54.";
const char string_54[] PROGMEM = " №55.";
const char string_55[] PROGMEM = " №56.";
const char string_56[] PROGMEM = " №57.";
const char string_57[] PROGMEM = " №58.";
const char string_58[] PROGMEM = " №59.";
const char string_59[] PROGMEM = " №60."; //
const char string_60[] PROGMEM = " №61.";
const char string_61[] PROGMEM = " №62.";
const char string_62[] PROGMEM = " №63.";
const char string_63[] PROGMEM = " №64.";
const char string_64[] PROGMEM = " №65.";
const char string_65[] PROGMEM = " №66."; //
const char string_66[] PROGMEM = " №67.";
const char string_67[] PROGMEM = " №68.";
const char string_68[] PROGMEM = " №69.";
const char string_69[] PROGMEM = " №70.";
const char string_70[] PROGMEM = " №71.";
const char string_71[] PROGMEM = " №72."; //
const char string_72[] PROGMEM = " №73.";
const char string_73[] PROGMEM = " №74.";
const char string_74[] PROGMEM = " №75." ;
const char string_75[] PROGMEM = " №76.";
const char string_76[] PROGMEM = " №77.";
const char string_77[] PROGMEM = " №78."; //
const char string_78[] PROGMEM = " №79.";
const char string_79[] PROGMEM = " №80.";
const char string_80[] PROGMEM = " №81.";
const char string_81[] PROGMEM = " №82.";
const char string_82[] PROGMEM = " №83.";
const char string_83[] PROGMEM = " №84."; //
const char string_84[] PROGMEM = " №85.";
const char string_85[] PROGMEM = " №86.";
const char string_86[] PROGMEM = " №87.";
const char string_87[] PROGMEM = " №88.";
const char string_88[] PROGMEM = " №89.";
const char string_89[] PROGMEM = " №90.";
const char string_90[] PROGMEM = " №91.";
const char string_91[] PROGMEM = " №92.";
const char string_92[] PROGMEM = " №93.";
const char string_93[] PROGMEM = " №94.";
const char string_94[] PROGMEM = " №95.";
const char string_95[] PROGMEM = " №96.";
const char string_96[] PROGMEM = " №97.";
const char string_97[] PROGMEM = " №98.";
const char string_98[] PROGMEM = " №99.";
const char string_99[] PROGMEM = " №100.";
const char string_100[] PROGMEM = " №101.";
const char string_101[] PROGMEM = " №102.";
const char string_102[] PROGMEM = " №103.";
const char string_103[] PROGMEM = " №104.";
const char string_104[] PROGMEM = " №105.";
const char string_105[] PROGMEM = " №106.";
const char string_106[] PROGMEM = " №107.";
const char string_107[] PROGMEM = " №108.";
const char string_108[] PROGMEM = " №109.";
const char string_109[] PROGMEM = " №110.";
const char string_110[] PROGMEM = " №111.";
const char string_111[] PROGMEM = " №112.";
const char string_112[] PROGMEM = " №113.";
const char string_113[] PROGMEM = " №114.";
const char string_114[] PROGMEM = " №115.";
const char string_115[] PROGMEM = " №116.";
const char string_116[] PROGMEM = " №117.";
const char string_117[] PROGMEM = " №118.";
const char string_118[] PROGMEM = " №119.";
const char string_119[] PROGMEM = " №120."; //
const char string_120[] PROGMEM = " №121.";
const char string_121[] PROGMEM = " №122.";
const char string_122[] PROGMEM = " №123.";
const char string_123[] PROGMEM = " №124.";
const char string_124[] PROGMEM = " №125.";
const char string_125[] PROGMEM = " №126.";
const char string_126[] PROGMEM = " №127."; //
const char string_127[] PROGMEM = " №128.";
const char string_128[] PROGMEM = " №129.";
const char string_129[] PROGMEM = " №130.";
const char string_130[] PROGMEM = " №131.";
const char string_131[] PROGMEM = " №132.";
const char string_132[] PROGMEM = " №133.";
const char string_133[] PROGMEM = " №134.";
const char string_134[] PROGMEM = " №135.";
const char string_135[] PROGMEM = " №136.";
const char string_136[] PROGMEM = " №137.";
const char string_137[] PROGMEM = " №138."; //
const char string_138[] PROGMEM = " №139.";
const char string_139[] PROGMEM = " №140.";
const char string_140[] PROGMEM = " №141.";
const char string_141[] PROGMEM = " №142.";
const char string_142[] PROGMEM = " №143.";
const char string_143[] PROGMEM = " №144."; //
const char string_144[] PROGMEM = " №145.";
const char string_145[] PROGMEM = " №146.";
const char string_146[] PROGMEM = " №147.";
const char string_147[] PROGMEM = " №148.";
const char string_148[] PROGMEM = " №149.";
const char string_149[] PROGMEM = " №150.";
const char string_150[] PROGMEM = " №151.";
const char string_151[] PROGMEM = " №152.";
const char string_152[] PROGMEM = " №153.";
const char string_153[] PROGMEM = " №154.";
const char string_154[] PROGMEM = " №155.";
const char string_155[] PROGMEM = " №156.";
const char string_156[] PROGMEM = " №157.";
const char string_157[] PROGMEM = " №158.";
const char string_158[] PROGMEM = " №159.";
const char string_159[] PROGMEM = " №160.";
const char string_160[] PROGMEM = " №161.";
const char string_161[] PROGMEM = " №162.";
const char string_162[] PROGMEM = " №163.";
const char string_163[] PROGMEM = " №164.";
const char string_164[] PROGMEM = " №165.";
const char string_165[] PROGMEM = " №166.";
const char string_166[] PROGMEM = " №167.";
const char string_167[] PROGMEM = " №168.";
const char string_168[] PROGMEM = " №169.";
const char string_169[] PROGMEM = " №170.";
const char string_170[] PROGMEM = " №171.";
const char string_171[] PROGMEM = " №172. ";
const char string_172[] PROGMEM = " №173.А";
const char string_173[] PROGMEM = " №174.";
const char string_174[] PROGMEM = " №175.";
const char string_175[] PROGMEM = " №176.А";
const char string_176[] PROGMEM = " №177.А";
const char string_177[] PROGMEM = " №178.";
const char string_178[] PROGMEM = " №179.";
const char string_179[] PROGMEM = " №180."; //
const char string_180[] PROGMEM = " №181.";
const char string_181[] PROGMEM = " №182.";
const char string_182[] PROGMEM = " №183.";
const char string_183[] PROGMEM = " №184.";
const char string_184[] PROGMEM = " №185.";
const char string_185[] PROGMEM = " №186.";
const char string_186[] PROGMEM = " №187.";
const char string_187[] PROGMEM = " №188.";
const char string_188[] PROGMEM = " №189.";
const char string_189[] PROGMEM = " №190.";
const char string_190[] PROGMEM = " №191.";
const char string_191[] PROGMEM = " №192."; //
const char string_192[] PROGMEM = " №193.";
const char string_193[] PROGMEM = " №194.";
const char string_194[] PROGMEM = " №195.";
const char string_195[] PROGMEM = " №196.";
const char string_196[] PROGMEM = " №197.";
const char string_197[] PROGMEM = " №198."; //
const char string_198[] PROGMEM = " №199.";
const char string_199[] PROGMEM = " №200.";
const char string_200[] PROGMEM = " №201.";
const char string_201[] PROGMEM = " №202.";
const char string_202[] PROGMEM = " №203.";
const char string_203[] PROGMEM = " №204."; //
const char string_204[] PROGMEM = " №205.";
const char string_205[] PROGMEM = " №206.";
const char string_206[] PROGMEM = " №207.";
const char string_207[] PROGMEM = " №208.";
const char string_208[] PROGMEM = " №209.";
const char string_209[] PROGMEM = " №210.";
const char string_210[] PROGMEM = " №211.";
const char string_211[] PROGMEM = " №212.";
const char string_212[] PROGMEM = " №213.";
const char string_213[] PROGMEM = " №214.";
const char string_214[] PROGMEM = " №215.";
const char string_215[] PROGMEM = " №216.";
const char string_216[] PROGMEM = " №217.";
const char string_217[] PROGMEM = " №218.";
const char string_218[] PROGMEM = " №219.";
const char string_219[] PROGMEM = " №220.";
const char string_220[] PROGMEM = " №221.";
const char string_221[] PROGMEM = " №222.";
const char string_222[] PROGMEM = " №223.";
const char string_223[] PROGMEM = " №224.";
const char string_224[] PROGMEM = " №225.";
const char string_225[] PROGMEM = " №226.";
const char string_226[] PROGMEM = " №227.";
const char string_227[] PROGMEM = " №228.";
const char string_228[] PROGMEM = " №229.";
const char string_229[] PROGMEM = " №230.";
const char string_230[] PROGMEM = " №231.";
const char string_231[] PROGMEM = " №232.";
const char string_232[] PROGMEM = " №233.";
const char string_233[] PROGMEM = " №234.";
const char string_234[] PROGMEM = " №235.";
const char string_235[] PROGMEM = " №236.";
const char string_236[] PROGMEM = " №237.";
const char string_237[] PROGMEM = " №238.";
const char string_238[] PROGMEM = " №239.";
const char string_239[] PROGMEM = " №240.";
const char string_240[] PROGMEM = " №241."; //
const char string_241[] PROGMEM = " №242.";
const char string_242[] PROGMEM = " №243.";
const char string_243[] PROGMEM = " №244.";
const char string_244[] PROGMEM = " №245.";
const char string_245[] PROGMEM = " №246.";
const char string_246[] PROGMEM = " №247.";
const char string_247[] PROGMEM = " №248.";
const char string_248[] PROGMEM = " №249.";
const char string_249[] PROGMEM = " №250.";
const char string_250[] PROGMEM = " №251.";
const char string_251[] PROGMEM = " №252.";
const char string_252[] PROGMEM = " №253."; //
const char string_253[] PROGMEM = " №254.";
const char string_254[] PROGMEM = " №255.";
const char string_255[] PROGMEM = " №256.";

const char* const  myStrings_table[] PROGMEM = {string_0, string_1, string_2, string_3, string_4, string_5, string_6, string_7, string_8, string_9, string_10, string_11, string_12,
                                                string_13, string_14, string_15, string_16, string_17, string_18, string_19, string_20, string_21, string_22, string_23, string_24, string_25, string_26, string_27,
                                                string_28, string_29, string_30, string_31, string_32, string_33, string_34, string_35, string_36, string_37, string_38, string_39, string_40, string_41, string_42, string_43,
                                                string_44, string_45, string_46, string_47, string_48, string_49, string_50, string_51, string_52, string_53, string_54, string_55, string_56, string_57, string_58, string_59,
                                                string_60, string_61, string_62, string_63, string_64, string_65, string_66, string_67, string_68, string_69, string_70, string_71, string_72, string_73, string_74, string_75,
                                                string_76, string_77, string_78, string_79, string_80, string_81, string_82, string_83, string_84, string_85, string_86, string_87, string_88, string_89, string_90, string_91,
                                                string_92, string_93, string_94, string_95, string_96, string_97, string_98, string_99, string_100, string_101, string_102, string_103, string_104, string_105, string_106,
                                                string_107, string_108, string_109, string_110, string_111, string_112, string_113, string_114, string_115, string_116, string_117, string_118, string_119, string_120, string_121,
                                                string_122, string_123, string_124, string_125, string_126, string_127, string_128, string_129, string_130, string_131, string_132, string_133, string_134, string_135, string_136,
                                                string_137, string_138, string_139, string_140, string_141, string_142, string_143, string_144, string_145, string_146, string_147, string_148, string_149, string_150, string_151,
                                                string_152, string_153, string_154, string_155, string_156, string_157, string_158, string_159, string_160, string_161, string_162, string_163, string_164, string_165, string_166,
                                                string_167, string_168, string_169, string_170, string_171, string_172, string_173, string_174, string_175, string_176, string_177, string_178, string_179, string_180, string_181,
                                                string_182, string_183, string_184, string_185, string_186, string_187, string_188, string_189, string_190, string_191, string_192, string_193, string_194, string_195, string_196,
                                                string_197, string_198, string_199, string_200, string_201, string_201, string_202, string_203, string_204, string_205, string_206, string_207, string_208, string_209, string_210,
                                                string_211, string_212, string_213, string_214, string_215, string_216, string_217, string_218, string_219, string_220, string_221, string_222, string_223, string_224, string_225,
                                                string_226, string_227, string_228, string_229, string_230, string_231, string_232, string_233, string_234, string_235, string_236, string_237, string_238, string_239, string_240,
                                                string_241, string_242, string_243, string_244, string_245, string_246, string_247, string_248, string_249, string_250, string_251, string_252, string_253, string_254, string_255
                                               };

#define FSH_P(p) (reinterpret_cast<const __FlashStringHelper *>(p))

void setup() {
  Serial.begin(115200);
  Serial.print(FSH_P(pgm_read_word(&(myStrings_table[256]))));
/*
  char buffer[100];
  for (int i = 0; i < 256; i++) {
    strcpy_P(buffer, (char *)pgm_read_word(&(myStrings_table[i])));  
    Serial.println(buffer);
  }
  */
}

 

Output:

 №256.

 

b707
Онлайн
Зарегистрирован: 26.05.2017

psv1962 пишет:

Добрый День .Подскажите уважаемые какое количество строк можна записать в PROGMEM.

Зачем?? Чтобы вывести 256 раз надпись "№" ?

Более дебильного кода и придумать трудно. И не лень было набивать?

Вместо этого:

 const char string_0[] PROGMEM = " №1."; //  1
const char string_1[] PROGMEM = " №2.";
const char string_2[] PROGMEM = " №3.";
const char string_3[] PROGMEM = " №4.";
const char string_4[] PROGMEM = " №5.";
const char string_5[] PROGMEM = " №6.";
const char string_6[] PROGMEM = " №7."; //  
const char string_7[] PROGMEM = " №8.";
const char string_8[] PROGMEM = " №9.";
const char string_9[] PROGMEM = " №10.";
const char string_10[] PROGMEM = " №11.";
const char string_11[] PROGMEM = " №12.";
const char string_12[] PROGMEM = " №13."; //  
const char string_13[] PROGMEM = " №14.";
const char string_14[] PROGMEM = " №15.";
const char string_15[] PROGMEM = " №16.";
const char string_16[] PROGMEM = " №17.";
const char string_17[] PROGMEM = " №18.";
const char string_18[] PROGMEM = " №19."; //  
const char string_19[] PROGMEM = " №20.";
const char string_20[] PROGMEM = " №21.";
const char string_21[] PROGMEM = " №22.";
const char string_22[] PROGMEM = " №23.";
const char string_23[] PROGMEM = " №24."; // 
const char string_24[] PROGMEM = " №25.";
const char string_25[] PROGMEM = " №26.";
const char string_26[] PROGMEM = " №27.";
const char string_27[] PROGMEM = " №28.";
const char string_28[] PROGMEM = " №29.";
const char string_29[] PROGMEM = " №30."; 
const char string_30[] PROGMEM = " №31.";
const char string_31[] PROGMEM = " №32.";
const char string_32[] PROGMEM = " №33.";
const char string_33[] PROGMEM = " №34.";
const char string_34[] PROGMEM = " №35.";
const char string_35[] PROGMEM = " №36.";  
const char string_36[] PROGMEM = " №37.";
const char string_37[] PROGMEM = " №38.";
const char string_38[] PROGMEM = " №39.";
const char string_39[] PROGMEM = " №40.";
const char string_40[] PROGMEM = " №41.";
const char string_41[] PROGMEM = " №42.";
const char string_42[] PROGMEM = " №43.";
const char string_43[] PROGMEM = " №44." ;
const char string_44[] PROGMEM = " №45.";
const char string_45[] PROGMEM = " №46.";
const char string_46[] PROGMEM = " №47.";
const char string_47[] PROGMEM = " №48.";
const char string_48[] PROGMEM = " №49.";
const char string_49[] PROGMEM = " №50.";
const char string_50[] PROGMEM = " №51.";
const char string_51[] PROGMEM = " №52.";
const char string_52[] PROGMEM = " №53.";
const char string_53[] PROGMEM = " №54.";
const char string_54[] PROGMEM = " №55.";
const char string_55[] PROGMEM = " №56.";
const char string_56[] PROGMEM = " №57.";
const char string_57[] PROGMEM = " №58.";
const char string_58[] PROGMEM = " №59.";
const char string_59[] PROGMEM = " №60."; //
const char string_60[] PROGMEM = " №61.";
const char string_61[] PROGMEM = " №62.";
const char string_62[] PROGMEM = " №63.";
const char string_63[] PROGMEM = " №64.";
const char string_64[] PROGMEM = " №65.";
const char string_65[] PROGMEM = " №66."; // 
const char string_66[] PROGMEM = " №67.";
const char string_67[] PROGMEM = " №68.";
const char string_68[] PROGMEM = " №69.";
const char string_69[] PROGMEM = " №70.";
const char string_70[] PROGMEM = " №71.";
const char string_71[] PROGMEM = " №72."; // 
const char string_72[] PROGMEM = " №73.";
const char string_73[] PROGMEM = " №74.";
const char string_74[] PROGMEM = " №75." ;
const char string_75[] PROGMEM = " №76.";
const char string_76[] PROGMEM = " №77.";
const char string_77[] PROGMEM = " №78."; //
const char string_78[] PROGMEM = " №79.";
const char string_79[] PROGMEM = " №80.";
const char string_80[] PROGMEM = " №81.";
const char string_81[] PROGMEM = " №82.";
const char string_82[] PROGMEM = " №83.";
const char string_83[] PROGMEM = " №84."; // 
const char string_84[] PROGMEM = " №85.";
const char string_85[] PROGMEM = " №86.";
const char string_86[] PROGMEM = " №87.";
const char string_87[] PROGMEM = " №88.";
const char string_88[] PROGMEM = " №89.";
const char string_89[] PROGMEM = " №90.";  
const char string_90[] PROGMEM = " №91.";
const char string_91[] PROGMEM = " №92.";
const char string_92[] PROGMEM = " №93.";
const char string_93[] PROGMEM = " №94.";
const char string_94[] PROGMEM = " №95.";
const char string_95[] PROGMEM = " №96.";
const char string_96[] PROGMEM = " №97.";  
const char string_97[] PROGMEM = " №98.";
const char string_98[] PROGMEM = " №99.";
const char string_99[] PROGMEM = " №100.";
const char string_100[] PROGMEM = " №101.";
const char string_101[] PROGMEM = " №102.";
const char string_102[] PROGMEM = " №103.";  
const char string_103[] PROGMEM = " №104.";
const char string_104[] PROGMEM = " №105.";
const char string_105[] PROGMEM = " №106.";
const char string_106[] PROGMEM = " №107.";
const char string_107[] PROGMEM = " №108.";
const char string_108[] PROGMEM = " №109."; 
const char string_109[] PROGMEM = " №110.";
const char string_110[] PROGMEM = " №111.";
const char string_111[] PROGMEM = " №112.";
const char string_112[] PROGMEM = " №113.";
const char string_113[] PROGMEM = " №114.";
const char string_114[] PROGMEM = " №115."; 
const char string_115[] PROGMEM = " №116.";
const char string_116[] PROGMEM = " №117.";
const char string_117[] PROGMEM = " №118.";
const char string_118[] PROGMEM = " №119.";
const char string_119[] PROGMEM = " №120."; // 
const char string_120[] PROGMEM = " №121.";
const char string_121[] PROGMEM = " №122.";
const char string_122[] PROGMEM = " №123.";
const char string_123[] PROGMEM = " №124.";
const char string_124[] PROGMEM = " №125.";
const char string_125[] PROGMEM = " №126.";
const char string_126[] PROGMEM = " №127."; //  
const char string_127[] PROGMEM = " №128.";
const char string_128[] PROGMEM = " №129.";
const char string_129[] PROGMEM = " №130.";
const char string_130[] PROGMEM = " №131.";
const char string_131[] PROGMEM = " №132."; 
const char string_132[] PROGMEM = " №133.";
const char string_133[] PROGMEM = " №134.";
const char string_134[] PROGMEM = " №135.";
const char string_135[] PROGMEM = " №136.";
const char string_136[] PROGMEM = " №137.";
const char string_137[] PROGMEM = " №138."; // 
const char string_138[] PROGMEM = " №139.";
const char string_139[] PROGMEM = " №140.";
const char string_140[] PROGMEM = " №141.";
const char string_141[] PROGMEM = " №142.";
const char string_142[] PROGMEM = " №143.";
const char string_143[] PROGMEM = " №144."; //
const char string_144[] PROGMEM = " №145.";
const char string_145[] PROGMEM = " №146.";
const char string_146[] PROGMEM = " №147.";
const char string_147[] PROGMEM = " №148.";
const char string_148[] PROGMEM = " №149.";
const char string_149[] PROGMEM = " №150.";  
const char string_150[] PROGMEM = " №151.";
const char string_151[] PROGMEM = " №152.";
const char string_152[] PROGMEM = " №153.";
const char string_153[] PROGMEM = " №154.";
const char string_154[] PROGMEM = " №155.";
const char string_155[] PROGMEM = " №156.";  
const char string_156[] PROGMEM = " №157.";
const char string_157[] PROGMEM = " №158.";
const char string_158[] PROGMEM = " №159.";
const char string_159[] PROGMEM = " №160.";
const char string_160[] PROGMEM = " №161.";
const char string_161[] PROGMEM = " №162.";  
const char string_162[] PROGMEM = " №163.";
const char string_163[] PROGMEM = " №164.";
const char string_164[] PROGMEM = " №165.";
const char string_165[] PROGMEM = " №166.";
const char string_166[] PROGMEM = " №167.";
const char string_167[] PROGMEM = " №168.";
const char string_168[] PROGMEM = " №169.";
const char string_169[] PROGMEM = " №170.";
const char string_170[] PROGMEM = " №171.";
const char string_171[] PROGMEM = " №172. ";
const char string_172[] PROGMEM = " №173.А";
const char string_173[] PROGMEM = " №174.";  
const char string_174[] PROGMEM = " №175.";
const char string_175[] PROGMEM = " №176.А";
const char string_176[] PROGMEM = " №177.А";
const char string_177[] PROGMEM = " №178.";
const char string_178[] PROGMEM = " №179.";
const char string_179[] PROGMEM = " №180."; //  
const char string_180[] PROGMEM = " №181.";
const char string_181[] PROGMEM = " №182.";
const char string_182[] PROGMEM = " №183.";
const char string_183[] PROGMEM = " №184.";
const char string_184[] PROGMEM = " №185.";
const char string_185[] PROGMEM = " №186.";
const char string_186[] PROGMEM = " №187.";
const char string_187[] PROGMEM = " №188.";
const char string_188[] PROGMEM = " №189.";
const char string_189[] PROGMEM = " №190.";
const char string_190[] PROGMEM = " №191.";
const char string_191[] PROGMEM = " №192."; // 
const char string_192[] PROGMEM = " №193.";
const char string_193[] PROGMEM = " №194.";
const char string_194[] PROGMEM = " №195.";
const char string_195[] PROGMEM = " №196.";
const char string_196[] PROGMEM = " №197.";
const char string_197[] PROGMEM = " №198."; //
const char string_198[] PROGMEM = " №199.";
const char string_199[] PROGMEM = " №200.";
const char string_200[] PROGMEM = " №201.";
const char string_201[] PROGMEM = " №202.";
const char string_202[] PROGMEM = " №203.";
const char string_203[] PROGMEM = " №204."; // 
const char string_204[] PROGMEM = " №205.";
const char string_205[] PROGMEM = " №206.";
const char string_206[] PROGMEM = " №207.";
const char string_207[] PROGMEM = " №208.";
const char string_208[] PROGMEM = " №209.";
const char string_209[] PROGMEM = " №210.";  
const char string_210[] PROGMEM = " №211.";
const char string_211[] PROGMEM = " №212.";
const char string_212[] PROGMEM = " №213.";
const char string_213[] PROGMEM = " №214.";
const char string_214[] PROGMEM = " №215.";
const char string_215[] PROGMEM = " №216.";  
const char string_216[] PROGMEM = " №217.";
const char string_217[] PROGMEM = " №218.";
const char string_218[] PROGMEM = " №219.";
const char string_219[] PROGMEM = " №220.";
const char string_220[] PROGMEM = " №221.";
const char string_221[] PROGMEM = " №222."; 
const char string_222[] PROGMEM = " №223.";
const char string_223[] PROGMEM = " №224.";
const char string_224[] PROGMEM = " №225.";
const char string_225[] PROGMEM = " №226.";
const char string_226[] PROGMEM = " №227.";
const char string_227[] PROGMEM = " №228.";
const char string_228[] PROGMEM = " №229."; 
const char string_229[] PROGMEM = " №230.";
const char string_230[] PROGMEM = " №231.";
const char string_231[] PROGMEM = " №232.";
const char string_232[] PROGMEM = " №233.";
const char string_233[] PROGMEM = " №234.";
const char string_234[] PROGMEM = " №235."; 
const char string_235[] PROGMEM = " №236.";
const char string_236[] PROGMEM = " №237.";
const char string_237[] PROGMEM = " №238.";
const char string_238[] PROGMEM = " №239.";
const char string_239[] PROGMEM = " №240.";
const char string_240[] PROGMEM = " №241."; //  
const char string_241[] PROGMEM = " №242.";
const char string_242[] PROGMEM = " №243.";
const char string_243[] PROGMEM = " №244.";
const char string_244[] PROGMEM = " №245.";
const char string_245[] PROGMEM = " №246.";
const char string_246[] PROGMEM = " №247."; 
const char string_247[] PROGMEM = " №248.";
const char string_248[] PROGMEM = " №249.";
const char string_249[] PROGMEM = " №250.";
const char string_250[] PROGMEM = " №251.";
const char string_251[] PROGMEM = " №252.";
const char string_252[] PROGMEM = " №253."; //  
const char string_253[] PROGMEM = " №254.";
const char string_254[] PROGMEM = " №255.";
const char string_255[] PROGMEM = " №256.";
 
const char* const  myStrings_table[] PROGMEM={string_0,string_1,string_2,string_3,string_4,string_5,string_6,string_7,string_8,string_9,string_10,string_11,string_12,
string_13,string_14,string_15,string_16,string_17,string_18,string_19,string_20,string_21,string_22,string_23,string_24,string_25,string_26,string_27,
string_28,string_29,string_30,string_31,string_32,string_33,string_34,string_35,string_36,string_37,string_38,string_39,string_40,string_41,string_42,string_43,
string_44,string_45,string_46,string_47,string_48,string_49,string_50,string_51,string_52,string_53,string_54,string_55,string_56,string_57,string_58,string_59,
string_60,string_61,string_62,string_63,string_64,string_65,string_66,string_67,string_68,string_69,string_70,string_71,string_72,string_73,string_74,string_75,
string_76,string_77,string_78,string_79,string_80,string_81,string_82,string_83,string_84,string_85,string_86,string_87,string_88,string_89,string_90,string_91,
string_92,string_93,string_94,string_95,string_96,string_97,string_98,string_99,string_100,string_101,string_102,string_103,string_104,string_105,string_106,
string_107,string_108,string_109,string_110,string_111,string_112,string_113,string_114,string_115,string_116,string_117,string_118,string_119,string_120,string_121,
string_122,string_123,string_124,string_125,string_126,string_127,string_128,string_129,string_130,string_131,string_132,string_133,string_134,string_135,string_136,
string_137,string_138,string_139,string_140,string_141,string_142,string_143,string_144,string_145,string_146,string_147,string_148,string_149,string_150,string_151,
string_152,string_153,string_154,string_155,string_156,string_157,string_158,string_159,string_160,string_161,string_162,string_163,string_164,string_165,string_166,
string_167,string_168,string_169,string_170,string_171,string_172,string_173,string_174,string_175,string_176,string_177,string_178,string_179,string_180,string_181,
string_182,string_183,string_184,string_185,string_186,string_187,string_188,string_189,string_190,string_191,string_192,string_193,string_194,string_195,string_196,
string_197,string_198,string_199,string_200,string_201,string_201,string_202,string_203,string_204,string_205,string_206,string_207,string_208,string_209,string_210,
string_211,string_212,string_213,string_214,string_215,string_216,string_217,string_218,string_219,string_220,string_221,string_222,string_223,string_224,string_225,
string_226,string_227,string_228,string_229,string_230,string_231,string_232,string_233,string_234,string_235,string_236,string_237,string_238,string_239,string_240,
string_241,string_242,string_243,string_244,string_245,string_246,string_247,string_248,string_249,string_250,string_251,string_252,string_253,string_254,string_255
};

напишите вот так

void print_signal_name(int num) {
char buf[8];
sprintf(buf, "№%d", num);
Serial.print(buf);
}

простейшая функция, печатает "№хх", где xx - введенное число. Это же программирование, учитесь автоматизировать однообразные действия. а не копировать одну и ту же строку 256 раз подряд.

И ВСЕ!!!! И даже прогмем не нужен

psv1962
Offline
Зарегистрирован: 19.06.2019

Спасибо .Та же проблема от 1 до 128 шлейфа вывод нормальный ,а с 129 по 256 входит мусор.

psv1962
Offline
Зарегистрирован: 19.06.2019

Уважаемый b707 под символом № зарезервированное место под 50 символов.Каждая строка это разные сообщения. Вопрос в другом почему 128 строк я вывожу ,другие 128 (с 129по256) не могу вывести. 

b707
Онлайн
Зарегистрирован: 26.05.2017

psv1962 пишет:

Вопрос в другом почему 128 строк я вывожу ,другие 128 (с 129по256) не могу вывести. 

Опять обсуждаем совсем не тот код? Выложите ИМЕННО ТОТ КОД, который вы используете, без всякого упрощения и замены строк.

Я догадываюсь, откуда у вас проблема. Слишком подозрительно круглые числа (в двоичном смысле) у вас - 128 строк показываются. 128 нет. Похоже, что в каком-то месте у вас индекс имеет диапазон 0-127 вместо 0-255. Но этого невозможно понять по выложенному коду - он явно имеет мало общего с действительностью.

Для начала пройдитесь по программе и замените ВЕЗДЕ тип индекса с char. на byte

psv1962
Offline
Зарегистрирован: 19.06.2019

Спасибо .Самое интересное ,что код кнопки int от 0 до 255 выводится ,а char  символы  нет.

b707
Онлайн
Зарегистрирован: 26.05.2017

psv1962 пишет:

Спасибо .Самое интересное ,что код кнопки int от 0 до 255 выводится ,а char  символы  нет.

ничего удивительного, у вас же в программе не один индекс. Хотите помощи - выкладывайте полный код. а не кастрированный

psv1962
Offline
Зарегистрирован: 19.06.2019
#include <Keypad.h>
#include <pgmspace.h>
const byte ROWS = 16; //16   rows
const byte COLS = 16; //16 columns
char buffer[256] ;
//  const short const char
unsigned char keys[16][16] = {  
  { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0},
  { 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,16},
  { 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,32},
  { 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,48},
  { 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65,64},
  { 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81,80},  
  { 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97,96},
  { 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113,112},
  { 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129,128},
  { 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145,144},
  { 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161,160},
  { 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177,176},
  { 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193,192},
  { 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209,208},
  { 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225,224}, 
  { 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241,240} 
  };
const char string_0[] PROGMEM = " 1."; //  1
const char string_1[] PROGMEM = " 2.";
const char string_2[] PROGMEM = " 3.";
const char string_3[] PROGMEM = " 4.";
const char string_4[] PROGMEM = " 5.";
const char string_5[] PROGMEM = " 6.";
const char string_6[] PROGMEM = " 7."; //  
const char string_7[] PROGMEM = " 8.";
const char string_8[] PROGMEM = " 9.";
const char string_9[] PROGMEM = " 10.";
const char string_10[] PROGMEM = " 11.";
const char string_11[] PROGMEM = " 12.";
const char string_12[] PROGMEM = " 13."; //  
const char string_13[] PROGMEM = " 14.";
const char string_14[] PROGMEM = " 15.";
const char string_15[] PROGMEM = " 16.";
const char string_16[] PROGMEM = " 17.";
const char string_17[] PROGMEM = " 18.";
const char string_18[] PROGMEM = " 19."; //  
const char string_19[] PROGMEM = " 20.";
const char string_20[] PROGMEM = " 21.";
const char string_21[] PROGMEM = " 22.";
const char string_22[] PROGMEM = " 23.";
const char string_23[] PROGMEM = " 24."; // 
const char string_24[] PROGMEM = " 25.";
const char string_25[] PROGMEM = " 26.";
const char string_26[] PROGMEM = " 27.";
const char string_27[] PROGMEM = " 28.";
const char string_28[] PROGMEM = " 29.";
const char string_29[] PROGMEM = " 30."; 
const char string_30[] PROGMEM = " 31.";
const char string_31[] PROGMEM = " 32.";
const char string_32[] PROGMEM = " 33.";
const char string_33[] PROGMEM = " 34.";
const char string_34[] PROGMEM = " 35.";
const char string_35[] PROGMEM = " 36.";  
const char string_36[] PROGMEM = " 37.";
const char string_37[] PROGMEM = " 38.";
const char string_38[] PROGMEM = " 39.";
const char string_39[] PROGMEM = " 40.";
const char string_40[] PROGMEM = " 41.";
const char string_41[] PROGMEM = " 42.";
const char string_42[] PROGMEM = " 43.";
const char string_43[] PROGMEM = " 44." ;
const char string_44[] PROGMEM = " 45.";
const char string_45[] PROGMEM = " 46.";
const char string_46[] PROGMEM = " 47.";
const char string_47[] PROGMEM = " 48.";
const char string_48[] PROGMEM = " 49.";
const char string_49[] PROGMEM = " 50.";
const char string_50[] PROGMEM = " 51.";
const char string_51[] PROGMEM = " 52.";
const char string_52[] PROGMEM = " 53.";
const char string_53[] PROGMEM = " 54.";
const char string_54[] PROGMEM = " 55.";
const char string_55[] PROGMEM = " 56.";
const char string_56[] PROGMEM = " 57.";
const char string_57[] PROGMEM = " 58.";
const char string_58[] PROGMEM = " 59.";
const char string_59[] PROGMEM = " 60."; //
const char string_60[] PROGMEM = " 61.";
const char string_61[] PROGMEM = " 62.";
const char string_62[] PROGMEM = " 63.";
const char string_63[] PROGMEM = " 64.";
const char string_64[] PROGMEM = " 65.";
const char string_65[] PROGMEM = " 66."; // 
const char string_66[] PROGMEM = " 67.";
const char string_67[] PROGMEM = " 68.";
const char string_68[] PROGMEM = " 69.";
const char string_69[] PROGMEM = " 70.";
const char string_70[] PROGMEM = " 71.";
const char string_71[] PROGMEM = " 72."; // 
const char string_72[] PROGMEM = " 73.";
const char string_73[] PROGMEM = " 74.";
const char string_74[] PROGMEM = " 75." ;
const char string_75[] PROGMEM = " 76.";
const char string_76[] PROGMEM = " 77.";
const char string_77[] PROGMEM = " 78."; //
const char string_78[] PROGMEM = " 79.";
const char string_79[] PROGMEM = " 80.";
const char string_80[] PROGMEM = " 81.";
const char string_81[] PROGMEM = " 82.";
const char string_82[] PROGMEM = " 83.";
const char string_83[] PROGMEM = " 84."; // 
const char string_84[] PROGMEM = " 85.";
const char string_85[] PROGMEM = " 86.";
const char string_86[] PROGMEM = " 87.";
const char string_87[] PROGMEM = " 88.";
const char string_88[] PROGMEM = " 89.";
const char string_89[] PROGMEM = " 90.";  
const char string_90[] PROGMEM = " 91.";
const char string_91[] PROGMEM = " 92.";
const char string_92[] PROGMEM = " 93.";
const char string_93[] PROGMEM = " 94.";
const char string_94[] PROGMEM = " 95.";
const char string_95[] PROGMEM = " 96.";
const char string_96[] PROGMEM = " 97.";  
const char string_97[] PROGMEM = " 98.";
const char string_98[] PROGMEM = " 99.";
const char string_99[] PROGMEM = " 100.";
const char string_100[] PROGMEM = " 101.";
const char string_101[] PROGMEM = " 102.";
const char string_102[] PROGMEM = " 103.";  
const char string_103[] PROGMEM = " 104.";
const char string_104[] PROGMEM = " 105.";
const char string_105[] PROGMEM = " 106.";
const char string_106[] PROGMEM = " 107.";
const char string_107[] PROGMEM = " 108.";
const char string_108[] PROGMEM = " 109."; 
const char string_109[] PROGMEM = " 110.";
const char string_110[] PROGMEM = " 111.";
const char string_111[] PROGMEM = " 112.";
const char string_112[] PROGMEM = " 113.";
const char string_113[] PROGMEM = " 114.";
const char string_114[] PROGMEM = " 115."; 
const char string_115[] PROGMEM = " 116.";
const char string_116[] PROGMEM = " 117.";
const char string_117[] PROGMEM = " 118.";
const char string_118[] PROGMEM = " 119.";
const char string_119[] PROGMEM = " 120."; // 
const char string_120[] PROGMEM = " 121.";
const char string_121[] PROGMEM = " 122.";
const char string_122[] PROGMEM = " 123.";
const char string_123[] PROGMEM = " 124.";
const char string_124[] PROGMEM = " 125.";
const char string_125[] PROGMEM = " 126.";
const char string_126[] PROGMEM = " 127."; //  
const char string_127[] PROGMEM = " 128.";
const char string_128[] PROGMEM = " 129.";
const char string_129[] PROGMEM = " 130.";
const char string_130[] PROGMEM = " 131.";
const char string_131[] PROGMEM = " 132."; 
const char string_132[] PROGMEM = " 133.";
const char string_133[] PROGMEM = " 134.";
const char string_134[] PROGMEM = " 135.";
const char string_135[] PROGMEM = " 136.";
const char string_136[] PROGMEM = " 137.";
const char string_137[] PROGMEM = " 138."; // 
const char string_138[] PROGMEM = " 139.";
const char string_139[] PROGMEM = " 140.";
const char string_140[] PROGMEM = " 141.";
const char string_141[] PROGMEM = " 142.";
const char string_142[] PROGMEM = " 143.";
const char string_143[] PROGMEM = " 144."; //
const char string_144[] PROGMEM = " 145.";
const char string_145[] PROGMEM = " 146.";
const char string_146[] PROGMEM = " 147.";
const char string_147[] PROGMEM = " 148.";
const char string_148[] PROGMEM = " 149.";
const char string_149[] PROGMEM = " 150.";  
const char string_150[] PROGMEM = " 151.";
const char string_151[] PROGMEM = " 152.";
const char string_152[] PROGMEM = " 153.";
const char string_153[] PROGMEM = " 154.";
const char string_154[] PROGMEM = " 155.";
const char string_155[] PROGMEM = " 156.";  
const char string_156[] PROGMEM = " 157.";
const char string_157[] PROGMEM = " 158.";
const char string_158[] PROGMEM = " 159.";
const char string_159[] PROGMEM = " 160.";
const char string_160[] PROGMEM = " 161.";
const char string_161[] PROGMEM = " 162.";  
const char string_162[] PROGMEM = " 163.";
const char string_163[] PROGMEM = " 164.";
const char string_164[] PROGMEM = " 165.";
const char string_165[] PROGMEM = " 166.";
const char string_166[] PROGMEM = " 167.";
const char string_167[] PROGMEM = " 168.";
const char string_168[] PROGMEM = " 169.";
const char string_169[] PROGMEM = " 170.";
const char string_170[] PROGMEM = " 171.";
const char string_171[] PROGMEM = " 172. ";
const char string_172[] PROGMEM = " 173.";
const char string_173[] PROGMEM = " 174.";  
const char string_174[] PROGMEM = " 175.";
const char string_175[] PROGMEM = " 176.";
const char string_176[] PROGMEM = " 177.";
const char string_177[] PROGMEM = " 178.";
const char string_178[] PROGMEM = " 179.";
const char string_179[] PROGMEM = " 180."; //  
const char string_180[] PROGMEM = " 181.";
const char string_181[] PROGMEM = " 182.";
const char string_182[] PROGMEM = " 183.";
const char string_183[] PROGMEM = " 184.";
const char string_184[] PROGMEM = " 185.";
const char string_185[] PROGMEM = " 186.";
const char string_186[] PROGMEM = " 187.";
const char string_187[] PROGMEM = " 188.";
const char string_188[] PROGMEM = " 189.";
const char string_189[] PROGMEM = " 190.";
const char string_190[] PROGMEM = " 191.";
const char string_191[] PROGMEM = " 192."; // 
const char string_192[] PROGMEM = " 193.";
const char string_193[] PROGMEM = " 194.";
const char string_194[] PROGMEM = " 195.";
const char string_195[] PROGMEM = " 196.";
const char string_196[] PROGMEM = " 197.";
const char string_197[] PROGMEM = " 198."; //
const char string_198[] PROGMEM = " 199.";
const char string_199[] PROGMEM = " 200.";
const char string_200[] PROGMEM = " 201.";
const char string_201[] PROGMEM = " 202.";
const char string_202[] PROGMEM = " 203.";
const char string_203[] PROGMEM = " 204."; // 
const char string_204[] PROGMEM = " 205.";
const char string_205[] PROGMEM = " 206.";
const char string_206[] PROGMEM = " 207.";
const char string_207[] PROGMEM = " 208.";
const char string_208[] PROGMEM = " 209.";
const char string_209[] PROGMEM = " 210.";  
const char string_210[] PROGMEM = " 211.";
const char string_211[] PROGMEM = " 212.";
const char string_212[] PROGMEM = " 213.";
const char string_213[] PROGMEM = " 214.";
const char string_214[] PROGMEM = " 215.";
const char string_215[] PROGMEM = " 216.";  
const char string_216[] PROGMEM = " 217.";
const char string_217[] PROGMEM = " 218.";
const char string_218[] PROGMEM = " 219.";
const char string_219[] PROGMEM = " 220.";
const char string_220[] PROGMEM = " 221.";
const char string_221[] PROGMEM = " 222."; 
const char string_222[] PROGMEM = " 223.";
const char string_223[] PROGMEM = " 224.";
const char string_224[] PROGMEM = " 225.";
const char string_225[] PROGMEM = " 226.";
const char string_226[] PROGMEM = " 227.";
const char string_227[] PROGMEM = " 228.";
const char string_228[] PROGMEM = " 229."; 
const char string_229[] PROGMEM = " 230.";
const char string_230[] PROGMEM = " 231.";
const char string_231[] PROGMEM = " 232.";
const char string_232[] PROGMEM = " 233.";
const char string_233[] PROGMEM = " 234.";
const char string_234[] PROGMEM = " 235."; 
const char string_235[] PROGMEM = " 236.";
const char string_236[] PROGMEM = " 237.";
const char string_237[] PROGMEM = " 238.";
const char string_238[] PROGMEM = " 239.";
const char string_239[] PROGMEM = " 240.";
const char string_240[] PROGMEM = " 241."; //  
const char string_241[] PROGMEM = " 242.";
const char string_242[] PROGMEM = " 243.";
const char string_243[] PROGMEM = " 244.";
const char string_244[] PROGMEM = " 245.";
const char string_245[] PROGMEM = " 246.";
const char string_246[] PROGMEM = " 247."; 
const char string_247[] PROGMEM = " 248.";
const char string_248[] PROGMEM = " 249.";
const char string_249[] PROGMEM = " 250.";
const char string_250[] PROGMEM = " 251.";
const char string_251[] PROGMEM = " 252.";
const char string_252[] PROGMEM = " 253."; //  
const char string_253[] PROGMEM = " 254.";
const char string_254[] PROGMEM = " 255.";
const char string_255[] PROGMEM = " 256.";

const char* const  myStrings_table[] PROGMEM={string_0,string_1,string_2,string_3,string_4,string_5,string_6,string_7,string_8,string_9,string_10,string_11,string_12,
string_13,string_14,string_15,string_16,string_17,string_18,string_19,string_20,string_21,string_22,string_23,string_24,string_25,string_26,string_27,
string_28,string_29,string_30,string_31,string_32,string_33,string_34,string_35,string_36,string_37,string_38,string_39,string_40,string_41,string_42,string_43,
string_44,string_45,string_46,string_47,string_48,string_49,string_50,string_51,string_52,string_53,string_54,string_55,string_56,string_57,string_58,string_59,
string_60,string_61,string_62,string_63,string_64,string_65,string_66,string_67,string_68,string_69,string_70,string_71,string_72,string_73,string_74,string_75,
string_76,string_77,string_78,string_79,string_80,string_81,string_82,string_83,string_84,string_85,string_86,string_87,string_88,string_89,string_90,string_91,
string_92,string_93,string_94,string_95,string_96,string_97,string_98,string_99,string_100,string_101,string_102,string_103,string_104,string_105,string_106,
string_107,string_108,string_109,string_110,string_111,string_112,string_113,string_114,string_115,string_116,string_117,string_118,string_119,string_120,string_121,
string_122,string_123,string_124,string_125,string_126,string_127,string_128,string_129,string_130,string_131,string_132,string_133,string_134,string_135,string_136,
string_137,string_138,string_139,string_140,string_141,string_142,string_143,string_144,string_145,string_146,string_147,string_148,string_149,string_150,string_151,
string_152,string_153,string_154,string_155,string_156,string_157,string_158,string_159,string_160,string_161,string_162,string_163,string_164,string_165,string_166,
string_167,string_168,string_169,string_170,string_171,string_172,string_173,string_174,string_175,string_176,string_177,string_178,string_179,string_180,string_181,
string_182,string_183,string_184,string_185,string_186,string_187,string_188,string_189,string_190,string_191,string_192,string_193,string_194,string_195,string_196,
string_197,string_198,string_199,string_200,string_201,string_201,string_202,string_203,string_204,string_205,string_206,string_207,string_208,string_209,string_210,
string_211,string_212,string_213,string_214,string_215,string_216,string_217,string_218,string_219,string_220,string_221,string_222,string_223,string_224,string_225,
string_226,string_227,string_228,string_229,string_230,string_231,string_232,string_233,string_234,string_235,string_236,string_237,string_238,string_239,string_240,
string_241,string_242,string_243,string_244,string_245,string_246,string_247,string_248,string_249,string_250,string_251,string_252,string_253,string_254,string_255
};
 // подключаемся к ряду 
byte rowPins[ROWS] = { 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, A0, A1, A2, A3}; //  A3, A2, A1, A0, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38 
//подключить к колонке 
byte colPins[COLS] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}; //      37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

unsigned long loopCount;
unsigned long startTime;
String msg;
#define FSH_P(p) (reinterpret_cast<const __FlashStringHelper *>(p))

void setup() {

  pinMode(13, OUTPUT);
  Serial.begin(9600);
  loopCount = 0;
  startTime = millis();
  msg = "";
}

void loop() {
  digitalWrite(13, LOW);
  
  loopCount++;
  
  if ( (millis() - startTime) > 5000 ) {
  ////  Serial.print("Average loops per second = ");    Serial.println(loopCount / 5);
    startTime = millis();
    loopCount = 0;
  }
  

  // Fills kpd.key[ ] array with up-to 10 active keys.  массив до 10 активных ключей
  // Returns true if there are ANY active keys.Возвращает true, если есть ЛЮБЫЕ активные ключи.
  if (kpd.getKeys())
  {
    for (int i = 0; i < LIST_MAX; i++) // Scan the whole key list.Сканируем весь список ключей.
    {
      if ( kpd.key[i].stateChanged )   // Only find keys that have changed state.Находим только те ключи, состояние которых изменилось.
      {
        switch (kpd.key[i].kstate) {  //  Сообщение об активном состоянии ключа Report active key state : IDLE, PRESSED, HOLD, or RELEASED
          case PRESSED:            msg = " включен :";            break;// "включено " "PRESSED.
          case HOLD:            msg = " HOLD.";            break;
          case IDLE:            msg = " IDLE.";break;
          case RELEASED:            msg =" выключен :" ; //   " "      RELEASED.
        }
        if((msg == " включен :")||(msg == " выключен :"))  //" " " "PRESSED.RELEASED.
        {
        
        Serial.print("ШЛЕЙФ ");
        Serial.print(msg);
       //Serial.println(kpd.key[i].kcode);//kcode kstate kchar
       
      
        strcpy_P(buffer, (char*)pgm_read_word(&(myStrings_table[kpd.key[i].kchar])));//вывод в buffer
    Serial.println(buffer);
     //Serial.print("  code button ");     Serial.println(kpd.key[i].kcode);//kcode kstate kchar вывод код кнопки 
        }
      }
    }
  }
}

 

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Это какой то паноптикум....

b707
Онлайн
Зарегистрирован: 26.05.2017

psv1962 - вам заняться нечем? зачем вы снова выложили тот же код? Где у вас строки нормальные?

И научитесь уже правильно вставлять код в сообщение!

кстати. что за ардуина у вас?

psv1962
Offline
Зарегистрирован: 19.06.2019

Мега 2560

psv1962
Offline
Зарегистрирован: 19.06.2019

KindMan
Offline
Зарегистрирован: 19.12.2018

Я же вам ответил в 34 посте. Если не поняли, то уточню - kchar имеет тип char, и физически не сможет быть больше 127.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

b707 пишет:

psv1962 - вам заняться нечем? зачем вы снова выложили тот же код? Где у вас строки нормальные?

И научитесь уже правильно вставлять код в сообщение!

кстати. что за ардуина у вас?

Я снова хочу напомнить, что мы неоднократно договаривались ВООБЩЕ не отвечать на сообщения с неправильно вставленным кодом.