Arduino vous permet de jouer l’Atari 2600 et ZX Spectrum en utilisant une manette NES (3 / 4 étapes)

Étape 3: Programmation de l’Arduino et faire quelques tests

Compiler et télécharger le code ci-dessous à l’Arduino. Il a été développé à l’aide de IDE version 0.22. Avant de raccorder le circuito à l’usage de l’ATARI utiliser un Dongle pour vérifier le comportement correct du circuit. Les LED dans le dongle doivent s’allumer, s’accordant avec les boutons de la manette de la NES. Les deux boutons d’action sont mappés sur le bouton de Atari même (et unique). Pour le test avec le dongle, il est nécessaire alimenter la carte Arduino.

//
Jouer sur ATARI 2600 avec manette NES de Danjovic, 2012
Mise à jour sur Arduino 0,22
//

/*
Manette de jeu ATARI 2600
Active dans l’ordre suivant les indications d’un Joystick Atari 2600
VERS LE HAUT, BAS, GAUCHE, DROITE, DÉCLENCHER

CONNEXIONS SUR JOYSTICK ATARI

Function DB-9 Arduino AVR
1 broche 2 (PD2)
Vers le bas 2 broche 3 (PD3)
LAISSÉ à 3 broches 4 (PD4)
DROITE 4 broches 5 (PD5)
+ 5VCC 5 + 5V + Vcc
DÉCLENCHER la broche 6 6 (PD6)
GND GND GND 9

*/

/*
Manette NES
Contient un registre à décalage CMOS (CD4021). Modification de données sur la frontière de relance de l’horloge
combinaison de touches comme ci-dessous.
latch ___---_______________________
Clock _______-__-__-__-__-__-__-__
Données xxxA B MC UP DW LF RG

La manette NES est alimenté par l’Arduino.

Function DB-9 Arduino AVR
DONNÉES 2 broches 8 (PB0)
VERROU 3 broche 9 (PB1)
HORLOGE 4 broches 10 (PB2)
+ 5VCC 7 broche 11 (PB3)
GND 8 Pin 12 (PB4)
*/

s’adapter à votre config matériel
#define POWER_VIA_PORT_B3_B4 1 / / utilisation de broches de port B3 et B4 comme alimentation

#undef int
#include < stdio.h >

/ * Connexions port Atari Joystick * /
int Up_Pin = 2 ;
int Down_Pin = 3 ;
int Left_Pin = 4 ;
int Right_Pin = 5 ;
int Trigger_Pin = 6 ;

/ * Connexion de manette NES * /
int Data_Pin = 8 ;
int Latch_Pin = 9 ;
int Clock_Pin = 10 ;
int PWR5V_Pin = 11 ;  puissance
int PWRGND_Pin = 12 ;

installation Sub ()
{
/ * Initialize Pins reliés à l’Atari 2600. */
Goupilles sont définies comme entrées pour émuler des sorties à collecteur ouvert
pinMode (entrée, Up_Pin) ;
pinMode (entrée, Down_Pin) ;
pinMode (entrée, Left_Pin) ;
pinMode (entrée, Right_Pin) ;
pinMode (entrée, Trigger_Pin) ;

Initialiser des sorties de verrouillage comme nulle, donc pour activer un code pin de la direction
doit être changé à la sortie
digitalWrite (Up_Pin, basse) ;
digitalWrite (Down_Pin, basse) ;
digitalWrite (Left_Pin, basse) ;
digitalWrite (Right_Pin, basse) ;
digitalWrite (Trigger_Pin, basse) ;

/ * Initialize Pins reliés à la manette NES. */
Goupille de définir comme entrées/sorties selon les besoins
pinMode (entrée, Data_Pin) ;
pinMode (Latch_Pin, sortie) ;
pinMode (Clock_Pin, sortie) ;

Initialiser le NDA contrôleur signaux
digitalWrite (Data_Pin, élevé) ;  activez pullup Resistance
digitalWrite (Latch_Pin, basse) ;
digitalWrite (Clock_Pin, basse) ;

Vérifiez la météo pour actionner la manette NES ou pas
#ifdef POWER_VIA_PORT_B3_B4 / / alimentation pour manette NES via port B3 et B4
PORTB & = ~ _BV(PORTB4) ;     Au sol
PORTB | = _BV(PORTB3) ;      SCR
DDRB | = _BV(PORTB3) | _BV(PORTB4) ; faire des sorties
Delay(100) ; Attendez que des choses à se stabiliser
#endif

}

