Duda sobre declaraciones de char array

Buenas, cuando declaro un char array como const me da error si luego lo voy a usar en una función pero el mismo programa no me da error si no lo utilizo, ejemplo;

código ejemplo:

const char arraychar[]={'1','2'};

void setup() {
}

void loop() {
  funcion(arraychar);
}

void funcion (char otrorray[]){
}

Este código con el "const" puesto en la declaración, arroja el error "invalid conversion from 'const char*' to 'char*' [-fpermissive]" pero sin ese modificador, compila y funciona bien. no entiendo porque falla, hasta donde yo se, el "cosnt" solo hace que una variable sea de "solo lectura". Entonces, no debería cambiar nada mas no?

Es solo por curiosidad, muchas gracias a todos los que se tomen la molesta de leer este post y un saludo!

declara su funcion asi

void funcion (const char otrorray[]){

En algunos casos he tenido que desactivar esa directiva de compilación.
Ésto se hace incluyendo esta línea en el programa:

#pragma GCC diagnostic warning "-fpermissive"

Pero ojo con eso, has de saber muy bien qué estas haciendo.
Saludos.

No falla, te esta advirtiendo. Warning es Advertencia. Te informa que espera una variable del tipo char* y tu has puesto una const char* que no son del mismo tipo.

void loop() {
  funcion(arraychar);
}

Defines a arraychar como const char *
Defines tu función para recibir un char *

void funcion (char otrorray[]){
}

y pretendes pasar un parámetro erróneo y entonces te dice.. parámetro erróneo.

Muchas gracias por la respuesta, ahora entiendo lo que pasa, un saludo