Arduino te permite jugar Atari 2600 y ZX Spectrum utilizando un controlador NES (3 / 4 paso)

Paso 3: Programar el Arduino y haciendo algunas pruebas

Compilar y cargar el código de abajo en el Arduino. Fue desarrollado usando IDE versión 0.22. Antes de conectar el circuito a la ATARI uso un Dongle para verificar el correcto comportamiento del circuito. Los leds en la mochila deberá activarse de acuerdo con los botones en el controlador NES. Ambos botones de acción se asignan al misma (y única) botón de Atari. Para la prueba con el dongle es necesario alimentar la placa Arduino.

//
Juego de ATARI 2600 con el controlador NES mediante Danjovic, 2012
Compilado en Arduino 0.22
//

/*
Joystick ATARI 2600
Activa secuencialmente las siguientes direcciones de un Joystick de Atari 2600
ARRIBA, ABAJO, IZQUIERDA, DERECHA, GATILLO

CONEXIONES EN JOYSTICK ATARI

Función DB-9 Arduino AVR
1 Pin 2 (PD2)
PASADOR 2 3 (PD3)
IZQUIERDA 3 Pin 4 (PD4)
DERECHA 4 Pin 5 (PD5)
+ 5VCC 5 + 5V + Vcc
ACTIVAR Pin 6 6 (PD6)
GND 9 GND GND

*/

/*
Controlador de NES
Contiene un registro de desplazamiento CMOS (CD4021). Cambio de datos en la frontera de subida del reloj
secuencia de botón como abajo.
latch ___---_______________________
Clock _______-__-__-__-__-__-__-__
Datos xxxA B SL ST UP DW LF RG

El controlador NES es alimentado por el Arduino.

Función DB-9 Arduino AVR
DATOS 2 Pin 8 (PB0)
PESTILLO pasador 3 9 (PB1)
RELOJ de 4 Pin 10 (PB2)
+ 5VCC 7 Pin 11 (PB3)
GND 8 pines 12 (PB4)
*/

adaptarse a su configuración de hardware
#define POWER_VIA_PORT_B3_B4 1 / / pines puerto B3 y B4 del uso como fuente de alimentación

#undef int
#include < stdio.h >

/ * Conexiones de puerto de Atari Joystick * /
int Up_Pin = 2;
int Down_Pin = 3;
int Left_Pin = 4;
int Right_Pin = 5;
int Trigger_Pin = 6;

/ * Las conexiones de controlador de NES * /
int Data_Pin = 8;
int Latch_Pin = 9;
int Clock_Pin = 10;
int PWR5V_Pin = 11;  energía
int PWRGND_Pin = 12;

void setup)
{
/ * Inicialización pines conectados a Atari 2600. */
Pernos se establecen como entradas para emular salidas de colector abierto
pinMode (Up_Pin, entrada);
pinMode (Down_Pin, entrada);
pinMode (Left_Pin, entrada);
pinMode (Right_Pin, entrada);
pinMode (Trigger_Pin, entrada);

Inicializar salidas Latch como cero, por lo tanto para activar un pin de la dirección
se modificará a la salida
digitalWrite (Up_Pin, bajo);
digitalWrite (Down_Pin, bajo);
digitalWrite (Left_Pin, bajo);
digitalWrite (Right_Pin, bajo);
digitalWrite (Trigger_Pin, bajo);

/ * Inicialización pines conectados al controlador de NES. */
Pines como entradas y salidas según se requiera
pinMode (Data_Pin, entrada);
pinMode (Latch_Pin, salida);
pinMode (Clock_Pin, salida);

Inicializar las señales del controlador de NES
digitalWrite (Data_Pin, alto);  permiten resitor de pullup
digitalWrite (Latch_Pin, bajo);
digitalWrite (Clock_Pin, bajo);

Compruebe ya sea para el joystick NES o no
#ifdef POWER_VIA_PORT_B3_B4 / / fuente de alimentación para el controlador NES via puerto B3 y B4
PORTB & = ~ _BV(PORTB4);     Tierra
PORTB | = _BV(PORTB3);      VCC
DDRB | = _BV(PORTB3) | _BV(PORTB4); hacer salidas
Delay(100); Espere que las cosas se estabilicen
#endif

}

