Вывод на LCD из массива в теле цикла и без цикла.
- Войдите на сайт для отправки комментариев
Ср, 13/11/2013 - 14:10
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); char* main_Menu[] PROGMEM = {"Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", }; void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.clear(); for (byte i=0; i<4; i++) { lcd.setCursor(1, i); lcd.print (main_Menu[i]); } delay (1000); }
Выводит на экра кракозабру в позиции 0, 0; 0,1; 0, 2; 0, 3;
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); char* main_Menu[] PROGMEM = {"Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", }; void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.clear(); lcd.setCursor(1, 0); lcd.print (main_Menu[0]); lcd.setCursor(1, 1); lcd.print (main_Menu[1]); lcd.setCursor(1, 2); lcd.print (main_Menu[2]); lcd.setCursor(1, 3); lcd.print (main_Menu[3]); delay (1000); }
Выводит нормальным текстом.
Где подвох?
заменить на:
заменить на:
Когда начинаете чем то пользоваться, надо читать как этим пользоваться PROGMEM
Когда начинаете чем то пользоваться, надо читать как этим пользоваться PROGMEM
Максим ворчливый, но всегда помогает.
Спасибо!
Это не ворчание, а совет с какой стороны нудно подходить к проблеме, и там в цикле должно быть 4 ,а не 5, так как у вас 4 строки.
Maksim еще вопрос.
Насколько вообще справедливо и полезно в данном случае использовать флеш память? Возможно менее нагруженно будет char* ?
И там в цикле должно быть 4 ,а не 5, так как у вас 4 строки.
в моем исходнике 4.
В кокретном привере без разницы, а вот когда программа разростается и встает вопрос о нехватке оперативной памяти, тогда это просто необходимо.
В кокретном привере без разницы, а вот когда программа разростается и встает вопрос о нехватке оперативной памяти, тогда это просто необходимо.
тогда в PROGMEM, т.к. после блока меню будем разрастаться.
Добрый день! Пытаюсь адаптировать код Maksima под себя
mega2560, IDE1.5.4
Не выводится 4-я строка!
А код ingener.solovyev
- выводит все строки.
Добрый день! Пытаюсь адаптировать код Maksima под себя
mega2560, IDE1.5.4
Не выводится 4-я строка!
А код ingener.solovyev
- выводит все строки.
возможно функция lcd.clear вызванная более 25 раз в секунду не дает нормально отобразиться 4-й строке, и даже мерцание ее происходит с такой частотой, что глаз его не распознает. Попробейте хотя бы, пока delay (1000); в код Максима и по смотрите появится ли 4-ая строка.
Вы имеете ввиду добавить delay после lcd.clear? - поставил 5 секунд - результат тот же