Как определить и использовать список/массив символов с помощью Serial.print

Я хочу определить список названий месяцев и получить к нему доступ при печати отчета.

Массив был определен следующим образом:

const char месяцы []= {'Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'};

for (int i=0; i<=11; i++) {

                                 Serial.print(months[i]);
                        }

Попытки:

Я искал помощь в разделе Массивы в документации Arduino, насколько я нашел, никакого объяснения для такого случая не было, но массивы int

Будем благодарны за любую помощь.

, 👍3

Обсуждение

Я просто хочу отметить, что Arduino использует C++. На такие простые вопросы о том, как создавать массивы и получать к ним доступ, можно ответить, прочитав учебник по C++. Нет ничего особенного в том, что код выполняется на Arduino., @Nick Gammon

@NickGammon - спасибо за ответ. Я знаю об этом, но все же не нашел объяснения такому случаю., @Guy . D

Очень хороший. *Я безуспешно пытаюсь определить этот список и получить к нему доступ* - Предлагаю в будущем задавать более четкие вопросы о проблеме. Я вижу, что на самом деле я могу **определить** массив так, как вы это сделали, без ошибок, но я вижу, что у вас возникнут проблемы с **печатью** его, потому что вы использовали одинарные кавычки, а не двойные. Это помогает объяснить, что на самом деле означает «безуспешно». Если бы я сказал: «Я пытался испечь торт, но безуспешно», что бы вы мне посоветовали? Другой рецепт? Другая техника? Лучшая духовка? Лучшие ингредиенты?, @Nick Gammon

Я перепишу это., @Guy . D

@NickGammon - вопрос теперь переписан. Надеюсь, это более понятно и не «не по теме»., @Guy . D

Очень хороший. Я вижу, что есть голоса за повторное открытие вопроса. Большую часть модерации здесь осуществляют участники сообщества, так что посмотрим, что с этим произойдет., @Nick Gammon


1 ответ


Лучший ответ:

6

Вы почти у цели:

  • Используйте символ* вместо символа, символ может содержать только один символ.
  • Используйте " вместо ' (спасибо, Юрай)

Тогда вы получите:

const char* months[] =
 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
,

Только что исправлено :-), обнаружил, что на этом компьютере установлена Arduino., @Michel Keijzers

Библиотека времени использует progmem и одну строку для коротких имен и умножает индекс на 3: https://github.com/PaulStoffregen/Time/blob/master/DateStrings.cpp, @Jot

@Jot, это тоже возможно, тогда вам просто нужна функция для извлечения трех символов; кстати, я не увидел никакой разницы в использовании PROGMEM в моем коде, возможно, это поможет, если это будет всего лишь одна строка (сэкономит 48 байт)., @Michel Keijzers

const char* с уважением[] ={"Спасибо", "вам", "очень", "большое!!"};, @Guy . D

@Guy.D Всегда пожалуйста, @Michel Keijzers