Arduino kun je spelen van Atari 2600 en de ZX Spectrum met behulp van een NES-controller (3 / 4 stap)

Stap 3: Programmeren van de Arduino en enkele tests doen


Compileren en uploaden van de onderstaande code naar de Arduino. Het werd ontwikkeld op basis van IDE versie 0.22. Voordat u de circuito aansluit op de ATARI gebruik een Dongle om te controleren of het juiste gedrag van het circuit. De leds in de dongle moeten worden geactiveerd overeenkomstig de knoppen in de NES-controller. Beide actieknoppen worden toegewezen aan de knop Atari van dezelfde (en enige). Voor de proef met de dongle is het noodzakelijk voor het aandrijven van de Arduino board.

//
Spelen op ATARI 2600 met NES Controller door Danjovic, 2012
Gecompileerd op Arduino 0.22
//

/*
ATARI 2600 Joystick
Hiermee activeert u achtereenvolgens de volgende Routebeschrijving vanaf een Atari 2600 Joystick
OMHOOG, OMLAAG, LINKS, RECHTS, ACTIVEREN

VERBINDINGEN OP ATARI JOYSTICK

Functie DB-9 Arduino AVR
Pin UP (1) 2 (PD2)
BENEDEN 2 Pin 3 (PD3)
LINKS 3-pins 4 (PD4)
RECHTS van de 4 Pin 5 (PD5)
+ 5VCC 5 + 5V + Vcc
6-pins 6 (PD6) activeren
9 GND GND GND

*/

/*
NES-Controller
Bevat een CMOS Shift Register (CD4021). Gegevens wijzigen op verhogen grens van klok
knop volgorde zoals hieronder.
latch ___---_______________________
Clock _______-__-__-__-__-__-__-__
Gegevens xxxA B HV UP DW LF RG

De NES-controller wordt aangedreven door de Arduino.

Functie DB-9 Arduino AVR
GEGEVENS 2 Pin 8 (PB0)
Klink 3 Pin 9 (PB1)
KLOK 4 Pin 10 (PB2)
+ 5VCC 7 Pin 11 (PB3)
GND 8 Pin 12 (PB4)
*/

aan te passen aan uw hardware config
#define POWER_VIA_PORT_B3_B4 1 / / poort pinnen B3 en B4 als voeding gebruiken

#undef int
#include < stdio.h >

/ * Atari Joystick-poort verbindingen * /
int Up_Pin = 2;
int Down_Pin = 3;
int Left_Pin = 4;
int Right_Pin = 5;
int Trigger_Pin = 6;

/ * NES Controller verbindingen * /
int Data_Pin = 8;
int Latch_Pin = 9;
int Clock_Pin = 10;
int PWR5V_Pin = 11;  macht
int PWRGND_Pin = 12;

void setup)
{
/ * Initialiseren pinnen op de Atari 2600 aangesloten. */
Pinnen zijn als ingangen te emuleren open collector uitgangen ingesteld
pinMode (Up_Pin, INPUT);
pinMode (Down_Pin, INPUT);
pinMode (Left_Pin, INPUT);
pinMode (Right_Pin, INPUT);
pinMode (Trigger_Pin, INPUT);

Initialiseren van Klink uitgangen als nul, dus voor het activeren van een pin de richting
naar uitvoer worden gewijzigd
digitalWrite (Up_Pin, laag);
digitalWrite (Down_Pin, laag);
digitalWrite (Left_Pin, laag);
digitalWrite (Right_Pin, laag);
digitalWrite (Trigger_Pin, laag);

/ * Initialiseren pinnen op de NES-controller aangesloten. */
PIN instellen als zoals vereist in-/ uitgangen
pinMode (Data_Pin, INPUT);
pinMode (Latch_Pin, uitvoer);
pinMode (Clock_Pin, uitvoer);

NES controller signalen initialiseren
digitalWrite (Data_Pin, hoge);  inschakelen van pullup weerstand
digitalWrite (Latch_Pin, laag);
digitalWrite (Clock_Pin, laag);

Controleren of voor het aandrijven van de NES joystick of niet
#ifdef POWER_VIA_PORT_B3_B4 / / voeding voor NES controller via poort B3 en B4
PORTB & = ~ _BV(PORTB4);     Grond
PORTB | = _BV(PORTB3);      VCC
DDRB | = _BV(PORTB3) | _BV(PORTB4); uitgangen maken
delay(100); wachten op dingen te stabiliseren
#endif

}

