Добрый вечер,
Решил тут старый проект под менюшку переделать.
Создаю массив с пунктами меню.
char* strMainMenu1[4][16] = {" MAIN MENU ",
" CAPACITY ",
" TIME ",
" RESET TIME "};
//Display Menu Option based on Index.
void displayMenu(int x) {
for(uint8_t i = 0; i<LCD_LINES; i++)
{
lcd.setCursor(0, i);
lcd.print(strMainMenu1[i][0]);
}
}
выводится правильно только первая строка... Подскажите, что здесь не правильно?
Вопрос по строкам.
Re: Вопрос по строкам.
Здравствуйте!
char* strMainMenu1 это массив указателей на строки. 4 строки значит 4 указателя, значит 4 элемента массива. Зачем здесь двумерный массив.
Если оставить двумерный массив, то так, но большая часть его останется пустым.
Массивы строк объявляют как массив указателей. Это связано с тем, что строки могут иметь разную длину, и приходится резервировать двумерный массив данных, рассчитанный на самую длинную строку. А указатели требуют одинаковое количество ячеек памяти.
char* strMainMenu1 это массив указателей на строки. 4 строки значит 4 указателя, значит 4 элемента массива. Зачем здесь двумерный массив.
Код: Выделить всё
char* strMainMenu1[4] = {" MAIN MENU ",
" CAPACITY ",
" TIME ",
" RESET TIME "};
//Display Menu Option based on Index.
void displayMenu(int x) {
for(uint8_t i = 0; i<LCD_LINES; i++)
{
lcd.setCursor(0, i);
lcd.print(strMainMenu1[i]);
}
}
Если оставить двумерный массив, то так, но большая часть его останется пустым.
Код: Выделить всё
lcd.print(strMainMenu1[0][i]);
Массивы строк объявляют как массив указателей. Это связано с тем, что строки могут иметь разную длину, и приходится резервировать двумерный массив данных, рассчитанный на самую длинную строку. А указатели требуют одинаковое количество ячеек памяти.
- БлудныйКот
- Сообщения: 45
- Зарегистрирован: 29 дек 2016, 16:19
Re: Вопрос по строкам.
Спасибо, теперь понял и всё работает.
Я думал, что я объявил массив на 4 строки и каждая по 16 символов. Как раз для дисплея 1602 или 1604.
Я думал, что я объявил массив на 4 строки и каждая по 16 символов. Как раз для дисплея 1602 или 1604.
Вернуться в «Программирование Ардуино»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей