Me gustaria saber si es Array o List, ya que quisiera tomar una variable externa y cargarla en el lugar de digamos "Dos", pero no se por donde comenzar (ademas que creo que tendre que cambiar el const por var), ¿alguien me puede guiar un poco?. Gracias.
PROGMEM hace que se guarde solamente en la memoria flash (o sea que no se vuelca a RAM al iniciar la ejecución), por eso se accede de una forma específica.
Entonces al estar en la flash no puedes modificar ningún valor.
Además está declarado const por lo que es de solo lectura.
En tu ejemplo no cambia nada porque está en flash pero si no lo estuviese
const char ssid[][33] = {
tampoco podrías alterar ningún valor porque el array almacena valores constantes.
Para que sea un array "normal" simplemente lo declaras
Porque el array ssid[1] tiene definida una longitud de 33 caracteres.
Y aunque "Uno" tiene 4 caracteres (porque se añade un caracter 0 como final de cadena) igual se ocuparán 33 bytes.
Te sugiero que googlees "arrays arduino" y/o "operaciones con arrays arduino" para profundizar en el tema.
Esto no es una asignación de un valor, sino la creación de una nueva variable de tipo. Cada vez que el nombre de una variable va precedido de su tipo, se crea una nueva variable.
int x = 3;
Para asignar un valor a una variable ya existente, debe escribir así
no tratan de asignar valores a elementos de un array, sino de crear nuevas arrays bidimensionales. Dado que está intentando crear muchas arrays con el mismo nombre, el código generará un error al compilar
Pero no dices nada del código que te propuse?
Tienes todo resuelto y vuelves a la carga con errores conceptuales.
Entiendo que tal vez esa sea la verdadera razón del post pero trabaja sobre algo que SI funciona.
Como te han dicho, PROGMEM es para almacenar datos y solo leerlos, no se pueden modificar. se guardan al momento de compilar y luego se usan en modo solo lectura.
Lo que te propuse ocupa memoria SRAM.
Si quieres hacerlo mas dinámico se pueden usar punteros pero no quise meterme ahi porque me pareció demasiado en este momento.
Dim ssidList as Array (es Array as String, pero dejemoslo asi para entendernos).
Dim Dato1, Dato2 as String
Dato1 = SensorX
Dato2 = SensorY
ssidList.Add(Dato1)
ssidList.Add(Dato2)
Pues bueno, estudiando mucho el codigo que quiero modificar (mas a muchos topes en la cabeza por parte del entendimiento de Arduino), llegue a la conclusión de que @Surbyte tenia razon, char es para un byte (o una letra), lo que yo queria hacer era un String (en basic no habia habido tanta complicación con estas dos cosas).
Ciertamente trabajar sobre el String seria lo ideal, pero el programa sobre el que estoy trabajando ya tiene definido el leer un char (aunque no entiendo como en el programa dado usan un char con cadenas).
Creo que no podre usar los strings como quiero, ya que hay una funcion que al parecer hace uso de PROGMEM y del char (??), esta es memcpy_P.
Dice en la guia:
void * memcpy_P(void *, const void *, size_t)
Al ser el parametro una constante, veo un poco complicado el cambiarla.
Cada elemento de la matriz ssdList[] es, a su vez, también una matriz. El lenguaje C no permite asignar una matriz a otra.
Para asignar valores a elementos, use la función de copia de cadena strcpy()