Преглед садржаја:
- Залихе:
- Корак 1: Разговор у позадини
- Корак 2: Велики круг
- Корак 3: Програмирање Ардуино и урадити неке тестове
- Корак 4: Играње!
Ова инструкција вам показује како да користите НЕС контролер у Атари 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: Играње!
Сада када је рад кола тестиран са донглом можете га повезати са Атари-јем. Ардуино плоча ће се тада напајати преко конектора џојстика (стога не захтева спољно напајање).
Уживајте у конзоли са новим контролером.