¿Alguien tiene un diagrama de pines para el mando de Nintendo NES? Me gustaría conectar el mando de la NES a un Arduino.
Respuestas
¿Demasiados anuncios?El Biblioteca NES Pad no solo tiene un pinout, sino que es una gran clase de arduino para usar el controlador de NES.
Encontré un gran artículo en Hack-A-Day en su búsqueda. Este artículo es sobre la interconexión del controlador de SNES con un Android utilizando un Arduino. Para ahorrarte la molestia de buscar en el artículo, he encontrado el código enlazado que citan:
Este código utiliza una vieja escuela de los años 80 NES para controlar un servo y un un LED con el Arduino. Con este código, el pad "arriba" gira un servo a 180 grados, 'derecha' lo gira a 90, y "abajo" lo pone a 0 grados. Además, los botones A y B encienden un LED encendido y apagado. Puedes conseguir un mando de NES controlador de ebay por menos de $ 10.00 Aquí está un dibujo crudo de la controlador de enchufe, cuatro agujeros en un lado, tres agujeros en el otro.
0 -- 0v (ground) +5V --- 0 0 --CLOCK nothing --- 0 0 --LATCH nothing --- 0 0 --SERIAL OUT
Puedes simplemente pegar los cables en el agujeros del controlador para la creación de prototipos. El +5 se conecta al Arduino +5 Tierra al Arduino Tierra Latch va a Pin 2 (con este código) Reloj al Pin 3 La salida de serie va al pin 4
La línea de datos del servo se conecta a Pin 10, y el LED está en el Pin 11.
Si quiere ver el controlador en el monitor serie, entonces sólo tiene que abrir el monitor de serie. Le mostrará mostrará los números binarios que están que llegan desde el controlador. Cada botón de botón tiene su propio número binario. 'Arriba' es 11110111, por ejemplo. I incluí un código Serial.println que mostrará "Button has sido presionado" si se presiona el botón botón de inicio. Simplemente borre el '//' si quieres usar eso. El enchufe de SNES es diferente, si te interesa que tendrás que buscar en otra parte para el reloj, latch, información de salida de serie.
Cita:
/* INITIALIZATION */ #include <ServoTimer1.h> ServoTimer1 servo1; int latch = 2; // set the latch pin int clock = 3; // set the clock pin int datin = 4;// set the data in pin byte controller_data = 0; int ledpin = 11; /* SETUP */ void setup() { Serial.begin(57600); pinMode(latch,OUTPUT); pinMode(clock,OUTPUT); pinMode(datin,INPUT); pinMode(ledpin, OUTPUT); digitalWrite(latch,HIGH); digitalWrite(clock,HIGH); servo1.attach(10); } /* THIS READS DATA FROM THE CONTROLLER */ void controllerRead() { controller_data = 0; digitalWrite(latch,LOW); digitalWrite(clock,LOW); digitalWrite(latch,HIGH); delayMicroseconds(2); digitalWrite(latch,LOW); controller_data = digitalRead(datin); for (int i = 1; i <= 7; i ++) { digitalWrite(clock,HIGH); delayMicroseconds(2); controller_data = controller_data << 1; controller_data = controller_data + digitalRead(datin) ; delayMicroseconds(4); digitalWrite(clock,LOW); } } /* THE LED, SERVO, AND SERIAL MONITOR PROGRAM */ void loop() { controllerRead(); Serial.println(controller_data, BIN); // if (controller_data==B11101111){ // Serial.println("Button has been Pressed"); //} else { //Serial.println("Button not pressed"); //} //for REFERENCE: //UP = 11110111 //DOWN=11111011 //LEFT=11111101 //RIGHT=11111110 //SELECT=11011111 //START=11101111 //A=01111111 //B=10111111 if (controller_data==B01111111){ digitalWrite(ledpin, HIGH); } if (controller_data==B10111111){ digitalWrite(ledpin, LOW); } if (controller_data==B11110111){ servo1.write(180); } if (controller_data==B11111011){ servo1.write(0); } if (controller_data==B11111110){ servo1.write(90); } delay(100); }
Aquí hay otra página con información útil incluyendo un diagrama de señales.
+----> Power (white)
|
5 +---------+ 7
| x x o \
| o o o o |
4 +------------+ 1
| | | |
| | | +-> Ground (brown)
| | +----> Pulse (red)
| +-------> Latch (orange)
+----------> Data (yellow)
PinoutsGuide tiene una página Pinout del mando del joystick de Nintendo NES y SNES .
3 votos
A menos que quieras intentar conseguir el conector de acoplamiento para ese enchufe inusual de NES, ¿por qué preocuparse por el pinout? Probablemente cortaría el enchufe original y lo sustituiría por un DB-9, y lo conectaría de forma adecuada.