Índice:
- Etapa 1: Hardware
- Etapa 2: esquemas
- Etapa 3: esboço / código
- Etapa 4: e quanto ao atraso de entrada?
- Etapa 5: E os Gabinetes Jamma Racing?
- Etapa 6: Alguma foto ou não aconteceu
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Este instrutível mostrará como criar um escudo simples para o Arduino DUE para fazer a interface de uma máquina de arcade genuína com CRT de baixa resolução e conector Jamma para o seu PC.
Os principais pontos de vazamento do escudo são:
- para amplificar o sinal de vídeo que sai da placa de vídeo (voltagem muito baixa para um monitor CRT Arcade genuíno)
- para proteger o seu monitor CRT de baixa resolução de sinais de sincronização horizontal de frequência muito alta
- para "traduzir" os pressionamentos de botão no painel de controle do arcade para algo que o PC possa manipular
Vou mostrar como estender o uso da interface para controlar as rodas e spinners do Arcade Racing.
Aviso: a blindagem NÃO força o sinal de sincronização de vídeo para baixas frequências: você precisa de algum software específico para isso. Eu sugiro que você use emudrivers CRT ou Soft15KHz.
Etapa 1: Hardware
Presumo que você tenha uma estação de soldagem e um pouco de lata à mão e saiba como usá-los. Como o amplificador de vídeo é um SMD com pitch de 0,65 mm, sugiro que você compre um pouco de fluxo de solda para ajudar a soldar esse micróbio. Usei uma caneta Rosing Mildly Activated (RMA) "sem limpeza" barata com excelentes resultados.
A interface é composta por:
- 1 placa de microcontrolador Arduino DUE
- 1 amplificador de vídeo THS7374
- 1 adaptador TSSOP14 para DIP14
- 1 amplificador de áudio
- 1 escala de dedo Jamma
- 1 placa de protótipo 5x7 cm, lado duplo
- 1x diodo 1N4148
- 7 resistências de 1Kohm
- 1 resistor de 820 ohms
- 3 resistor de 220 ohms
- 1 linha de tira, espaçamento de 2,54 mm
- 1 cabo VGA
- 1 cabo de áudio
Etapa 2: esquemas
Aqui está um esquema colorido do projeto integral. Não tão ortodoxo, mas mais fácil de seguir, na minha esperança.
As fiações são tão fáceis quanto parecem:
- as linhas de cores vêm do conector VGA do PC para o amplificador de vídeo; um resistor de 1Kohm para o terra reduz a corrente para a entrada do amplificador de vídeo. No lado da saída, uma resistência em série reduz a corrente para o CRT do arcade.
- a linha de sincronização é de alguma forma mais "complexa": a sincronização separada do VGA é composta, primeiro, depois reduzida por um divisor de tensão para respeitar as especificações DUE do Arduino (lógica de 3,3 V). O divisor de tensão é calculado assumindo um sinal de sincronização de 5 V.
- o amplificador de vídeo (THS7374) pode ser alimentado a 3,3 V ou 5 V; sendo que a alimentação a 5 V permite uma gama mais ampla de tensões / sinais de entrada e sendo que o THS7374 pode ser controlado por 3,3 V mesmo se alimentado a 5 V, optei pelo caminho dos 5 V.
- o aterramento do vídeo, o aterramento do arduino DUE, o aterramento THS7374 e o aterramento do conector Jamma estão em curto-circuito.
- As linhas Arduino DUE 5V e Jamma 5V NÃO DEVEM SER CURTO-CIRCUITAS.
- NÃO sugue o amplificador de áudio do cabo USB: você precisa de uma fonte externa para isso por causa dos limites de corrente (ou seja, o PC ATX PSU). Fazendo isso, você danificará sua porta USB ou até mesmo seu PC.
Conector VGA: uma palavra de cautela
Recentemente, tive a oportunidade de atualizar o PC usado com meu jammarduino DUE. Mesmo que eu já tivesse testado com dois PCs diferentes antes, ambos usavam placas ATI da mesma família (ATI 9250 e 9550). O novo PC foi equipado com um HD5750 com uma única saída analógica DVI (sem VGA). Isso me forçou a usar um adaptador DVI para VGA (passivo). Bem, depois de alguns esforços, notei que o cabo VGA conectado ao adaptador DEVE ter apenas o aterramento conectado ao pino 5 do conector VGA para funcionar, não os pinos de 6 a 10 como relatado na maioria dos esquemas na web. Lembre-se disso, caso não consiga ver nenhum sinal de sincronização na placa de vídeo.
Etapa 3: esboço / código
Você deve instalar o Arduino IDE primeiro; você deve instalar o SAM Cortex M3 Core também (não presente por padrão). Por último, mas não menos importante, instale os drivers DUE do Arduino. Consulte o tutorial oficial "Introdução ao Arduino Due" para obter as informações mais atualizadas.
O esboço que você precisa para fazer o upload para o seu Arduino DUE está aqui anexado. Descompacte e carregue "jammarduinoDUE.ino" em seu IDE do Arduino, depois carregue no arduino DUE por meio da porta de "programação". Após o sketch ter sido carregado com sucesso, desconecte o cabo USB da porta de "programação" e conecte o Arduino DUE através da porta "Native USB", ou a parte de entrada do código não funcionará.
Basicamente, o Arduino DUE mede a frequência de sincronização e desativa o amplificador de vídeo quando a sincronização é muito alta para um CRT de baixa resolução. O Arduino DUE lida com as entradas vindas do painel de controle também, enviando as teclas MAME padrão ao pressionar um botão específico. Uma função shift (ativada mantendo o botão P1 START pressionado) também está incluída, como interfaces comerciais.
Na tabela, o mapa de teclado padrão. Você pode alterar o mapa de teclas padrão ou adicionar botões à sua vontade diretamente no esboço com facilidade.
Por exemplo, se você deseja atribuir teclas de controle de volume para seu emulador, você deve definir essas teclas (digamos, teclado "+" para aumentar o volume e teclado "-" para diminuir o volume) no menu de teclas do emu, primeiro; em seguida, adicione a tecla shift aos botões aos quais deseja atribuir o aumento ou diminuição do volume. Digamos que eu queira aumentar o volume pressionando a tecla Shift e o botão do Player 1 3. Vou modificar a linha
{26, HIGH, 0, 180, 180}, // espaço - P1 B3
para
{26, HIGH, 0, 180, 223}, // espaço - P1 B3 (+)
Que "223" é o código de caractere ASCII para o teclado "+".
Vou deixar você descobrir como atribuir o "-" (ou o que você preferir) à função de "diminuir o volume" como um exercício (Dica: código ASCII 222):)
Lembre-se de que no MAME você só pode atribuir o volume do modo de serviço, não o volume geral de emulação; isso significa que se a placa emulada não permitir o controle de volume do software, o volume não será afetado.
Etapa 4: e quanto ao atraso de entrada?
Fiz alguns testes para ver quanto lag o código poderia apresentar; bem, enviando 3 botões pressionados ao mesmo tempo, um loop completo leva cerca de 4 ms para ser executado, portanto, menos do que 33 ms, um quadro dura 30 FPS.
Etapa 5: E os Gabinetes Jamma Racing?
Roda do potenciômetro
Se o seu gabinete for um gabinete de corrida, é muito provável que a roda seja baseada em um potenciômetro (você pode ver um potenciômetro de 5Kohm na parte traseira do painel de controle).
Em primeiro lugar, baixe e instale a biblioteca Joystick (até o momento, apenas a versão 1 da biblioteca é considerada compatível com o arduino DUE, mas ainda é uma biblioteca muito boa).
Em seguida, adicione as poucas linhas que seguem ao esboço na Etapa 4 para manusear a roda facilmente (onde colocar as linhas é deixado para você como um exercício …)
#incluir
zona morta int = 0;
void setup () {
Joystick.begin ();}
void loop () {
int ReadPot = analogRead (A3);
int wheelPos = map (readPot, 0, 1023, -127, 127);
if (wheelPos> deadZone || wheelPos <-deadZone) {Joystick.setXAxis (wheelPos);}
else {Joystick.setXAxis (0);}
}
Como você pode ver, você pode definir uma zona morta, se necessário (em uma roda de arcade em bom funcionamento, é melhor defini-la como zero).
Conectar um potenciômetro ao Arduino DUE é simples: os pinos laterais do potenciômetro vão para + 3.3V e GND, o pino do limpador para uma porta analógica do Arduino DUE (veja a foto para referência). Eu defini aqui o pino analógico 3 (A3) como a entrada para o limpador do potenciômetro de roda, mas você pode definir o pino analógico que melhor se adapta às suas necessidades.
PS: você sabia que os pedais em cabines de corrida são frequentemente controlados por um potenciômetro, que tecnicamente as rodas e os pedais são o mesmo dispositivo com um formato diferente? Isso significa que o código aqui também pode ser usado para controlar pedais de arcade genuínos;)
Roda Ótica
Se sua roda for ótica, ela também pode ser facilmente manuseada, novamente, com uma pequena modificação no esboço inicial.
Uma pinagem muito comum para codificadores ópticos Arcade (spinners Taito, codificadores de rodas Atari e assim por diante) é:
1. OptoA OUT
2. + 5V
3. GND
4. OptoB OUT
Conecte 2. e 3. ao Arduino DUE 5V e GND, e 1. e 4. a qualquer pino digital de sua preferência, prestando atenção que um divisor de tensão é necessário para diminuir a saída de 5 V do codificador óptico para o arduino DUE de 3,3 V pode lidar. Não envie saídas OptoA e / ou OptoB 5V diretamente para seus pinos de entrada DUE do arduino ou você provavelmente irá fritar essas entradas ou até mesmo toda a placa. Você foi avisado.
No esboço de exemplo aqui, usarei o pino digital 2 e o pino digital 3 como saída óptica A e saída óptica B.
#incluir
boolean optA_state = HIGH;
int xAxisMov = 2;
void setup () {
pinMode (2, INPUT_PULLUP); // OptA
pinMode (3, INPUT_PULLUP); // OptB
Mouse.begin ();
}
void loop () {
if (optA_state == HIGH && digitalRead (2) == LOW) {
optA_state =! optA_state;
if (digitalRead (3) == HIGH) {Mouse.move (xAxisMov, 0, 0);} else {Mouse.move (-xAxisMov, 0, 0);}}} // fim do loop
Esta é uma codificação óptica de contagem 1X de baixa resolução. É mais do que suficiente para aplicativos Arcade, mas você pode aumentar a resolução facilmente adicionando alguma linha de código.
PS: você sabia que as rodas ópticas de arcade e os spinners de arcade são tecnicamente o mesmo dispositivo com um formato diferente? Você sabia que os trackballs são tecnicamente um spinner de 2 eixos? Isso significa que o código aqui pode ser usado para controlar spinners de arcade genuínos e, com poucas modificações, trackballs fáceis também;)
Etapa 6: Alguma foto ou não aconteceu
Aqui estão algumas fotos do escudo que fiz. Não é um trabalho de alto nível (aposte, não sou um profissional), mas está 100% bombando no meu Jamma Arcade Cabinet!
Recomendado:
Armário de fliperama para coquetéis: 8 etapas
Cocktail Table Arcade Cabinet: Eu decidi fazer algo bom para mim e usar meu fim de semana de férias para finalmente terminar este projeto
Mini fliperama para 2 jogadores de um laptop antigo e tábuas de corte Ikea: 32 etapas (com fotos)
Mini fliperama para 2 jogadores de um laptop antigo e tábuas de cortar Ikea .: Eu amo jogos retrô. Todas aquelas velhas máquinas de fliperama e consoles eram muito divertidos. Eu adoraria minha própria máquina de fliperama, mas simplesmente não tenho espaço. Jogar com um gamepad através de um console na TV simplesmente não parece certo, então eu precisava fazer um
Gabinetes personalizados para eletrônicos e Arduino: 7 etapas
Gabinetes personalizados para eletrônicos e Arduino: depois de um ano, estou de volta com outro Instructable na criação de gabinetes personalizados para projetos eletrônicos e Arduino. Neste tutorial, estarei usando um software CAD freeware chamado FreeCAD. O link de download está aqui. Link de download: https: //www.freec
Gabinetes dobráveis para alto-falantes: 4 etapas (com imagens)
Gabinetes dobráveis para alto-falantes: você deve ter visto no Make Blog. É assim que você pode fazer o seu
Como obter música do site de QUASE ANY (Haha) (Contanto que você possa ouvi-la, você pode obtê-la Ok, tudo bem, se ela estiver incorporada em Flash, talvez você não consiga) EDITADA !!!!! Informações Adicionadas: 4 Passos
Como obter música do site de QUASE ANY (Haha) (Contanto que você possa ouvi-la, você pode obtê-la … Ok, tudo bem, se ela estiver incorporada em Flash, talvez você não consiga) EDITADA !!!!! Informações Adicionadas: se você alguma vez vai a um site e toca uma música que você gosta e quer, então aqui está o instrutivo para você - não é minha culpa se você bagunçar alguma coisa (a única maneira de acontecer é se você começar a deletar coisas sem motivo ) Eu consegui ouvir música para