Variables almacenan datos erróneos

Buen día a todos, me sucede algo extraño, las variables no almacenan los datos que le especifico, este es el código:

byte Dsp[5];
byte DspAct[5];
void setup() {
DspAct[0]=0;
DspAct[1]=1;
DspAct[2]=0;
DspAct[3]=1;
DspAct[4]=0;
DspAct[5]=1;
Dsp[0]=1;
Dsp[1]=2;
Dsp[2]=3;
Dsp[3]=1;
Dsp[4]=2;
Dsp[5]=3;
Serial.println(DspAct[0]);
Serial.println(DspAct[1]);
Serial.println(DspAct[2]);
Serial.println(DspAct[3]);
Serial.println(DspAct[4]);
Serial.println(DspAct[5]);
Serial.println("////////////////");
Serial.println(Dsp[0]);
Serial.println(Dsp[1]);
Serial.println(Dsp[2]);
Serial.println(Dsp[3]);
Serial.println(Dsp[4]);
Serial.println(Dsp[5]);
}

Y esto es lo que imprime el puerto serial:

0
105
97
98
97
116
////////////////
0
0
0
0
0
0

Si cambios ambas variables a tipo int esto es lo que me imprime:

0
7304289
0
0
0
1
////////////////
1
2
3
1
2
3

No sé qué otra cosa pueda ser. Agradezco cualquier ayuda que me puedan dar.

PD: Me acabo de dar cuenta que esto sucede luego de usar la función strncopy ya que el código completo es este:

    DspAct[0]=0;
    DspAct[1]=1;
    DspAct[2]=0;
    DspAct[3]=1;
    DspAct[4]=0;
    DspAct[5]=1;
    Dsp[0]=1;
    Dsp[1]=2;
    Dsp[2]=3;
    Dsp[3]=1;
    Dsp[4]=2;
    Dsp[5]=3;
    Serial.println("ANTES DE STRNCOPY");
    Serial.println(DspAct[0]);
    Serial.println(DspAct[1]);
    Serial.println(DspAct[2]);
    Serial.println(DspAct[3]);
    Serial.println(DspAct[4]);
    Serial.println(DspAct[5]);
    Serial.println("////////////////");
    Serial.println(Dsp[0]);
    Serial.println(Dsp[1]);
    Serial.println(Dsp[2]);
    Serial.println(Dsp[3]);
    Serial.println(Dsp[4]);
    Serial.println(Dsp[5]);
    strncpy( sDsp[0], "cadena1", sizeof(sDsp[0]) );
    strncpy( sDsp[1], "cadena2", sizeof(sDsp[1]) );
    strncpy( sDsp[2], "cadena3", sizeof(sDsp[2]) );
    strncpy( sDsp[3], "cadena4", sizeof(sDsp[3]) );
    strncpy( sDsp[4], "cadena5", sizeof(sDsp[4]) );
    strncpy( sDsp[5], "cadena6", sizeof(sDsp[5]) );
    Serial.println("DESPUES DE STRNCOPY");
    Serial.println(DspAct[0]);
    Serial.println(DspAct[1]);
    Serial.println(DspAct[2]);
    Serial.println(DspAct[3]);
    Serial.println(DspAct[4]);
    Serial.println(DspAct[5]);
    Serial.println("////////////////");
    Serial.println(Dsp[0]);
    Serial.println(Dsp[1]);
    Serial.println(Dsp[2]);
    Serial.println(Dsp[3]);
    Serial.println(Dsp[4]);
    Serial.println(Dsp[5]);

Y esta es la salida del programa:

ANTES DE STRNCOPY
0
1
0
1
0
1
////////////////
1
2
3
1
2
3
DESPUES DE STRNCOPY
1650551123
7304289
0
0
0
1
////////////////
1
2
3
1
2
3

No estoy seguro a qué se debe lo que estás haciendo, pero ¿me parece que intentas obtener los valores decimales de cada caracter?

hgsiabato:
PD: Me acabo de dar cuenta que esto sucede luego de usar la función strncopy ya que el código completo es este:

    DspAct[0]=0;

