Неужели нельзя что-нибудь придумать

Сейчас посыплются удары на мою голову, но все же спрошу.

Есть ли возможность программным путем изменить число 2, например, на число 10?

const int PROGMEM x[]={1,2,3,4};

Есть, умею подменять переменные через указатели, @ua6em умеет более кардинальные вещи, боюсь рассказывать не захочет, ибо …

Мне на ум приходит только одно. Посмотреть адрес в hex - файле, куда идет размещение PROGMEM… Но это не точно.

x[1] * 5

Речь идет о PROGMEM.

какая разница?

Мне надо ПОМЕНЯТЬ некоторые элементы (числа), которые уже размещены в PROGMEM. Сделать это программным путем. Где-то в инете было написано, что это сложно, но можно. Но не было написано как это делается.

(сообщение удалено автором)

тут стало опасно помогать, могут отпинать…
с другой стороны ночь… может и не заметят

#include <avr/pgmspace.h>
const int PROGMEM x[] = {1, 2, 3, 4}; // Исходный массив
const int size = sizeof(x) / sizeof(x[0]); // Размер массива
int y[size]; // Новый массив для хранения изменённых значений

void setup() {
Serial.begin(9600);
for (int i = 0; i < size; i++) {// Копируем значения из старого массива в новый, изменяя 2 на 10
int value = pgm_read_word(&(x[i])); // Чтение значения из PROGMEM
if (value == 2) {
y[i] = 10; // Заменяем 2 на 10
} else {
y[i] = value; // Копируем остальные значения
}
}
// Выводим значения нового массива
for (int i = 0; i < size; i++) {
Serial.print("y[");
Serial.print(i);
Serial.print("]: ");
Serial.println(y[i]);
}
}

void loop() {
  // Ваш код
}

подходит ?)))
и при работе вроде незя изменить… но можно создать новый…

а разве незя сделать массив из 4рех переменных ?
int val1=1;
int val2=2;
int val3=3;
int val4=4;
const int PROGMEM x = {val1, val2, val3, val4}; // Исходный массив

Фокус -покус)). А если выключить питание и включить?

Я с этим до конца не разобрался, т.к. для меня это не актуально пока. Но, вроде как,
для этого придётся прикинуться загрузчиком.
Это Вам даташит читать надо про Self-Programming

P.S. А если нужны большие массивы , в которых предполагается изменять данные - используйте внешнюю EEPROM

сбросится, а потом по новой в новом массиве поставится)))
из первого токо начальные данные берем…
надо сохранить, так надо постоянно записывать новые значения, и придумать условие по которому будет грузить не из первого массива а сохраненные значения в eeprom…

а вообще я упился энергетиками)))) и меня слушать не надо)))

Ну, понятно, типа как “теневой массив”. Гениально)))

я слишком гениален для того что бы с такой фигней не сталкиваться))) а делать все иначе…
и это же помещение данных во флеш память ? вот зачем их туда совать ?)))
и если кто их изменит… и поделится кодом, то я тогда смогу наверное рацию собрать на ардуино)))

берем данные от туда, потом создаем новый массив и вносим изменения из eeprom при загрузке, а туда пихаем периодически новые значения… вот и все)))
а надо изменить при работе… то берем создаем новый массив, и меняем так например…
и работаем с новым массивом, а не с тем…
после перезагрузке все скинется…