Paso 5: 6-bit Weird comunicador
Alguien viendo mi reloj-garland por primera vez, señaló que podría ser utilizado como un dispositivo de comunicación secreta. Pues bien, ¿por qué no? Esto es menos útil que el reloj o el termómetro, pero puede suceder que un buen y divertido juguete para alguien con niños.
Es obvio que un LED RGB, físicamente que consta de tres LEDs con separado cátodos o ánodos, en realidad es un dispositivo de 3 bits. Mediante el suministro de sus piernas con valores 1 o 0 que le está dando tres pedacitos de la información y les muestra en el código de colores. Si consideramos el rojo como azul como un MSB y LSB (o BGR = B000), realmente podemos asignar colores visibles a los números 0 – 7: 0, rojo para 1 (B001), verde para 2 (B010), naranja (R + G) 3 (B011), azul para 4 (B100), magenta (R + B) 5 (B101), cian (G + B) 6 (B110) blanco y negro (R + G + B) 7 (B111). El problema de este enfoque se esconde en el color 'negro' (cero), ya que se convierte en informativo y no se puede utilizar como separador. Con sólo tres bits no podremos enviar nada significativo en sólo un color, y realmente tenemos un problema cero, como se verá exactamente igual como un LED apagado y nadie notará que estamos tratando de comunicarnos con ellos.
Protocolos de comunicación digital más utilizan más de un canal sólo para eso: para mostrar el receptor que realmente se está transmitiendo información, y se debe considerar la ausencia de tensión como un cero, no nada. Esto toma forma de una señal de cierre, una señal de reloj o cualquier otra señal de portador en un cable adicional. En nuestro caso nos podríamos han añadido un solo color LED sólo para esto, pero como estamos usando un único LED RGB de nuestra Convención OnePixel, no podemos. Así que la señal portadora debe ser transmitida por el LED RGB y tenemos que dedicar uno de los canales, nos deja con sólo dos bits de información por un solo color. Por lo tanto, si usamos rojo como portador, tendremos rojo 0, naranja 1 (B01), magenta 2 (B10) y blanco para 3 (B11).
Dos bits no son suficientes, pero nos podemos apilar juntos en secuencias. Además, podemos utilizar colores portadoras diferentes. Por ejemplo, si usamos rojo como un portador para los primeros dos bits, verde para el mediados dos pedacitos y azul para los dos últimos bits nos pondremos una buena secuencia de 6 bits tricolor. Podemos utilizar separadores 'negros' entre tales secuencias para transmitir claramente la información.
Técnicamente no estamos limitados a 6 bits: podemos añadir un cuarto color, usando rojo otra vez como el portador y transmitir bytes completos. El problema aquí es que hay dos colores en medio de la secuencia, y si son la misma (como, digamos, en B00111100 – rojo, blanco, blanco, rojo o B00011000 – rojo, cian, cian, rojo), puede ser difícil decodificarlos. Afortunadamente, 6 bits son bastante suficientes para la transmisión de mensajes significativos.
Compruebe la tabla ASCII. Los primeros 32 códigos para caracteres de control, no los necesitamos. Ir luego signos de puntuación, números y el alfabeto en mayúsculas, y todos estos símbolos encajan en 6 bits (64 valores diferentes). Si tomamos la tabla ASCII desde el espacio (32) a _ (95) conseguimos todo lo que necesitamos para comunicar en bits 6. Como nota lateral, tempranos ordenadores personales también abandonó minúsculas caracteres para reducir costos en chips de generación de caracteres.
OK, aquí está el bosquejo de comunicación secreto. Toma cualquier cosa que escriba en la ventana de Monitor serie (cambiando símbolos de minúsculas a mayúsculas) y lo muestra en un solo LED RGB. Tenga en cuenta que Monitor Serial debe establecerse hasta 115.200 baudios. También imprime la tabla de caracteres al inicio para descifrar más fácil (también puede revisar la hoja de trucos por encima, muestra el primer color de flecha vertical, la segunda en relleno horizontal y la tercera como el punto).