Arduino pozwala grać w Atari 2600 i ZX Spectrum przy użyciu kontrolera NES: 4 kroki (ze zdjęciami)

Arduino pozwala grać w Atari 2600 i ZX Spectrum przy użyciu kontrolera NES: 4 kroki (ze zdjęciami)

Spisu treści:

Anonim

To instruktażowe pokazuje, jak używać kontrolera NES w Atari 2600 lub ZX Spectrum (z interfejsem Kempston) za pomocą Arduino.

Kieszonkowe dzieci:

Krok 1: Rozmowa w tle

Niedawno nabyłem kilka Atari 2600 i kilka joysticków. Obie konsole działały, ale wszystkie 5 joysticków zostało uszkodzonych bez naprawy. Rzeczywiście, jest bardzo łatwe do znalezienia Łatwo jest znaleźć starą konsolę Atari 2600, ale trudno jest znaleźć oryginalny joystick w dobrym stanie.

Z drugiej strony miałem zapasowy kontroler generyczny NES zakupiony na pchlim targu, który działał idealnie.

Pomyślałem o użyciu mikrokontrolera do konwersji sygnałów szeregowych w joysticku NES na sygnały równoległe wymagane przez Atari 2600, ale potem zastanawiałem się, czy zamiast niestandardowej płyty mikrokontrolera mógłbym użyć Arduino. Tak więc inni ludzie bez wielu umiejętności w elektronice mogliby łatwo złożyć własne adaptery.

Krok 2: „Duży” obwód

Układ wykorzystuje tylko Arduino i kilka złączy. Kod jest bardzo mały, więc każda płyta Arduino będzie działać. Ale tak czy inaczej następuje tutaj lista.

Zestawienie materiałów:

- 1 Arduino (każda wersja będzie działać)

- 2 złącza męskie DB-9. Jeden dla ogólnego kontrolera NES, a drugi dla klucza testowego

- 1 złącze żeńskie DB-9 do podłączenia do Atari.

- 5 diod LED dla klucza testowego

- 5 rezystorów 330 Ohm 1/4 W dla klucza testowego

- Duży drut

Oczywiście możliwe jest ponowne użycie starego kabla Atari Joystick zamiast żeńskiego DB9 plus przewodów.

Możliwe jest także odcięcie kabla sterownika NES i bezpośrednie połączenie z Arduino, ale należy zidentyfikować przewody w kablu.

Krok 3: Programowanie Arduino i wykonywanie niektórych testów

Skompiluj i prześlij poniższy kod do Arduino. Został opracowany przy użyciu wersji 0.22 IDE. Przed podłączeniem circuito do urządzenia ATARI użyj klucza sprzętowego, aby sprawdzić poprawne zachowanie obwodu. Diody w kluczu sprzętowym należy aktywować zgodnie z przyciskami w kontrolerze NES. Oba przyciski akcji są przypisane do tego samego (i jedynego) przycisku Atari. Do testu z kluczem sprzętowym konieczne jest zasilanie płyty Arduino.

//

// Zagraj na ATARI 2600 z NES Controller By Danjovic, 2012

// Skompilowane na Arduino 0.22

//

/*

ATARI 2600 Joystick

Aktywuje sekwencyjnie następujące wskazówki z joysticka Atari 2600

UP, DOWN, LEFT, RIGHT, TRIGGER

POŁĄCZENIA NA ATARI JOYSTICKIE

Funkcja DB-9 Arduino AVR

UP 1 Pin 2 (PD2)

DOWN 2 Pin 3 (PD3)

LEFT 3 Pin 4 (PD4)

RIGHT 4 Pin 5 (PD5)

+ 5VCC 5 + 5V + Vcc

TRIGGER 6 Pin 6 (PD6)

GND 9 GND GND

*/

/*

Kontroler NES

Zawiera rejestr przesuwny CMOS (CD4021). Zmiana danych na granicy podniesienia zegara

sekwencja przycisków jak poniżej.

zatrzask ___---_______________________

Zegar _______-__-__-__-__-__-__-__

Dane xxxA B SL ST UP DW LF RG

Kontroler NES jest zasilany przez Arduino.

Funkcja DB-9 Arduino AVR

DATA 2 Pin 8 (PB0)

LATCH 3 Pin 9 (PB1)

CLOCK 4 Pin 10 (PB2)

+ 5VCC 7 Pin 11 (PB3)

GND 8 Pin 12 (PB4)

*/

