Вход

Просмотр полной версии : Джойстик от денди.



Demige
06.04.2012, 12:08
Прикупил тут себе при случае за 80-рублей.

Я так понимаю его только как механический можно подключить? Что за контроллер в нём стоит - его не получится задействовать?

---------- Post added at 12:08 ---------- Previous post was at 12:04 ----------

О, нашел схему!

http://radiokaraganda.narod.ru/device/dendy/djoistik.gif

Главная \ конструкции радиолюбителей \ ..

ДЖОЙСТИК DENDY - ВЫНОСНОЙ ПУЛЬТ УПРАВЛЕНИЯ

С. КУЛЕШОВ, г. Курган
"Радио" №4 2002г.

Иногда необходимо иметь выносной пульт управления устройством. Если число кнопок на нем велико, то для сокращения числа проводов в соединительном кабеле пульт оснащают кодирующим устройством, а устройство — декодирующим. Задачу можно упростить, если использовать готовый пульт с кодирующим устройством — джойстик от некогда популярных игровых приставок Dendy. Эти джойстики содержат восемь кнопок (кнопки Turbo" не учитываем) и имеют в кабеле пять проводников.
Сведения об интерфейсе между джойстиком и игровой приставкой известны (см., например, заметку С. Голубева "Ремонт джойстика "Денди" в "Радио", 1996, № 6, с 46). Информация о нажатых кнопках джойстика передается в последовательном формате с использованием тактирующего сигнала от управляемого устройства. Для синхронизации с ним джойстик имеет вход "Синхро", на который подается короткий импульс с высоким логическим уровнем после каждого цикла получения данных от джойстика.
Предлагаемое устройство, схема которого изображена на рисунке, является декодером, преобразующим сигналы джойстика в логические уровни, соответствующие нажатым кнопкам. Оно состоит из генератора импульсов на элементах DD1.1, DD1 2. счетчика DD2, сдвигового регистра DD3 и регистра хранения DD4. Счетчик служит для формирования синхроимпульса, предназначенного для установки логики джойстика в начальное состояние.
Дешифратор для джойстика Dendy. Принципиальная схема
В исходном состоянии (после формирования сигнала "Синхро") счетчик DD2 сброшен, джойстик выдает по линии данных состояние первой кнопки ("А"). Данные с джойстика подаются на последовательный вход регистра DD3. Импульсами генератора на элементах DD1.1 и DD1 2 информация сдвигается (в сторону В7) регистром DD3 По спаду импульсов отрицательной полярности на выходе элемента DD1.3 джойстик изменяет свое состояние и выдает информацию о следующей кнопке. Одновременно со сдвигом информации регистром DD3 увеличивается значение в счетчике DD2. После опроса последней кнопки ("Вправо") выходы регистра DD3 содержат информацию обо всех кнопках джойстика. При этом цепь R2C2 формирует короткий импульс, сбрасывающий счетчик DD2 и записывающий информацию из DD3 в регистр хранения DD4. С выхода повторителя на элементе DD1.4 импульс синхронизации подается на джойстик и переводит его в исходное состояние. После этого весь цикл повторяется.
Генератор на элементах DD1.1 и DD 1.2 формирует тактовые импульсы с частотой примерно 1 кГц, что соответствует опросу кнопок джойстика каждые 8 мс.
В зависимости от разъема джойстика в качестве XS1 используют компьютерную розетку DB-15M или DB-9M (нумерация контактов последней указана в скобках). Питают декодер и джойстик от стабилизированного источника напряжением +5 В. Собранное из исправных деталей и без ошибок устройство налаживания не требует.

http://radiokaraganda.narod.ru/device/dendy.htm

nick17
06.04.2012, 13:57
Внутри стоит обычный сдвиговый регистр с параллельной загрузкой

Demige
06.04.2012, 16:17
В принципе можно генератор из схемы выбросить и тактировать джойстик и регистры от сигналов спектрума.

Demige
07.04.2012, 11:54
Например сигналы B11 (сброс-загрузка) B8 (тактирование) на пентагоне...

И непонятен выбор деталей. Было бы логичней использовать в качестве D3 - ИР8, а в качестве D4 - ИР23.

vinxru
07.04.2012, 18:25
Или ATMega8 использовать

alvis
07.04.2012, 21:08
Или ATMega8 использовать

Сдается мне, что 10 лет назад (журнал 2002-го года) было тяжеловато с атмегами...

zx-kit
07.04.2012, 23:12
Прикупил тут себе при случае за 80-рублей.

Я так понимаю его только как механический можно подключить? Что за контроллер в нём стоит - его не получится задействовать?

Для Спектрумов лучше покупать за ту же цену джойстики от SEGA - их легче подключать. Подключаются в качестве KEMPSTON джойстика через инверторы, если порт кемпстона реализован без инверсии, как в Ленинграде. Для джойстика от DENDY к приведенной выше схеме эти инверторы тоже потребуется добавлять. Если же в схеме компьютера порт кемпстона уже с инверсией, например в компьютере Спарк-128, то для подключения джойстика от SEGA и инверторы не потребуются.

В качестве примера можно посмотреть подключение к LENINGRAD-2010 : http://zx.pk.ru/showthread.php?p=440801#post440801

В схеме LENINGRAD-2012 на таком джойстике задействованы две кнопки: C - обычная стрельба и В - стрельба очередями: http://zx.pk.ru/showthread.php?p=447557#post447557

Jukov
08.04.2012, 19:46
А вот так я подключал dendy джойстик к кворуму-64

Demige
12.04.2012, 23:35
Подключил джойстик от сеги, но с инвертором работать не захотел. Инвертор там не нужен. Или может у меня кемпстон уже с инвертором (с него идут 5 сигналов, которые надо замыкать на массу)? Привязка к +5 тоже не нужна оказалась. Да и питание если не подавать всё равно почему-то работает... Может джойстик такой (пробитый)? Разбирал - внутри чип есть, с контактных площадок сначала дорожки идут на чип, а потом только на провода. Если не подключать его тестером мерял - кажет все время определённое сопротивление, значит делаю вывод что он таки работает, но питание каким-то образом берет с сигнальных проводов?

Zorki-4k
13.04.2012, 00:44
В сеге джойстик по стандарту атари. Он будет работать, если его воткнуть в атари. Питание там нужно чтобы работал мультиплексор на дополнительные кнопки.

doc_fbi
09.11.2013, 09:26
интересно а зачем для спектрума такой изврат ???
я просто отрезал внутренний контроллер и припаялся напрямик к кнопкам - все
хоть синклер хоть кемпстон.... что хочешь.
Зачем глаз через зад оперировать?

Tronix
09.11.2013, 23:10
Ну дык резать то оно всегда лехче, чем отмеривать -)) Просто бывает удобно юзать джойстик денди по прямому назначению, то есть подключая его непосредственно в денди. А когда нужно, в спек. Универсальность короче сохраняется.