Effectuer un cycle d’horloge sur manette NES ligne horloge
void do_clock (void) {}
digitalWrite (Clock_Pin, élevé) ;  Soulever la broche horloge
delayMicroseconds(10) ;           pauses de 10 microsecondes
digitalWrite (Clock_Pin, basse) ;    la tige se met
delayMicroseconds(50) ;           pauses pour un autre 10 microsecondes
}

/*
Voici notre boucle principale. Il émet une impulsion loquet puis commence à reat l’état des boutons.
Les broches de port joystick Atari sont définies selon l’état des bits lu de Maj
s’inscrire à l’intérieur de la manette de la NES.
*/

void loop ()
{
digitalWrite (Latch_Pin, élevé) ;  Augmenter le signal de verrouillage
delayMicroseconds(30) ;          Maintenez-le enfoncé pendant 30 microsecondes
digitalWrite (Latch_Pin, basse) ;   Signal de retour latch à faible niveau
delayMicroseconds(10) ;          Maintenez-le enfoncé pendant plus de 10 microsecondes

Traiter le bouton A (n’oubliez pas : un zéro signifie bouton enfoncé)
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Trigger_Pin) ;   Unassert broche (zéro signifie bouton enfoncé)
}
d’autre
{
pinMode (Trigger_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;  Un signal de synchronisation est généré à la fin de chaque bit

Traiter le bouton B / / NES Both bouton génère un déclencheur à Atari
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Trigger_Pin) ;   Unassert goupille
}
d’autre
{
pinMode (Trigger_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;

Bouton Sélectionner Skip
do_clock() ;

Bouton Démarrer Skip
do_clock() ;

Direction
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Up_Pin) ;   Unassert goupille
}
d’autre
{
pinMode (Up_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;

Direction de processus vers le bas
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Down_Pin) ;   Unassert goupille
}
d’autre
{
pinMode (Down_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;

Processus de direction gauche
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Left_Pin) ;   Unassert goupille
}
d’autre
{
pinMode (Left_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;

Processus de direction droite
Si (digitalRead(Data_Pin))
{
pinMode (entrée, Right_Pin) ;   Unassert goupille
}
d’autre
{
pinMode (Right_Pin, sortie) ;  Affirmer la broche
}
do_clock() ;  Un peu inutile, mais gardé pour maintenir le modèle

Après avoir lu tous les boutons, attendez 10 milisseconds avant la prochaine lecture
Delay(10) ;
}

Articles Liés

À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

J'ai trouvé plusieurs façons de brancher une manette NES sur votre ordinateur pour une utilisation comme une manette de jeu émulateur mais aucun ne semblait être simple et compatible avec ce que j'avais sous la main.Celui-ci fonctionne uniquement ave
Convertir une manette NES à USB avec Arduino

Convertir une manette NES à USB avec Arduino

Bonjour !Dans ce instructable, je vais vous montrer comment raccorder une manette de Nintendo Entertainment System à un arduino, l'arduino exécute à son tour un sketch spécial qui lui permet de se présenter à un PC comme un joystick USB HID !Et si ce
Utiliser une manette PS3 pour contrôler un Bot de NXT Arduino

Utiliser une manette PS3 pour contrôler un Bot de NXT Arduino

mise à jour :J'ai corrigé quelques bugs en cours d'exécution avec le paquet de données, et j'ai modifié la bibliothèque NXTI2CDevice pour être compatible avec Arduino 1.0.Le fichier zip joint a1. une nouvelle esquisse de l'Arduino2. une nouvelle esqu
ATARI 2600 vidéo Composite mod

ATARI 2600 vidéo Composite mod

VidéoMod de composite-ATARI 2600Introduction :J'ai acheté mon ATARI 2600 (4 interrupteurs) en 2003 sur une vente aux enchères internationale pour 30 dollars. À cette époque, j'étais obsédé avec obtenir tous les 8 bits systèmes musicaux possibles, Com
Comment raccorder un Atari 2600

Comment raccorder un Atari 2600

si vous êtes nouveau à l'Atari 2600 ou VCS et ne sais pas comment faire pour le connecter à votre TV moderne, je vais vous montrer comment faire exactement cela. Également inclus dans ce Instructable sera comment faire autres choses sur votre Atari 2
Manette de jeu ATARI 2600 LED (v1)

Manette de jeu ATARI 2600 LED (v1)

tout le monde a mis des LEDs sur une manette NES droite ? Eh bien, nous avons pensé out of the box et ajouté de LED sur un contrôleur de l'Atari 2600 ! (Il s'agit de la version de merde, la bonne version sera bientôt disponible.)Étape 1: Gather Suppl
Comment faire pour remplacer un Atari 2600 en caoutchouc pied