Realizar un ciclo de reloj controlador de NES línea de reloj
void do_clock (void) {}
digitalWrite (Clock_Pin, alto);  Levantar el pin de reloj
delayMicroseconds(10);           pausas de 10 microsegundos
digitalWrite (Clock_Pin, bajo);    sale el pin
delayMicroseconds(50);           pausas para otro 10 microsegundos
}

/*
Aquí está nuestro bucle principal. Emite un pulso de cierre entonces comienza a reat el estado de los botones.
Los pines de puerto de joystick de Atari se establecen de acuerdo con el estado de los bits de cambio
registro en el controlador NES.
*/

void loop)
{
digitalWrite (Latch_Pin, alto);  Aumentar la señal de cierre
delayMicroseconds(30);          Mantenga por 30 microsegundos
digitalWrite (Latch_Pin, bajo);   Retorno de la señal de cierre a bajo nivel
delayMicroseconds(10);          manténgalo durante más 10 microsegundos

Botón A de procesos (Recuerde: un cero significa que el pulsador)
Si (digitalRead(Data_Pin))
{
pinMode (Trigger_Pin, entrada);   Unassert pin (cero significa que el pulsador)
}
otra cosa
{
pinMode (Trigger_Pin, salida);  Afirmar pin
}
do_clock();  Un pulso de reloj se genera al final de cada bit

Proceso B Botón / / botón de NES tanto genera un disparador de la Atari
Si (digitalRead(Data_Pin))
{
pinMode (Trigger_Pin, entrada);   Unassert pin
}
otra cosa
{
pinMode (Trigger_Pin, salida);  Afirmar pin
}
do_clock();

Botón seleccionar SKIP
do_clock();

Botón de inicio de salto
do_clock();

POR la dirección
Si (digitalRead(Data_Pin))
{
pinMode (Up_Pin, entrada);   Unassert pin
}
otra cosa
{
pinMode (Up_Pin, salida);  Afirmar pin
}
do_clock();

Proceso por dirección
Si (digitalRead(Data_Pin))
{
pinMode (Down_Pin, entrada);   Unassert pin
}
otra cosa
{
pinMode (Down_Pin, salida);  Afirmar pin
}
do_clock();

Proceso de dirección izquierda
Si (digitalRead(Data_Pin))
{
pinMode (Left_Pin, entrada);   Unassert pin
}
otra cosa
{
pinMode (Left_Pin, salida);  Afirmar pin
}
do_clock();

Dirección correcta del proceso
Si (digitalRead(Data_Pin))
{
pinMode (Right_Pin, entrada);   Unassert pin
}
otra cosa
{
pinMode (Right_Pin, salida);  Afirmar pin
}
do_clock();  Un poco inútil, pero guardado para mantener el patrón

Después de leer todos los botones, espere 10 milisseconds antes de la próxima lectura
Delay(10);
}

Artículos Relacionados

Utilizando un controlador NES para emuladores con Arduino y procesamiento

Utilizando un controlador NES para emuladores con Arduino y procesamiento

He encontrado varias formas de conectar un controlador NES al ordenador para su uso como un emulador de gamepad pero ninguno parece ser simple y compatible con lo que tenía en mano.Ésta sólo funciona con Arduino Leonardo, Micro y debido: https://gist
Mod retro de Atari 7800: Controlador de Sega Master System Atari 2600/7800 hack

Mod retro de Atari 7800: Controlador de Sega Master System Atari 2600/7800 hack

hoy modificaremos una super dulce vieja escuela controlador de Sega Master System para una funcionalidad completa con la Atari 2600 y 7800.Para ser honesto, realmente quería como el controlador de Atari 7800. Fue formado como un ataúd y miró todas la
ATARI 2600 Video compuesto mod

ATARI 2600 Video compuesto mod

VideoCompuesto Mod-ATARI 2600Introducción:Compré mi ATARI 2600 (4 interruptores) en el año 2003 en una subasta internacional por 30 dólares. En este momento estaba obsesionado con conseguir el 8 bit sistemas de música posible, Commodores, Atari, Nint
Atari SX2600 - una consola de emulación bastante completa de Atari 2600

