Arduino и PROGMEM
- Войдите на сайт для отправки комментариев
Втр, 25/09/2018 - 00:10
Добрый вечер!
Прощу помощи у опытных юзеров!
Уже обращался с этим вопросом, получил пинок нужном направлении, однако усвоил не до конца.
Суть: Нужен проверщик ответов. Т.е. заранее прописываем правильные ответы, задаем вопросы, проверяем, и выводим на дисплей результат. Если ответ правильный - переходим к следующему. В арсенале ардуинка, 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;
}
}
}
Суть проблеммы: не вижу свою ошибку. Вроде-бы умные люди мне показали как надо, я подправил под свои нужны, а все-равно не работает.
Как сделать "Проверщик ответов"?
Для начала запишите желаемый алгоритм работы по-русски.
Пишу: после подачи питания на ардуино на lcd (1602, подключен по i2c) пользователя встречает надпись: «Первый вопрос» в первой строке и «A B C D» во второй. Пользователь на мембранной клавиатуре (та что с цифрами 0-9, *#, и буквами A-D) выбирает, по его мнению, правильный ответ. Ответ пользотателя сверяется с записанным ранее в код ответом для первого вопроса, выводит на дисплей «ПРАВИЛЬНО» (если ответ пользователя совпадает с записанным в код ответом для первого вопроса) в первой строке и «ПРАВИЛЬНЫХ ОТВЕТОВ: 1 из 4» во второй. И переходит ко второму вопросу, какой тоже имеет варианты ответа A B C D, но только один правильный. Если пользователь даст неправильный ответ, на экран выводится «НЕ ПРАВИЛЬНО» в первой строке и «КОЛИЧЕСТВО ЖИЗНЕЙ: 4». Заранее в коде прописывается счетчик жизней. Например 5. Если дан неправильный ответ, количество жизней уменьшается на 1. Если пользователь правильно ответил на большинство вопросов и количество жизней больше нуля, после последнего вопроса па экран выводится: «ПОБЕДА» и програма завершается. Если после какого-то из ответов количество жизней становится равным 0, на экран выводится: «ПОЖАЖЕНИЕ» и програма завершается. Так-же пытаюсь все это упаковать в PROGMEM, так как вопросов планирую делать много.
Помогите, пожалуйста... Понимаю, что не вижу ошибку у себя под носом...
Пользователь на мембранной клавиатуре (та что с цифрами 0-9, *#, и буквами A-D) выбирает, по его мнению, правильный ответ.
Вообще-то подразумевался алгоритм действий программы, а не пользователя.
Не следует путать одно с другим.
Ответ пользотателя сверяется с записанным ранее в код ответом для первого вопроса, выводит на дисплей «ПРАВИЛЬНО» (если ответ пользователя совпадает с записанным в код ответом для первого вопроса) в первой строке и «ПРАВИЛЬНЫХ ОТВЕТОВ: 1 из 4» во второй. И переходит ко второму вопросу, какой тоже имеет варианты ответа A B C D, но только один правильный. Если пользователь даст неправильный ответ, на экран выводится «НЕ ПРАВИЛЬНО» в первой строке и «КОЛИЧЕСТВО ЖИЗНЕЙ: 4». Заранее в коде прописывается счетчик жизней. Например 5. Если дан неправильный ответ, количество жизней уменьшается на 1.
Из этого описания более или менее понятно, что делать при правильном ответе - переходить к следующему вопросу и повторять то же самое для него. Но совершенно непоенятно, что при неправильном. Ладно, уменьшили количество жижней и что дальше?
Если пользователь правильно ответил на большинство вопросов и количество жизней больше нуля,
А разве это независимые условия?
после последнего вопроса па экран выводится: «ПОБЕДА» и програма завершается. Если после какого-то из ответов количество жизней становится равным 0, на экран выводится: «ПОЖАЖЕНИЕ» и програма завершается.
"Программа завершается" - это для ПК, в случае микроконтроллеров программа не завершается никогда.
Для ПК полным высказыванием будет "программа завершается и передает управление ОС", а в случае МК никакой ОС нет и передавать управление некому.
Помогите, пожалуйста... Понимаю, что не вижу ошибку у себя под носом...
Программу можно написать следующим образом:
1. Записать алгоритм работы программы по-русски.
2. Перевести с русского на нужный язык программировангия.
Ваша ошибка заключается в том, что Вы слишком рано взялись за написание текста на Си - еще до того, как сумели внятно и однозначно сформулировать алгоритм по-русски (читай: раньше, чем поняли, как должен работать алгоритм).
добавлю к предыдущему оратору
Den - вы так и не написали, что именно в программе не работает. Все ограничилось рассуждениями о том, что вам дали пинок, но этого недостаточно и что вы "не видите ошибку у себя под носом".
Предлагаете, чтоб каждый, кто зайдет в тему - собирал вашу схему и пробовал программу "вживую". пытаясь разобраться. что же там не работает?
Вы потерялись в входящих и исходящих данных. Советую сначала сделать программу с вводом и выводом на терминал, обкатать ее, а затем добавлять клавиатуры, дисплеи и т.д. Обкатайте основной алгоритм программы, а затем занимайтесь украшательствами.
При неправильном ответе отнимаем одну жизнь и переходим к следующему вопросу.
По поводу количества жизней больще нуля соласен, зависимые.
Программа завершается, имею ввиду что гаснет дисплей и программа больше не принимает и не отдает ничего.
У меня не получается из Progmem достать нужную мне инфу в нужном месте программы. Вот я записываю, что загоняю во флеш память (буфер) фразу «Первый вопрос»:
А вот этим куском кода, найденным на просторах интернета, хочу из буфера достать его и вывести его на дисплей (поправьте меня, если я вкорне неправ)
strcpy_P(buffer, (char*)pgm_read_word(&(questions[i]))); lcd.clear(); lcd.setCursor(0, 0); lcd.print(buffer);а то, что вопрос хранится в массиве question01. а извлекать вы его пытаетесь из массива questions - вас не смущает?
Тут вроде все верно. Я pgm давно не трогал, но танцы с массивом pgm-нутых строк похоже на правильные. В массив questions помещаются указатели на массивы строк.
я бы так написал
Вижу первый косяк, b707, спасибо, исправлю!)
qwone, я человек. В моем первом сообщении указано, что я подключаю библиотеку для работы с lcd 1602 по i2c и использовать кириллицу. Я понимаю, что мои попытки научится и мои ошибки вызывают у Вас ухмылку. Будьте внимательнее. Буду признателен за комментарий по сути.
что я подключаю библиотеку для работы с lcd 1602 по i2c и использовать кириллицу.
Ключевое тут в том, что по умолчанию скетч сохраняется в кодировке UTF-8, в том числе все строки, написанные на русском. Кодировка UTF-8 - до 6 байт на ОДИН символ, чтобы вывести её на дисплей - надо делать дополнительные телодвижения, как правило.
Попробуйте просто: пока написать латиницей тексты - что будет? Латиница в UTF-8 влезает в 1 байт на символ.
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 тут отвечает за развлекательную часть народа. Это похвально, такие люди нужны - без них скучно. В древности даже професия такая была при царском дворе. Никак не припомню, как называлась...
P.S. Не знаю, можно ли тут приводить ссылки на другие форумы
ЛОЛ
это же тот же форум...
Господа, оффтоп: почему у моих предыдущих сообщений такой гиганский шрифт? Как это поправить? И где вообще выбирается размер шрифта?
b707, ничего не знаю, ns1 зачем приставка тогда?))
Вариант. Вопросы и вариант ответы сохранять в sd card flash memory. Взамен, нажимать кнопк для ответа, приложить rfid card. Для дети маленькие – это много интересно. Также от id rfid card вы имеете возможность знать, кто верно ответил. Каждый имеет персональные 4 rfid cards ответы. Возможно отказаться от LCD и применить аndroid tablet.
Отчитываюсь, господа:
#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) при правильном ответе и, сообветственно НЕПРАВИЛЬНО при неправильном?
strarbit, идея шикарная, но поймите, я уже месяц пытаюсь разобраться как простенький проверщик ответов сделать. Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа. Ну я описывал выше. Если на таком простом я не могу ничего толкового сделать, то что уж говорить про RFID?
Отчитываюсь, господа:
Что умеет этот код: Брать фразу: ПЕРВЫЙ ВОПРОС из PROGMEM и держать её на экране в первой строке.
Что еще я хочу от этого кода: Чтоб выводилось во второй строчке A B C D вместе с ПЕРВЫЙ ВОПРОС в первой. Как я указал в начале кода, const char answers - тут находятся правильные ответы.
погодите хотеть что-то еще - давайте разберемся с первым вопросом темы. Я же вам дал пример, как читать из массива PROGMEM, зачем вы его перекорежили? Как вы думаете, что будет читать в буфер приведенная выше строчка кода? - всегда строку "Первый вопрос" и никогда "Второй.." и "Третий..." Если вы спрашиваете - то хотя бы внимательно относитесь к тем ответам, которые вам дают. Тогда, может, и не придется сетовать, что на этом форуме вас не понимают.
Во-вторых, продолжим разбор кода. Для начала про строки в ПРОГМЕМ. Обьясните, зачем вам четыре одинаковых строки "A B C D" - разве нельзя обойтись одной? И в случае вопросов - они все похожи, меняется только первое слово, а второе всегда одинаково. Эффективнее будет хранить отдельно "Первый", "Второй", "Третий"... и отдельно строчку " вопрос", а при выводе просто склеивать числительное и существительное
Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа.
По-моему, это вы что-то не понимаете в отношении форума. Вашу идею с выводом вопросов и ответов форум понял еше в прошлый раз. Непонятно, чего вы ждете от форума в ответ? - что кто-то бросится писать готовый код под это описание? - тут это не принято
ТС решил "удивить" нас своими вопросами. А мы "удивим" его своми ответами.
/*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() { } /**/qwone, спасибо, буду разбираться. Это займет некоторе время...
Что означает аббревиатура ТС?
https://seopult.ru/library/%D0%A2%D0%BE%D0%BF%D0%B8%D0%BA%D1%81%D1%82%D0...
b707, может я что-то делал не так, но по Вашему примеру у меня не получилось... Поковырял немного и получилось.
Так и есть, всегда берет только первый и никогда остальные. Будьте добры, объясните, почему? Я же вверху прописал:
constchar*constquestions[] 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. Как правильно цитировать? Имею ввиду куски сообщения, не всё.
qwone, спасибо, понял
strarbit, идея шикарная, но поймите, я уже месяц пытаюсь разобраться как простенький проверщик ответов сделать. Меня тут или прикидываются, что не понимают, или реально не понимают. Что если на экран выведено ПЕРВЫЙ ВОПРОС и варианты A B C D. Пользователь выбирает правильный, по его мнению и на экран выводится ПРАВИЛЬНО или НЕПРАВИЛЬНО в зависимости от ответа. Ну я описывал выше. Если на таком простом я не могу ничего толкового сделать, то что уж говорить про RFID?
В форум помогают вам советы.
Ваш выбор удобно применить rfid или кнопка. В ваш скетч можно стереть много раз одникаковые слова, больше flash для скетч.
По Вашему примеру
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, без индекса - поэтому всегда получаете только "Первый вопрос"Я у себя так делал
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);Прощу помощи у опытных юзеров!Робота с 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 вывод код кнопки } } } } }У меня нет библиотеки для кнопок, но подозреваю, что там тип char используется, а он максимум 127.
И зачем вы используете 255 раз слово Гараж? Можно же его просто добавлять к строке. А там у вас цифры в основном, их вообще можно не пихать. Букву А добавлять по условию.
Спасибо за ответ.Вместо слов гараж будут дополнительные символы.
Добрый День .Подскажите уважаемые какое количество строк можна записать в PROGMEM.
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:
Добрый День .Подскажите уважаемые какое количество строк можна записать в 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 раз подряд.
И ВСЕ!!!! И даже прогмем не нужен
Спасибо .Та же проблема от 1 до 128 шлейфа вывод нормальный ,а с 129 по 256 входит мусор.
Уважаемый b707 под символом № зарезервированное место под 50 символов.Каждая строка это разные сообщения. Вопрос в другом почему 128 строк я вывожу ,другие 128 (с 129по256) не могу вывести.
Вопрос в другом почему 128 строк я вывожу ,другие 128 (с 129по256) не могу вывести.
Опять обсуждаем совсем не тот код? Выложите ИМЕННО ТОТ КОД, который вы используете, без всякого упрощения и замены строк.
Я догадываюсь, откуда у вас проблема. Слишком подозрительно круглые числа (в двоичном смысле) у вас - 128 строк показываются. 128 нет. Похоже, что в каком-то месте у вас индекс имеет диапазон 0-127 вместо 0-255. Но этого невозможно понять по выложенному коду - он явно имеет мало общего с действительностью.
Для начала пройдитесь по программе и замените ВЕЗДЕ тип индекса с char. на byte
Спасибо .Самое интересное ,что код кнопки int от 0 до 255 выводится ,а char символы нет.
Спасибо .Самое интересное ,что код кнопки int от 0 до 255 выводится ,а char символы нет.
ничего удивительного, у вас же в программе не один индекс. Хотите помощи - выкладывайте полный код. а не кастрированный
#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 вывод код кнопки } } } } }Это какой то паноптикум....
psv1962 - вам заняться нечем? зачем вы снова выложили тот же код? Где у вас строки нормальные?
И научитесь уже правильно вставлять код в сообщение!
кстати. что за ардуина у вас?
Мега 2560
Я же вам ответил в 34 посте. Если не поняли, то уточню - kchar имеет тип char, и физически не сможет быть больше 127.
psv1962 - вам заняться нечем? зачем вы снова выложили тот же код? Где у вас строки нормальные?
И научитесь уже правильно вставлять код в сообщение!
кстати. что за ардуина у вас?
Я снова хочу напомнить, что мы неоднократно договаривались ВООБЩЕ не отвечать на сообщения с неправильно вставленным кодом.