// dostosuj się do konfiguracji sprzętowej

#define POWER_VIA_PORT_B3_B4 1 // użyj pinów portu B3 i B4 jako źródła zasilania

#undef int

#zawierać

/ * Połączenia z portem Joystick Atari * /

int Up_Pin = 2;

int Down_Pin = 3;

int Left_Pin = 4;

int Right_Pin = 5;

int Trigger_Pin = 6;

/ * Połączenia kontrolera NES * /

int Data_Pin = 8;

int Latch_Pin = 9;

int Clock_Pin = 10;

int PWR5V_Pin = 11; // moc

int PWRGND_Pin = 12;

void setup ()

= _BV (PORTB3)

// Wykonaj cykl zegara na linii zegara kontrolera NES

void do_clock (void) {

digitalWrite (Clock_Pin, HIGH); // Podnieś pin zegara

delayMicroseconds (10); // zatrzymuje się na 10 mikrosekund

digitalWrite (Clock_Pin, LOW); // ustawia pinezkę

delayMicroseconds (50); // zatrzymuje się na kolejne 10 mikrosekund

}

/*

Oto nasza główna pętla. Wywołuje impuls zatrzaskowy, a następnie zaczyna sprawdzać stan przycisków.

Piny portu joysticka Atari są ustawione zgodnie ze stanem bitów odczytanych ze zmiany

zarejestrować się w kontrolerze NES.

*/

void loop ()

{

digitalWrite (Latch_Pin, HIGH); // Podnieś sygnał zatrzasku

delayMicroseconds (30); // przytrzymaj przez 30 mikrosekund

digitalWrite (Latch_Pin, LOW); // Powrót sygnału blokady do niskiego poziomu

delayMicroseconds (10); // przytrzymaj go przez 10 mikrosekund

// Przycisk procesu A (pamiętaj: przycisk zero oznacza naciśnięcie przycisku)

if (digitalRead (Data_Pin))

{

pinMode (Trigger_Pin, INPUT); // Odkręć pin (zero oznacza naciśnięcie przycisku)

}

jeszcze

{

pinMode (Trigger_Pin, OUTPUT); // Wstaw pin

}

do_clock (); // Impuls zegara jest generowany na końcu każdego bitu

// Przycisk procesu B // Oba przyciski NES generują wyzwalacz dla Atari

if (digitalRead (Data_Pin))

{

pinMode (Trigger_Pin, INPUT); // Odkręć bolec

}

jeszcze

{

pinMode (Trigger_Pin, OUTPUT); // Wstaw pin

}

do_clock ();

// Pomiń przycisk wyboru

do_clock ();

// Przycisk Pomiń start

do_clock ();

// Kierunek W GÓRĘ

if (digitalRead (Data_Pin))

{

pinMode (Up_Pin, INPUT); // Odkręć bolec

}

jeszcze

{

pinMode (Up_Pin, OUTPUT); // Wstaw pin

}

do_clock ();

// Przetwarzaj kierunek W DÓŁ

if (digitalRead (Data_Pin))

{

pinMode (Down_Pin, INPUT); // Odkręć bolec

}

jeszcze

{

pinMode (Down_Pin, OUTPUT); // Wstaw pin

}

do_clock ();

// Kierunek LEWY proces

if (digitalRead (Data_Pin))

{

pinMode (Left_Pin, INPUT); // Odkręć bolec

}

jeszcze

{

pinMode (Left_Pin, OUTPUT); // Wstaw pin

}

do_clock ();

// Kierunek PRAWY proces

if (digitalRead (Data_Pin))

{

pinMode (Right_Pin, INPUT); // Odkręć bolec

}

jeszcze

{

pinMode (Right_Pin, OUTPUT); // Wstaw pin

}

do_clock (); // Kinda bezużyteczny, ale trzymany, aby utrzymać wzór

// Po przeczytaniu wszystkich przycisków odczekaj 10 milisekund przed następnym odczytem

opóźnienie (10);

}

Krok 4: Granie!

Teraz, gdy praca obwodu została przetestowana za pomocą klucza sprzętowego, można podłączyć go do Atari. Płyta Arduino będzie następnie zasilana przez złącze joysticka (dlatego nie wymaga zewnętrznego zasilania).

Ciesz się swoją konsolą dzięki nowemu kontrolerowi.