Atari SX2600 - una consola de emulación bastante completa de Atari 2600

estoy seguro que varios de ustedes los fans de la vieja consola y caja modding han visto un cierto mod caso de Atari 2600 en la web, que había logrado ganar un autógrafo bastante prominente-que, para mí, resultó para ser un total decepción. El 'Sixer
Cómo conectar un Atari 2600

Cómo conectar un Atari 2600

si usted es nuevo a la Atari 2600 o VCS y no sé cómo conectar a su televisor moderno, mostrará usted cómo hacerlo. También se incluyen en este Instructable será cómo hacer otras cosas en tu Atari 2600 o VCS. Nota: no soy responsable en cualquier form
Atari 2600 potencia indicador Led.

Atari 2600 potencia indicador Led.

¿ Siempre mira tu Atari 2600 y siento que falta algo, como si está muerto, incluso cuando su uso de cpu al máximo a los invasores del espacio de batalla? Tengo y me di cuenta de que falta lo que la mayoría cada consola de juegos desde el NES tiene y
Imán del refrigerador del Atari 2600

Imán del refrigerador del Atari 2600

Video de proyectoMe inspiré en un sistema de videojuegos vintage en la exhibición en Museo Nacional de juguetes y miniaturas. Utilizando Tinkered, me 3D había modelado del Atari 2600 e imprimir en una impresora 3D para hacer uno de un tipo imanes per
Estación de acoplamiento iPod Atari 2600

Estación de acoplamiento iPod Atari 2600

tuve un viejo Atari 2600 ahí el taller. Decidí convertirlo en un muelle de mi iPod a través de un amplificador que se puede tener fuera de eBay por 10 libras. Este amplificador tiene un conector usb que reconocerá un iPod, así como tener una radio FM
Cómo reemplazar un Atari 2600 pies de goma

Cómo reemplazar un Atari 2600 pies de goma

hoy, mostrará usted cómo reemplazar las patas de goma en la parte inferior de la Atari 2600 que evitar que se raye la superficie que el Atari se sienta en.Paso 1: Se necesita: Para corregir su Atari, necesita estas partes: 1. palanca de mando de un A
Restauración de Atari 2600 (reparación de rotos plástico)

Restauración de Atari 2600 (reparación de rotos plástico)

compré un Atari 2600 de ebay, sólo para descubrir cuando llegó que obviamente había sido golpeado en algún momento y que había interrumpido una gran parte de la esquina. Esto no era obvio por las fotos de ebay y estaba un poco molesto como lo había h
Limpieza de una Atari 2600 VCS

Limpieza de una Atari 2600 VCS

el principal problema que he atraviesan en la recopilación de sistemas de videojuegos clásicos es que los muy antiguos que han sentado en cajas y garajes para los últimos 20 años han acumulado una colección propia, sólo consiste en el polvo y cosas m
¿De LED de Joystick de ATARI 2600 (v1)

¿De LED de Joystick de ATARI 2600 (v1)

todo el mundo ha puesto LED en un controlador de NES adecuado? bien, piensa fuera de la caja y había agregado de LED a un controlador de Atari 2600! (Esta es la versión cutre, la versión buena es muy pronto).Paso 1: Reunir suministros Suministros nec
Cómo construir un Arduino Powered ajedrez jugar Robot

Cómo construir un Arduino Powered ajedrez jugar Robot

a juzgar por el número de ajedrez Instructables relacionados, creo que es seguro decir que la comunidad disfruta el juego.  Sin embargo, puede ser difícil, encontrar alguien que juega en el mismo nivel te.  Para resolver este dilema y para aumentar m
Permite jugar Jeopardy! (con o sin programación)

Permite jugar Jeopardy! (con o sin programación)

¿Qué es la capital de Venezuela?"el o Jepardy! pide host.La fourcontestants frenéticamente tamizar a través de todas las curiosidades en sus cerebros, buscando la respuesta. De repente, Joe sabe la solución. Pero alcanza para el pulsador, John pronto