Comment faire pour remplacer un Atari 2600 en caoutchouc pied

aujourd'hui, je vais vous montrer comment faire pour remplacer les pieds en caoutchouc sur la partie inférieure de votre Atari 2600 qui ne pas rayer la surface que votre Atari est assis sur.Étape 1: Vous aurez besoin : Pour corriger votre Atari, vous
Atari SX2600 - une console d’émulation Atari 2600 assez complete

Atari SX2600 - une console d’émulation Atari 2600 assez complete

je suis certain que plusieurs d'entre vous, les fans de vieux-console & case modding ont vu un certain mod cas Atari 2600 sur le web-qui avait réussi à gagner un autographe assez important-qui, pour moi, s'est révélée pour être un total de réflexe d'
Retro Atari 7800 Mod: Contrôleur Sega Master System sur Atari 2600/7800 hack

Retro Atari 7800 Mod: Contrôleur Sega Master System sur Atari 2600/7800 hack

aujourd'hui, nous allons modifier une école super douce de vieux contrôleur de Sega Master System pour ces fonctionnalités avec l'Atari 2600 et 7800.Pour être honnête, je voulais vraiment comme le contrôleur Atari 7800. Elle a été façonnée comme un c
Aimant de réfrigérateur Atari 2600

Aimant de réfrigérateur Atari 2600

Projet vidéoJ'ai été inspiré par un système de jeu de vidéo vintage exposées au Musée National de jouets et de Miniatures. À l'aide de Tinkered, j'ai 3D modélisé l'Atari 2600 et faire imprimer sur une imprimante 3D à faire une d'un aimants pour réfri
Présentation Climaduino - Thermostat axée sur l’Arduino vous contrôler depuis votre téléphone !

Présentation Climaduino - Thermostat axée sur l’Arduino vous contrôler depuis votre téléphone !

Mise à jour :Il y a une nouvelle version de la Climaduino et le contrôleur Climaduino avec des changements très importants.Prend en charge plusieurs zonesUtilise la Arduino YúnFonctionne avec a/c centraleCommunique à l'aide du protocole MQTT (peut in
Station d’accueil iPod Atari 2600

Station d’accueil iPod Atari 2600

j'ai eu un vieux Atari 2600 se trouvant autour de l'atelier. J'ai décidé d'en faire une station d'accueil pour mon iPod à l'aide d'un ampli qui peut être fait en dehors d'eBay pour £10. Cet ampli possède un connecteur usb qui reconnaîtra un iPod ains
Restauration d’Atari 2600 (réparation brisé plastique)

Restauration d’Atari 2600 (réparation brisé plastique)

j'ai acheté un Atari 2600 sur ebay, seulement pour trouver quand il est arrivé qu'il avait évidemment été défoncé à un moment donné et une grande partie du coin avait rompu. Ce n'était pas évident, d'après les photos d'ebay et j'ai été un peu agacé q
En utilisant une LED Dot Matrix avec un Arduino et un registre à décalage

En utilisant une LED Dot Matrix avec un Arduino et un registre à décalage

The Siemens DLO7135 Dot matrix LED est un étonnant morceau de l'optoélectronique. Il a présenté comme un 5 x 7 matricielle affichage Intelligent (r) avec mémoire/décodeur/conducteur. Avec cette mémoire, il a obtenu un affichage de ASCII caractères 96