Печать элементов массива символов из PROGMEM
Дано:
const char* PROGMEM names[] = {"Foo","Bar"};
Serial.print(names[0]);
Я получаю вывод мусора. Есть ли какая-нибудь функция, которая будет печатать строку из PROGMEM? Например:
Serial.print(<function name>(names[0]);
@Bob Jones, 👍1
Обсуждение2 ответа
▲ 0
const char PROGMEM b0 = pgm_read_dword(&(names[0]));
Serial.print(b0);
,
@Jorge Royero
PROGMEM
здесь ничего не делает, @Juraj
Смотрите также:
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Ошибка "'Serial' does not name a type"
- Построение графика на Python с использованием Tkinter Canvas
- Команда strtok() с Serial связью
- Как отправить целое число через pyserial с Python на Arduino и получить тот же результат?
- Сделать плату Arduino одновременно и USB-накопителем, и клавиатурой?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Ошибка 'Serial' was not declared in this scope
Это не то, как вы используете [PROGMEM](https://www.arduino.cc/reference/en/language/variables/utilities/progmem /). Вам нужно использовать функции
pgm_read_ *** _near
, @Gerbenваших строк нет в progmem. существует только массив указателей на строки https://www.arduino.cc/reference/en/language/variables/utilities/progmem/, @Juraj
Благодарим вас за ссылку pgm_read_byte_near. Это говорит мне о том, что мне нужно извлекать данные из PROGMEM по байту за раз. Теперь я понимаю, что я до сих пор не знаю, как поместить строки foo и bar в PROGMEM без цикла for во время выполнения. Есть ли способ сделать это во время компиляции?, @Bob Jones
смотрите ссылку в моем комментарии, @Juraj
Вы можете использовать строку (имена [0]), @Learner
Извините за предыдущий комментарий. Для этого мы можем использовать простую библиотеку списков., @Learner