Para almacenar "1111" necesitas reservar sitio para 5 caracteres, porque siempre se pone el null final ('\0')
char cadena[5], usuario[5], cambio[5]
Si no concretas el espacio,
char cambio[] = "1234";
el compilador tomará el espacio necesario (los 5 bytes).
para señalar un lugar en la cadena, el índice empieza de 0, y en tu caso va hasta 3
if (cadena[0 ]== cambio[0] etc.
Prueba haciendo los cambios. También podríamos hablar de enviar una cadena por serial, pero mejor después.
Qué cosas! El caso es que de haberme leído las referencias lo sabía, pero como funcionaba pues no había caído. Muy bien @curo92, hago cambios y comento como ha ido.
Gracias por tu interés!
Como bien dice @curro92 el error está en el tamaño. El primer if funciona porque son todo 1, pero el segundo no porque son números diferentes y no coinciden. La solución ha sido,efectivamente, poner los tamaños adecuados para que el comparador de cadenas afirme uno a uno todos los números.
Gracias @curro92, un saludo! +1