La respuesta corta es no: los datos de PROGMEM son de solo lectura.
Limitaciones de la memoria flash
Lo primero que hay que entender es que la memoria Flash (donde vive el espacio del programa) está diseñada para almacenamiento fijo a largo plazo. Leerlo es muy rápido y preciso. Sin embargo, en términos generales, no puede modificarlo byte a byte (por ejemplo, cambiar una variable específica). Por lo general, debe borrarlo y volver a escribirlo en bloques grandes. Eso lo hace completamente poco práctico para la manipulación en tiempo de ejecución, ya que tendría que almacenar mucha información redundante en otro lugar mientras realiza el ciclo de borrado y escritura.
Lo que PROGMEM hace realmente
Cualquier dato literal especificado en su código (como cadenas y números) siempre reside en el espacio del programa al principio (es decir, en Flash). Sin embargo, cuando su boceto realmente quiere usar esos datos en tiempo de ejecución, normalmente tiene que asignar algo de espacio en SRAM y copiarlo. Eso significa que terminas con dos copias: el original fijo en Flash y la copia temporal en SRAM.
Cuando usa el modificador PROGMEM, le está diciendo que no haga esa segunda copia en SRAM. En cambio, su boceto simplemente accederá al original en Flash. Eso es muy útil si solo tiene que leer los datos, ya que evita las operaciones de asignación y copia.
Sin embargo, copiarlo a SRAM es esencial si desea modificar los datos. Además de las limitaciones de Flash que mencioné anteriormente, también es una cuestión de seguridad de código.
Si puede modificar los datos almacenados en el espacio del programa, entonces, lógicamente, también podría modificar el código almacenado en el espacio del programa. Eso significaría que un simple error (o en teoría un ataque malicioso) podría dar como resultado que su boceto se reescriba parcial o totalmente en tiempo de ejecución. Esto podría tener resultados muy impredecibles, que van desde simplemente dejar de trabajar, hasta dañar / destruir cualquier equipo conectado.
Más información
Puede obtener más información sobre las cosas de PROGMEM de bajo nivel desde aquí:
Una versión anterior del mismo tutorial de PROGMEM está disponible aquí: