Ардуино вам омогућава да играте Атари 2600 и ЗКС Спецтрум користећи НЕС контролер: 4 корака (са сликама)

Ардуино вам омогућава да играте Атари 2600 и ЗКС Спецтрум користећи НЕС контролер: 4 корака (са сликама)

Преглед садржаја:

Anonim

Ова инструкција вам показује како да користите НЕС контролер у Атари 2600 или ЗКС Спецтрум (са Кемпстон ​​интерфејсом) уз помоћ Ардуина.

Залихе:

Корак 1: Разговор у позадини

Недавно сам набавио пар Атарија 2600 и гомилу јоистицка. Обе конзоле су радиле, али су сви 5 џојстика оштећени. Заиста, веома је лако наћи. Лако је пронаћи стару Атари 2600 конзолу која ради, али тешко је пронаћи оригинални џојстик у корисном стању.

С друге стране, имао сам резервни генерички контролер који је купљен на бувљаку који је радио савршено.

Помислио сам да користим микроконтролер за конвертовање серијских сигнала у НЕС џојстик до паралелних сигнала које захтева Атари 2600, али онда сам се запитао да ли уместо обичног микроконтролера могу користити Ардуино. Тако да други људи без много вештина у електроници могу да склапају сопствене адаптере са лакоћом.

Корак 2: Велики круг

Круг користи само Ардуино и неколико конектора. Код је врло мали, тако да ће свака Ардуино плоча то урадити. Али у сваком случају овдје слиједи попис.

Саставница:

- 1 Ардуино (свака верзија ће радити)

- 2 ДБ-9 конектора. Један за генерички контролер НСЗ, а други за тест донгле

- 1 ДБ-9 женски конектор, за прикључивање на Атари.

- 5 леда за тест донгле

- 5 отпорника 330 Охмс 1/4 Ватт за тест донгле

- Буцх жица

Наравно, могуће је поново користити стари Атари Јоистицк кабл уместо ДБ9 женских плус жица.

Такође је могуће прекинути кабл НЕС контролера и повезати га директно на Ардуино, али треба идентификовати жице у каблу.

Корак 3: Програмирање Ардуино и урадити неке тестове

Компајлирајте и поставите доњи код на Ардуино. Развијен је помоћу ИДЕ верзије 0.22. Пре повезивања струјног круга на АТАРИ, користите Донгле да бисте проверили исправно понашање кола. ЛЕД диоде у донглу морају бити активиране у складу са тастерима у НЕС контролеру. Оба акцијска дугмета су мапирана на исти (и једини) Атари тастер. За тест са донгле-ом потребно је напајање Ардуино плоче.

//

// Играјте на АТАРИ 2600 са НЕС контролором Би Дањовиц, 2012

// Цомпилед он Ардуино 0.22

//

/*

АТАРИ 2600 Јоистицк

Активира секвенцијално следеће правце из Атари 2600 џојстика

УП, ДОВН, ЛЕФТ, РИГХТ, ТРИГГЕР

ПРИКЉУЧЦИ НА АТАРИ ЈОИСТИЦК

Функциа ДБ-9 Ардуино АВР

УП 1 Пин 2 (ПД2)

ДОВН 2 Пин 3 (ПД3)

ЛЕФТ 3 Пин 4 (ПД4)

ДЕСНИ 4 пин 5 (ПД5)

+ 5ВЦЦ 5 + 5В + Вцц

ТРИГГЕР 6 Пин 6 (ПД6)

ГНД 9 ГНД ГНД

*/

/*

НЕС Цонтроллер

Садржи ЦМОС Схифт Регистер (ЦД4021). Промена података на граници Цлоцк-а

секвенце дугмади као што је приказано испод.

квака ___ --- _______________________

Сат _______-__-__-__-__-__-__-__

Дата кккА Б СЛ СЛ

Контролор НЕС-а покреће Ардуино.

Функциа ДБ-9 Ардуино АВР

ДАТА 2 Пин 8 (ПБ0)

ЛАТЦХ 3 Пин 9 (ПБ1)

ЦЛОЦК 4 Пин 10 (ПБ2)

+ 5ВЦЦ 7 Пин 11 (ПБ3)

ГНД 8 Пин 12 (ПБ4)

*/

