Paso 4: Código de Arduino en profundidad
Los bits enviaron a y desde el N64 controlador de la interfaz de un cable están codificadas en pulsos amplia 4 μs. Un '0' es 3 μs de baja y alta 1 μs. Un '1' es 1 μs de baja y alta 3 μs.
El código de Arduino en los métodos N64_send o N64_receive utilizar muy cuidadosamente programada Asamblea código escrito por Andrew Brown para bit-bang la línea de datos para comunicarse con el controlador. bloques de NOP sirven para esperar las cantidades apropiadas de μs antes de la línea de envío de datos de la interrogación.
En el inicio, 0 x 00 es enviada al controlador, y entonces después de el único comando utilizado es 0 x 01 a consulta de estado del controlador.
Codificación de datos
Cuando los datos se recibieron después de un 0 x 01, llega como 16 bits de información de botón y 16 bits de información del joystick analógico. Los datos se vería 44000000000000400044440044000444.
El formato de los bits es: A, B, Z, Start, Dup, Ddown, Dizquierdo, pues, 0, 0, L, R, taza, Cdown, hendidura, Cright + 16 bits de la posición del stick analógico.
El método translate_raw_data() pasa a través de los 32 bits, insertándolos en la estructura N64_status. Los primeros 16 bits son simples 1 o 0, pero el pasado 16 se traducen en un entero aproximadamente en el rango (-80, 80) por
para (i = 0; i < 8; i ++) {}
¿N64_status.stick_x | = N64_raw_dump [16 + i]? (0 x 80 >> i): 0;
}
Después de los datos en este formulario, es fácil hacer lo que quieras con él. En este caso, simplemente enviarlo por el puerto serie en el método loop() como una cadena de datos binarios con dos números enteros de x e y valores.
Los datos enviados por el puerto serie pueden parecerse: 0400000000000400 63-67 que significaría que se presionan dos botones y la palanca de control en el 63,-67.