Llamar a una Matriz (float) & numero según el case seleccionado

Surbyte.
Creo que el código que puse yo hacía lo que buscas con el tuyo y es más sencillo. No veo necesidad de utilizar punteros a punteros, lo que además de complicar puede que te esté dando ese fallo que comentas.
Con un puntero a float puedes apuntar al inicio de uno de los arrays, y trabajar dicho puntero como si fuera el array original (aunque no conoceremos el número de elementos si éste es variable):

float *myPointer; 
myPointer=matriz_1; // más sencillo que poner &matriz_1[0]
for (i=0;i<6; i++) {
    sprintf(buffer,"data =%5.2f", myPointer);
    Serial.println(buffer);
}

Pd. Efectivamente, el fallo viene dado en la línea *temp = *temp + i;
En la primera iteracción, *temp apuntará al primer elemento del array. En la segunda iteracción, como i=1, apuntará al segundo elemento. En la tercera, como i=2, apuntará al CUARTO elemento, y en la cuarta iteración apuntará al "séptimo" elemento.

No obstante, el principal problema para intentar ayudar en la solución es que no sabemos exactamente lo que está intentando hacer TESLATRÓNICA, porque sigo convencido de que la opción swtch/case no es la más óptima.