Но, я думаю, ты согласишься, что формирование PROGMEM массивов + последующее жонглирование ими гораздо более трудоемкое занятие, нежели с char* [][] лупить в стрим и его наследников.
ТС - Если вы уже сделали отдельные массивы для каждой пары - остался один шаг, разделите их на два отдельных - и все. Сэкономите кучу сил.
sadman41 DedSimen - нет ничего сложного в использовании PROGMEM. разве что набирать руками многа букв :) - но это легко решается заменами #define. Тот же самый "чего-то-там-хелпер" у меня в коде кодируется кодом из трех букв :)
А если надо - и код на Перле можно состряпать, авось больше десятка строк не понадобится
DedSimen - нет ничего сложного в использовании PROGMEM. разве что набирать руками многа букв :) - но это легко решается заменами #define. Тот же самый "чего-то-там-хелпер" у меня в коде кодируется кодом из трех букв :)
Не сильно проще. Работа с массивами PROGMEM на AVR в любом виде - это как китайская резьба по яичной скорлупе.
а што на String?
Очепятка. НЕ String
Не сильно проще. Работа с массивами PROGMEM на AVR в любом виде - это как китайская резьба по яичной скорлупе.
word addr = &ArrayItem[N]; - если сам массив тоже в прогмем, или без & если он в RAM
stroka = (__FlashStringHelper__ *)(pgm_read_word(addr))
и сё. А этот хелпер можно уже и в экран слать, print() его понимает
Семён, я же не клингонец - мне энтого не надо.
Но, я думаю, ты согласишься, что формирование PROGMEM массивов + последующее жонглирование ими гораздо более трудоемкое занятие, нежели с char* [][] лупить в стрим и его наследников.
дак, ТС-у тогда на Мегу нада переходить + 64К ОЗУ подключать. На Меге - можно и String в массивы загонять
не надо никуда переходить, все работает, пока ....... пока меня не появились новые пожелания )
#include "LCD_1602_RUS.h" LCD_1602_RUS lcd(0x27, 16, 2); #include <avr/pgmspace.h> const char string_0[] PROGMEM = "comb - расчёсывать"; const char string_1[] PROGMEM = "stocking - снабжать, чулок"; const char string_2[] PROGMEM = "stomach - живот, смелость"; const char string_3[] PROGMEM = "store - магазин, запас"; const char string_4[] PROGMEM = "street - улица"; const char string_5[] PROGMEM = "sun - солнце"; const char string_6[] PROGMEM = "table - стол"; const char string_7[] PROGMEM = "tail - хвост, выслеживать"; const char string_8[] PROGMEM = "thread - нить, пронизывать"; const char string_9[] PROGMEM = "throat - горло"; const char string_10[] PROGMEM = "thumb - листать, большой палец "; const char string_11[] PROGMEM = "ticket - билет"; const char string_12[] PROGMEM = "toe - палец ноги"; const char string_13[] PROGMEM = "tongue - язык"; const char string_14[] PROGMEM = "tooth - зуб"; const char string_15[] PROGMEM = "town - город "; const char string_16[] PROGMEM = "train - поезд"; const char string_17[] PROGMEM = "tray - поднос"; const char string_18[] PROGMEM = "tree - дерево"; const char string_19[] PROGMEM = "cord - шнур, связывать"; const char string_20[] PROGMEM = "trousers - брюки"; const char string_21[] PROGMEM = "umbrella - зонт"; const char string_22[] PROGMEM = "wall - стена"; const char string_23[] PROGMEM = "watch - часы"; const char string_24[] PROGMEM = "wheel - колесо, вертеть "; const char string_25[] PROGMEM = "whip - кнут, хлестать"; const char string_26[] PROGMEM = "whistle - свист, свистеть"; const char string_27[] PROGMEM = "window - окно "; const char string_28[] PROGMEM = "wing - крыло"; const char string_29[] PROGMEM = "wire - провод"; const char string_30[] PROGMEM = "worm - червь"; const char string_31[] PROGMEM = "angle - угол, поворачивать"; const char string_32[] PROGMEM = "ant - муравей"; const char string_33[] PROGMEM = "apple - яблоко"; const char string_34[] PROGMEM = "arch - арка, дуга, выгибать"; const char string_35[] PROGMEM = "arm - рука, вооружать"; const char string_36[] PROGMEM = "army - армия"; const char string_37[] PROGMEM = "bag - сумка"; const char string_38[] PROGMEM = "ball - мяч"; const char string_39[] PROGMEM = "bank - банк"; const char string_40[] PROGMEM = "basin - бассейн"; const char string_41[] PROGMEM = "basket - корзина"; const char string_42[] PROGMEM = "bath - ванна, купаться"; const char string_43[] PROGMEM = "bed - кровать"; const char string_44[] PROGMEM = "bee - пчела"; const char string_45[] PROGMEM = "bell - колокольчик"; const char string_46[] PROGMEM = "berry - ягода"; const char string_47[] PROGMEM = "bird - птица"; const char string_48[] PROGMEM = "blade - лезвие"; const char string_49[] PROGMEM = "board - доска"; const char string_50[] PROGMEM = "boat - лодка, судно"; const char string_51[] PROGMEM = "bone - кость"; const char string_52[] PROGMEM = "book - книга"; const char string_53[] PROGMEM = "boot - ботинок, загружать"; const char string_54[] PROGMEM = "bottle - бутылка"; const char string_55[] PROGMEM = "box - коробка"; const char string_56[] PROGMEM = "boy - мальчик"; const char string_57[] PROGMEM = "brain - мозг"; const char string_58[] PROGMEM = "brake - тормоз, тормозить"; const char string_59[] PROGMEM = "branch - ветвь, отделение"; const char string_60[] PROGMEM = "brick - кирпич"; const char string_61[] PROGMEM = "bridge - мост"; const char string_62[] PROGMEM = "brush - щётка, кисть"; const char string_63[] PROGMEM = "bucket - ведро, черпать"; const char string_64[] PROGMEM = "bulb - луковица, выпирать"; const char string_65[] PROGMEM = "button - кнопка, застёгивать"; const char string_66[] PROGMEM = "baby - ребёнок, младенец"; const char string_67[] PROGMEM = "cake - пирог"; const char string_68[] PROGMEM = "camera - камера"; const char string_69[] PROGMEM = "card - карта, чесать"; const char string_70[] PROGMEM = "cart - везти"; const char string_71[] PROGMEM = "carriage - вагон"; const char string_72[] PROGMEM = "cat - кот"; const char string_73[] PROGMEM = "chain - цепь, сеть"; const char string_74[] PROGMEM = "cheese - сыр"; const char string_75[] PROGMEM = "chest - грудь, сундук"; const char string_76[] PROGMEM = "chin - подбородок"; const char string_77[] PROGMEM = "church - церковь"; const char string_78[] PROGMEM = "circle - круг"; const char string_79[] PROGMEM = "clock - часы"; const char string_80[] PROGMEM = "cloud - облако"; const char string_81[] PROGMEM = "coat - пальто, покрывать"; const char string_82[] PROGMEM = "collar - воротник, хватать"; // Теперь создаем таблицу с отсылками к этим строкам: const char* const string_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 }; char buffer[30]; // массив был достаточно велик, чтобы вместить даже самую большую строку //int sizeDictionary = sizeof(dictionary) / sizeof(dictionary[0]) ; int varints = 2 ; //сколько предлагать вариантов int randstart ; int sizeDic = 80; void setup() { lcd.init(); // initialize the lcd lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Размер словаря:"); //верхняя строка lcd.setCursor(7, 1); lcd.print(sizeDic) ; // размер словаря delay (1400); lcd.clear() ; lcd.noBacklight(); delay (400); lcd.backlight(); randomSeed(analogRead(0)); } void loop() { randstart = random (0, //sizeDic 80) ; lcd.clear() ; // lcd.setCursor(13, 1); lcd.print(randstart); //нижняя строка // lcd.setCursor(0, 0); strcpy_P(buffer, (char*)pgm_read_word(&(string_table[randstart]))); // необходимые функции и расшифровки, просто скопируйте lcd.print(buffer); //верхняя строка delay (1000); }полученную строку разделяю этим кодом, но как теперь убрать лидирующие и последующие пробелы не нашел? посоветуйте а
lcd.print(strtok (buffer,"-")); lcd.setCursor(0, 1); lcd.print(strtok (NULL,"-"));удалить их в обьявлениях. И память сыканомица.
вижу, уже опоздал с комментами.
ТС - Если вы уже сделали отдельные массивы для каждой пары - остался один шаг, разделите их на два отдельных - и все. Сэкономите кучу сил.
sadman41 DedSimen - нет ничего сложного в использовании PROGMEM. разве что набирать руками многа букв :) - но это легко решается заменами #define. Тот же самый "чего-то-там-хелпер" у меня в коде кодируется кодом из трех букв :)
А если надо - и код на Перле можно состряпать, авось больше десятка строк не понадобится
DedSimen - нет ничего сложного в использовании PROGMEM. разве что набирать руками многа букв :) - но это легко решается заменами #define. Тот же самый "чего-то-там-хелпер" у меня в коде кодируется кодом из трех букв :)
а я знаю.
давно уже себе сделал