Een klokcyclus uitvoeren op NES controller Clock lijn
VOID do_clock (void) {}
digitalWrite (Clock_Pin, hoge);  Verhogen van de pin klok
delayMicroseconds(10);           pauzes voor de 10 microseconden
digitalWrite (Clock_Pin, laag);    de pin vertrekt
delayMicroseconds(50);           pauzes voor een ander 10 microseconden
}

/*
Hier is onze hoofdlus. Het kwesties een puls klink dan begint te reat de status van de knoppen.
De Atari joystick poort pinnen zijn ingesteld volgens met de status van de bits van de shift leest
Registreer binnen de NES-controller.
*/

void loop)
{
digitalWrite (Latch_Pin, hoge);  Verhogen van het signaal van de klink
delayMicroseconds(30);          Houd het voor 30 microseconden
digitalWrite (Latch_Pin, laag);   Terugkeer klink signaal op laag niveau
delayMicroseconds(10);          houden voor meer 10 microseconden

Verwerken van knop A (Vergeet niet: een nul staat, knop ingedrukt)
Als (digitalRead(Data_Pin))
{
pinMode (Trigger_Pin, INPUT);   Unassert pin (nul betekent knop ingedrukt)
}
anders
{
pinMode (Trigger_Pin, uitvoer);  Assert pin
}
do_clock();  Een klok-puls wordt gegenereerd aan het einde van elke bit

Verwerken van knop B / / zowel NES knop genereert een trigger aan Atari
Als (digitalRead(Data_Pin))
{
pinMode (Trigger_Pin, INPUT);   Unassert pin
}
anders
{
pinMode (Trigger_Pin, uitvoer);  Assert pin
}
do_clock();

Skip Select-knop
do_clock();

Skip startknop
do_clock();

OMHOOG richting
Als (digitalRead(Data_Pin))
{
pinMode (Up_Pin, INPUT);   Unassert pin
}
anders
{
pinMode (Up_Pin, uitvoer);  Assert pin
}
do_clock();

Proces naar beneden richting
Als (digitalRead(Data_Pin))
{
pinMode (Down_Pin, INPUT);   Unassert pin
}
anders
{
pinMode (Down_Pin, uitvoer);  Assert pin
}
do_clock();

Proces LINKSAF richting
Als (digitalRead(Data_Pin))
{
pinMode (Left_Pin, INPUT);   Unassert pin
}
anders
{
pinMode (Left_Pin, uitvoer);  Assert pin
}
do_clock();

Proces richting
Als (digitalRead(Data_Pin))
{
pinMode (Right_Pin, INPUT);   Unassert pin
}
anders
{
pinMode (Right_Pin, uitvoer);  Assert pin
}
do_clock();  Beetje nutteloos, maar onderhouden te houden van het patroon

Na het lezen van alle knoppen, wacht 10 milisseconds vóór volgende lezing
delay(10);
}

Gerelateerde Artikelen

Met behulp van een NES-controller voor emulators met Arduino en Processing

Met behulp van een NES-controller voor emulators met Arduino en Processing

Ik heb verschillende manieren om een NES-controller aansluiten op uw computer voor gebruik als een emulator gamepad, maar geen leek eenvoudig en compatibel met wat ik had bij de hand.Zulks men werken alleen met Arduino Leonardo, Micro en vervaldatum:
Hoe te bouwen van een NES-Controller-opslagapparaat (niet hub)...

Hoe te bouwen van een NES-Controller-opslagapparaat (niet hub)...

Na het zien van honderden grote instructables op de site rond USB keys, USB-hubs, old school spelbesturing hernemingen, enz - ik heb ook besloten om mee te hebben bij het omzetten van mijn alle tijd favoriete controller van de NES in een handig appar
Hoe te spelen van een wii zonder de sensor

Hoe te spelen van een wii zonder de sensor

u kunt spelen van een Nintendo Wii zonder de sensor, of gewoon een termijn zetten hoe lang het kan worden gespeeldje moeteen Wiieen Wii-afstandsbedieningtwee kaarsen (bij voorkeur theelichtjes)iets aan het licht kaarsenlos te koppelen van de sensor v
Hoe te spelen van een console op een laptop (alleen NTSC)

