¿Alguien tiene un diagrama de pines para el controlador Nintendo NES? Me gustaría conectar el controlador NES a un Arduino.
¿Alguien tiene un diagrama de pines para el controlador Nintendo NES? Me gustaría conectar el controlador NES a un Arduino.
PinoutsGuide tiene una página Nintendo NES y SNES pinstick controlador pin .
La NES Pad library no solo tiene un pinout, sino que es una excelente clase de arduino para usar el controlador NES.
Aquí hay otra página con información útil , incluido 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)
Encontré un excelente artículo en Hack-A- Día sobre tu búsqueda. Este artículo trata sobre la interfaz del controlador SNES con un Android que utiliza un Arduino. Para ahorrarle algunos de los problemas de revisar el artículo, encontré el código vinculado que citaron:
Este código utiliza una vieja escuela de 1980 Controlador NES para controlar un servo y Un LED con el Arduino. Con este código, el pad 'up' convierte un servo en 180 grados, 'derecha' lo convierte en 90, y 'abajo' lo convierte a 0 grados. Además, los botones A y B encienden un LED. encendido y apagado. Puedes conseguir una NES controlador de eBay por menos de $ 10.00 Aquí hay un dibujo crudo de la Enchufe del controlador, cuatro orificios en uno Lado, tres agujeros en el otro.
0 -- 0v (ground) +5V --- 0 0 --CLOCK nothing --- 0 0 --LATCH nothing --- 0 0 --SERIAL OUTUsted solo puede pegar cables en el Orificios de conexión del controlador para prototipado. El +5 está conectado al Arduino +5. Tierra a Arduino Ground Latch va a Pin 2 (con este código) Reloj a Pin 3 Serial Out to Pin 4
La línea de datos servo está conectada a Pin 10, y el LED está en Pin 11.
Si quieres ver el controlador entrada en el monitor de serie y luego solo Abra el monitor serie. Va a Te mostramos los números binarios que son Entrando desde el controlador. Cada El botón tiene su propio número binario. 'Arriba' es 11110111, por ejemplo. yo incluye un // Serial.println oculto Código que mostrará "El botón tiene presionado "si presionas hacia abajo el botón de inicio. Solo borra el '//' si quieres usar eso El enchufe SNES es diferente, te interesa que tendrás que buscar en otro lado para el reloj, pestillo, 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); }
Lea otras preguntas en las etiquetas pinout