// прилагодите се хардверској конфигурацији

#дефине ПОВЕР_ВИА_ПОРТ_Б3_Б4 1 // користи прикључке порта Б3 и Б4 као напајање

#ундеф инт

#инцлуде

/ * Атари Јоистицк портови * /

инт Уп_Пин = 2;

инт Довн_Пин = 3;

инт Лефт_Пин = 4;

инт Ригхт_Пин = 5;

инт Триггер_Пин = 6;

/ * Конекције НЕС контролера * /

инт Дата_Пин = 8;

инт Латцх_Пин = 9;

инт Цлоцк_Пин = 10;

инт ПВР5В_Пин = 11; // повер

инт ПВРГНД_Пин = 12;

воид сетуп ()

= _БВ (ПОРТБ3)

// Извођење циклуса такта на линији сата НЕС контролера

воид до_цлоцк (воид) {

дигиталВрите (Цлоцк_Пин, ХИГХ); // Подигните пин

делаиМицросецондс (10); // зауставља се за 10 микросекунди

дигиталВрите (Цлоцк_Пин, ЛОВ); // поставља пин офф

делаиМицросецондс (50); // застаје још 10 микросекунди

}

/*

Ово је наша главна петља. Он издаје импулс пуцања, а затим почиње да врши стање тастера.

Пинови порта Атари џојстика су подешени у складу са стањем бита који се чита из смене

регистар унутар контролера НЕС-а.

*/

воид лооп ()

{

дигиталВрите (Латцх_Пин, ХИГХ); // Подигните сигнал засуна

делаиМицросецондс (30); // држите га 30 микросекунди

дигиталВрите (Латцх_Пин, ЛОВ); // Враћа сигнал засуна на ниски ниво

делаиМицросецондс (10); // држите га још 10 микросекунди

// дугме процеса А (запамтите: притиснута је дугмета нула)

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Триггер_Пин, ИНПУТ); // Унассерт пин (нула значи дугме притиснуто)

}

друго

{

пинМоде (Триггер_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк (); // На крају сваког бита генерише се импулс

// Процесс Буттон Б // Оба НЕС дугмета генеришу окидач за Атари

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Триггер_Пин, ИНПУТ); // Унассерт пин

}

друго

{

пинМоде (Триггер_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк ();

// Скип Селецт Буттон

до_цлоцк ();

// Прескочи Старт дугме

до_цлоцк ();

// УП смер

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Уп_Пин, ИНПУТ); // Унассерт пин

}

друго

{

пинМоде (Уп_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк ();

// Усмерите ДОВН смер

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Довн_Пин, ИНПУТ); // Унассерт пин

}

друго

{

пинМоде (Довн_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк ();

// Процесс ЛЕФТ дирецтион

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Лефт_Пин, ИНПУТ); // Унассерт пин

}

друго

{

пинМоде (Лефт_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк ();

// Правац процеса РИГХТ

ако (дигиталРеад (Дата_Пин))

{

пинМоде (Ригхт_Пин, ИНПУТ); // Унассерт пин

}

друго

{

пинМоде (Ригхт_Пин, ОУТПУТ); // Ассерт пин

}

до_цлоцк (); // Кинда бескорисна, али задржана да одржава образац

// Након читања свих тастера, сачекајте 10 милиссекунди пре следећег читања

кашњење (10);

}

Корак 4: Играње!

Сада када је рад кола тестиран са донглом можете га повезати са Атари-јем. Ардуино плоча ће се тада напајати преко конектора џојстика (стога не захтева спољно напајање).

Уживајте у конзоли са новим контролером.