Hoe te spelen van een console op een laptop (alleen NTSC)

In dit instructable ik zal u tonen hoe te spelen van een game console op een fatsoenlijke laptop met 1 vrije usb-poort. Im sorry maar gemakkelijk GLB werkt niet met PAL enige NTSCU kunt dit doen met een toren, maar er is een meer doeltreffende manier
Hoe te schilderen van een PS3 Controller noemen van plicht Camo stijl deel 1

Hoe te schilderen van een PS3 Controller noemen van plicht Camo stijl deel 1

Ik beschrijf het proces om te demonteren en het schilderen van een PS3-controller camo-stijl.
Hoe te schilderen van een PS3 Controller noemen van plicht Camo stijl deel 2

Hoe te schilderen van een PS3 Controller noemen van plicht Camo stijl deel 2

ik beschrijf het proces om te schilderen van een PS3 controller camo stijl en monteer het.
Creëren van een gloednieuwe ZX spectrum met behulp van een pc netbook

Creëren van een gloednieuwe ZX spectrum met behulp van een pc netbook

Mijn eerste computer was een ZX Spectrum. Terug in de jaren 80 de ik genoten uren van spelspel engeleerd hoe te programmeren in BASIC taal.Vandaag kan de ZX spectrum met behulp van de emulators die op de PC draaien worden geëmuleerd.Ik had een idee o
Hoe te spelen van een "Power"-snaar

Hoe te spelen van een "Power"-snaar

In dit instructable leert u hoe te spelen de traditionele stroomkabel. Dit is de steunpilaar dat bijna alle van de rockmuziek berust op. De mogelijkheid om de overgang snel tussen verschillende snaar notities is een prachtig hulpmiddel voor alle begi
RFID Tagging een Souvenir te spelen van een YouTube-Video

RFID Tagging een Souvenir te spelen van een YouTube-Video

Verras uw gasten door elk object in uw huis te koppelen aan online video's! Bijvoorbeeld, in mijn huis speelt als een gast een van de stukken van mijn thee set pakt en plaatst u deze op een oppervlakte van mijn koffietafel, het een film van mijn reis
Herten afschrikkende / repeller voor uw tuin met behulp van een solar powered mp3-speler te spelen van een persoon praten

Herten afschrikkende / repeller voor uw tuin met behulp van een solar powered mp3-speler te spelen van een persoon praten

Ik herinner me als een kind een radio onder een emmer in de tuin van mijn grootouders zien. Dit was hun beproefde methode van het afschrikken van herten... en het werkte! Mij zijn geweest using deze dezelfde methode mezelf en ik heb een paar mensen v
Zonne-aangedreven arduino op de achterkant van een speelkaart

Zonne-aangedreven arduino op de achterkant van een speelkaart

hier is een zes word tragedie:Mijn arduino moet vier AA-batterijen.Echt?  Is niet dit 2012?  Waar is mijn jetpack?!Hier is een manier om de toekomst--een manier om een zonnepaneel, vanaf nul, dat kan de macht van een arduino off van zonlicht of zelfs
Hoe te bouwen en het spelen van een Game van Ladders

Hoe te bouwen en het spelen van een Game van Ladders

Ladders is een eenvoudig spel gespeeld in Amerikaanse campings.  Golfballen verbonden door touw (bekend als bolos) worden geworpen op de constructies afwisselend door twee teams.  Het doel is om te wikkelen de bolos rond één van de drie sporten van d
Arduino #1 - installeren van Arduino en het uploaden van een schets hoe

Arduino #1 - installeren van Arduino en het uploaden van een schets hoe

ik laten zien hoe Arduino installeren op een Mac, praten een beetje over de Arduino Nano, uploaden van een schets aan de Arduino, dan praten over hoe breadboard werken.
Laten we het maken van een game controller!

Laten we het maken van een game controller!

Ik hou van vliegende spelen, maar het voelt alsof er nooit genoeg knoppen op mijn joystick.Dit instructable zal u tonen hoe te bouwen uw eigen panel schakelaar in geen tijd.Het zal werken met een spel en de computer die ondersteuning biedt voor een j