DspAct[1]=1;
   DspAct[2]=0;
   DspAct[3]=1;
   DspAct[4]=0;
   DspAct[5]=1;
   Dsp[0]=1;
   Dsp[1]=2;
   Dsp[2]=3;
   Dsp[3]=1;
   Dsp[4]=2;
   Dsp[5]=3;
   Serial.println("ANTES DE STRNCOPY");
   Serial.println(DspAct[0]);
   Serial.println(DspAct[1]);
   Serial.println(DspAct[2]);
   Serial.println(DspAct[3]);
   Serial.println(DspAct[4]);
   Serial.println(DspAct[5]);
   Serial.println("////////////////");
   Serial.println(Dsp[0]);
   Serial.println(Dsp[1]);
   Serial.println(Dsp[2]);
   Serial.println(Dsp[3]);
   Serial.println(Dsp[4]);
   Serial.println(Dsp[5]);
   strncpy( sDsp[0], "cadena1", sizeof(sDsp[0]) );
   strncpy( sDsp[1], "cadena2", sizeof(sDsp[1]) );
   strncpy( sDsp[2], "cadena3", sizeof(sDsp[2]) );
   strncpy( sDsp[3], "cadena4", sizeof(sDsp[3]) );
   strncpy( sDsp[4], "cadena5", sizeof(sDsp[4]) );
   strncpy( sDsp[5], "cadena6", sizeof(sDsp[5]) );
   Serial.println("DESPUES DE STRNCOPY");
   Serial.println(DspAct[0]);
   Serial.println(DspAct[1]);
   Serial.println(DspAct[2]);
   Serial.println(DspAct[3]);
   Serial.println(DspAct[4]);
   Serial.println(DspAct[5]);
   Serial.println("////////////////");
   Serial.println(Dsp[0]);
   Serial.println(Dsp[1]);
   Serial.println(Dsp[2]);
   Serial.println(Dsp[3]);
   Serial.println(Dsp[4]);
   Serial.println(Dsp[5]);




Y esta es la salida del programa:



ANTES DE STRNCOPY
0
1
0
1
0
1
////////////////
1
2
3
1
2
3
DESPUES DE STRNCOPY
1650551123
7304289
0
0
0
1
////////////////
1
2
3
1
2
3

La salida no tiene sentido (hasta donde se puede ver), ya que para strncpy no estás usando ni DspAct ni Dsp.

Asumiendo que sDsp es un vector de char, esa tampoco es la forma adecuada de copiar cadenas de caracteres.
El primer parámetro es un puntero de memoria (usualmente se usa solamente el nombre del vector), pero al colocarle algo como sDsp[0] quién sabe dónde diantres está copiando los caracteres (posiblemente invadiendo el espacio de otros vectores, de ahí los valores fuera de serie). De algo puedo estar seguro, es que se está haciendo en todo lado menos en donde debería.
Decirle hasta sizeof(sDsp[0]) es como decirle: "copia solo 1, 2 o 4 caracteres" (dependiendo del tipo de dato declarado)

Que se imprima un valor mayor que 65535 (máximo del unsigned int) me hace pensar que lo declaraste como long.

Por todo este enredo, reitero mi pregunta: ¿intentas obtener los valores decimales de cada caracter? Si no, ¿a qué viene todo esto?

PD: ¿cómo has declarado los vectores?

Porque no pones el codigo completo asi no tenemos que adivinar lo que esta mal ?

byte Dsp[6]={0,1,0,1,0,1};
byte DspAct[6]={1,2,3,1,2,3};

void setup(){
   Serial.begin(9600);
}
void loop(){
   Serial.println(DspAct[0]);
   Serial.println(DspAct[1]);
   Serial.println(DspAct[2]);
   Serial.println(DspAct[3]);
   Serial.println(DspAct[4]);
   Serial.println(DspAct[5]);
   Serial.println("////////////////");
   Serial.println(Dsp[0]);
   Serial.println(Dsp[1]);
   Serial.println(Dsp[2]);
   Serial.println(Dsp[3]);
   Serial.println(Dsp[4]);
   Serial.println(Dsp[5]);
   Serial.println("***Fin de serie***");	
}

Perdón por responder tan tarde pero el trabajo no me dejó tiempo para dedicarle a Arduino. Decidí cambiar la variable array char sDsp por un array de strings pero aún así no funciona adecuadamente, es como si los elementos del array de strings sobre escribieran los elementos de los array int. Este es el código:

int Dsp[5];
int DspAct[5];
String sDsp[5];

void setup ()
{
sDsp[0] = "cadena1";
    sDsp[1] = "cadena2";
    sDsp[2] = "cadena3";
    sDsp[3] = "cadena4";
    sDsp[4] = "cadena5";
    sDsp[5] = "cadena6";
    Serial.println(sDsp[5]);    
    DspAct[0]=0;
    DspAct[1]=1;
    DspAct[2]=0;
    DspAct[3]=1;
    DspAct[4]=0;
    DspAct[5]=1;
    Dsp[0]=1;
    Dsp[1]=2;
    Dsp[2]=3;
    Dsp[3]=1;
    Dsp[4]=2;
    Dsp[5]=3;
    Serial.println(sDsp[5]);

}

La primera vez que imprimo sDsp [5] sale cadena 6 pero la segunda vez aparece en blanco ese elemento. Aunque ahora los array de int si salen bien al asignar primero los valores String. Si lo dejo como estaba antes que primero asignaba los valores de los array int y luego los String los primeros salían mal y los últimos bien. Y es que a fuerza necesito que sean array porque después tengo que crear una serie de controles HTML y necesito recorrer el array con un for para crearlos dinamicamente porque pueden ser hasta 20 controles.