Raven
15.11.2013, 23:25
А я в юности решил вопрос радикально
И платка с разъемом цела, и спектрумист доволен

Lapu-Leen
31.12.2020, 21:18
Всех С Наступающим!

В свете выхода новой игры Delta's Shadow имеющей возможность использования 8-ми кнопочного Kempston, возникло желание задействовать в своём Пентагоне ранее свободные линии этого интерфейса. А дабы не встраивать в корпус разъём DB9 решил подключить джойстик Dendy через переходник DB9 -> ОНЦ-ВГ-4-5-16В и плату Arduino Nano. В инете нашёл несколько примерно одинаковых скетчей считывающих данные о нажатие кнопок и отправляющих готовый байт в COM порт, собственно на их базе и был написан мой вариант скетча. К слову, ни один из скетчей не заработал с продающимися в магазинах новодельными джойстиками для Dendy, просматривая сигналы на логическом анализаторе понял, что необходима пауза в 10-20мс между пакетами сигналов Clock и Latch, с добавленной задержкой между опросами джойстик начал выдавать биты состояния кнопок. Что бы не отвыкать от привычного управления ( в Delta's Shadow на кнопке "Огонь" стоит "Прыжок") сделал две переключаемых конфигурации кнопок, переключение между ними комбинациями кнопок: "START" + "Вверх" обратное переключение "START" + "Вниз". Схема подключения я думаю будет понятна из комментариев в скетче.

