Paso 1: Ejemplo de uso de códigos grises
Aquí hay un ejemplo donde usar la secuencia binaria nos da dificultades:
Supongamos que queremos leer la posición de un observatorio astronómico domo por lo que podemos estar seguros de la cúpula de apertura se apunta para que la apertura y el telescopio estén alineados. Podríamos elegir leer la posición ópticamente. Podemos imprimir una tira de decir ocho barras blanco y negro en la pared de la bóveda y leer los puntos usando ocho fotorresistores. Entonces podríamos leer la posición de la cúpula para dentro de 1/256 de un círculo completo, o cerca de 2 grados.
Consulte el diagrama del circuito del emisor/detector abajo. Para 'leer' la posición de la cúpula el microprocesador tal como haría con un Arduino Lea las barras blancas y negras en la pared de la cúpula, es decir, que bares giran con la cúpula y no gira el lector fijo. La base de los 8 fotodetectores conectados a 8 pines de entrada de Arduino. ¿Qué secuencia de codificación debemos usar?
Ahora Supongamos que habíamos usado el conteo binario normal secuencia para crear nuestras barras blanco y negro para nuestra fotorresistores al sentido. El problema que corremos a usar el binario secuencia de conteo es la transición entre un número y el siguiente. Permite decir nuestros sensores se mueve entre la posición '255' y el '0'. Como se produce la transición y las photoresisters están entre dos números, un fotorresistor o dos pueden transición de '1' a '0' un poco antes que los demás. Esto podría ser debido a un leve desplazamiento en posición de fotorresistencia o puede ser debido a la leve variación en la composición de construcción química del fotoresistor haciéndolo un poco más sensible que los demás. Por cualquier motivo una o más pasará a una hora diferente que los demás. Durante este tiempo la lectura de la phototransitors puede ir de 255 a 127 entonces a 0. Si el movimiento es lento suficiente uno puede ver muchas de estas transiciones spurrious entre más números.
CÓDIGO gris al rescate!
Un enfoque mejor sería utilizar un código gris en lugar del código binario. Utilice el código gris, sólo un poco del código cambia con cada incremento. Por lo tanto cuando entre dos posiciones del código sólo un poquito puede fluctuar entre las dos posiciones. Por lo tanto cuando entre las posiciones 0 y 1, los fotorresistores pueden a veces leen 0 y a veces leen 1, sin embargo, ambas respuestas están todavía muy cercanas la posición de la bóveda real.
El problema con los códigos de gris es que el valor decimal entre una posición y la siguiente no se diferencian por uno. Software fácilmente puede resolver esto mediante una matriz que incluye el código gris (o su inverso). Se puede utilizar el valor leído en de los fotorresistores como un índice en un array. El valor del array es la posición decimal. La matriz uno puede entonces calcular la diferencia en postions.