Schritt 4: Arduino Code in die Tiefe
Die Bits an und aus dem N64-Controller auf einem Draht-Schnittstelle sind in 4 µs breiten Impulsen kodiert. Eine '0' ist 3 µs, niedrige und hohe 1 µs. Eine "1" ist 1 µs, niedrige und hohe 3 µs.
Der Arduino Code in den Methoden N64_send oder N64_receive geschrieben von Andrew Brown sehr sorgfältig zeitgesteuerten Assembler-Code verwenden, um Bit-Datenleitung Knall mit dem Controller kommunizieren. NOP-Blöcke werden verwendet, um die entsprechenden Beträge von µs warten, bevor die Linie des Sendens von Daten abrufen.
Beim Start 0 x 00 ist an den Controller gesendet, und dann danach ist des einzige Befehls 0 x 01, für die Controller-Status abzufragen.
Daten-Codierung
Wenn die Daten nach einer 0 x 01 eingeht, kommt es als 16 Bits der Schaltfläche Informationen und 16 Bit analog-Joystick-Informationen. Die Daten würde 44000000000000400044440044000444 aussehen.
Das Format der Bits ist: A, B, Z, Start, Dup, denn, Dleft, Dright, 0, 0, L, R, Cup, Cdown, Spalt, Cright + 16 Bits analog-Stick-Position.
Die Methode translate_raw_data() durchläuft die 32 Bits, Einfügen in die Struct N64_status. Die ersten 16 Bits sind einfach 1 oder 0, aber die letzten 16 sind durch eine ganze Zahl, etwa im Bereich (-80, 80) übersetzt
für (ich = 0; ich < 8; i ++) {}
N64_status.stick_x | = N64_raw_dump [16 + ich]? (0 x 80 >> ich): 0;
}
Nachdem die Daten in dieser einfachen Form ist, ist es einfach zu tun, was Sie wollen. In diesem Fall ist es einfach über die serielle Schnittstelle in der loop()-Methode als eine Zeichenfolge von Binärdaten mit zwei Ganzzahlen X und y Werte gesendet.
Über die serielle Schnittstelle gesendeten Daten aussehen könnte: 0400000000000400 63-67 was bedeuten würde, dass zwei Tasten gedrückt wurden und den Control Stick auf 63 war-67.