#include <Arduino.h>

const int data = 2;
const int latch = 3;
const int clock = 4;

const int TICK = 12;
bool up1=true;
bool up2=true;
bool mode=false; // переключатель конфигурации джойстика

void init_joystick(int data, int latch, int clock)
{
pinMode(data, INPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(5, OUTPUT); // D4 кнопка А
pinMode(6, OUTPUT); // D5 кнопка B
pinMode(7, OUTPUT); // D6 кнопка C
pinMode(8, OUTPUT); // D7 кнопка START
pinMode(9, OUTPUT); // D3 кнопка вверх
pinMode(10, OUTPUT); // D2 кнопка вниз
pinMode(11, OUTPUT); // D1 кнопка влево
pinMode(12, OUTPUT); // D0 кнопка вправо


digitalWrite(clock, HIGH);
}

int get_keys_state_joystick(int data, int latch, int clock)
{


digitalWrite(latch, LOW);
digitalWrite(clock, LOW);

digitalWrite(latch, HIGH);
delayMicroseconds(TICK);
digitalWrite(latch, LOW);

int keys_state = 0;

for (int i = 0; i < 8; ++i) {



keys_state += digitalRead(data) * (1 << i);

digitalWrite(clock, HIGH);
delayMicroseconds(TICK);
digitalWrite(clock, LOW);
delayMicroseconds(TICK);


}

delayMicroseconds(10000);
return keys_state;
}

void setup()
{
init_joystick(data, latch, clock);


}

void loop()
{

int bit_STATE = get_keys_state_joystick(data, latch, clock);

if ( bitRead((bit_STATE), 4)!=true & bitRead((bit_STATE), 3)!=true)

{
mode= true;
}

if ( bitRead((bit_STATE), 3)!=true & bitRead((bit_STATE), 5)!=true)

{
mode= false;
}




// кнопка A огонь
if( bitRead((bit_STATE), 0))
{
if ( mode)
{
digitalWrite(8, HIGH);

}
else
{
digitalWrite(5, HIGH);
}
}
else
{
if ( mode)
{
digitalWrite(8, LOW);

}
else
{
digitalWrite(5, LOW);
}

}



//кнопка B прыжок c дублированием кнопки вверх если mode не активен

if( bitRead((bit_STATE), 1))
{
if(mode)
{
digitalWrite(5, HIGH);

}
else
{
up2=true;
}

}
else
{
if(mode)
{
digitalWrite(5, LOW);
}

else
{
up2 = false;
}
}






//кнопка С смена костюма
if( bitRead((bit_STATE), 2))
{
digitalWrite(6, HIGH);


}
else
{
digitalWrite(6, LOW);

}



// кнопка START пауза/ выход
if( bitRead((bit_STATE), 3))
{
digitalWrite(7, HIGH);


}
else
{
digitalWrite(7, LOW);

}



// кнопка вверх
if( bitRead((bit_STATE), 4))
{
up1=true;


}
else
{
up1=false;

}


if((mode&up1!=true)|(mode!=true&up1!=true|up2!=true ))
{
digitalWrite(9, LOW);
}
else
{
digitalWrite(9, HIGH);
}


// кнопка вниз

if( bitRead((bit_STATE), 5))
{
digitalWrite(10, HIGH);


}
else
{
digitalWrite(10, LOW);

}

//кнопка влево
if( bitRead((bit_STATE), 6))
{
digitalWrite(11, HIGH);


}
else
{
digitalWrite(11, LOW);

}

//кнопка вправо
if( bitRead((bit_STATE), 7))
{
digitalWrite(12, HIGH);


}
else
{
digitalWrite(12, LOW);

}


}

https://b.radikal.ru/b41/2012/2c/c904fc026234t.jpg (https://radikal.ru/big/qb3jz1f5iw1rq)