7 votos

Utiliza un viejo mando de Nintendo NES como dispositivo de entrada

¿Alguien tiene un diagrama de pines para el mando de Nintendo NES? Me gustaría conectar el mando de la NES a un Arduino.

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.

7voto

Shawn Puntos 8120

El Biblioteca NES Pad no solo tiene un pinout, sino que es una gran clase de arduino para usar el controlador de NES.

6voto

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);
}

Instructivo Arduino SNES

6voto

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)

5voto

penti Puntos 93

PinoutsGuide tiene una página Pinout del mando del joystick de Nintendo NES y SNES .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X