Quem se diverte com um Arduino levanta a mão: o/
Quem quer juntar tudo e usar o Gamepad do SNES com o Arduino continua lendo o post aqui!
O Software
Já existe um projeto para adaptar o controle do NES para o Arduino - chama-se NESpad: https://code.google.com/p/nespad/
Na página, temos a opção de baixar a versão 1.3, mas ela não vem com o código para o SNES - vamos ter que baixar a versão diretamente do SVN:
svn checkout http://nespad.googlecode.com/svn/trunk/ nespad
Para instalar, basta copiar para a pasta "libraries" da instalação do arduino. Copie os diretórios NESPad e SNESPad, não a pasta nespad criada ao baixar o código (no Debian e no Ubuntu, o diretório é /usr/share/arduino/libraries).
Agora, ao abrir a IDE do Arduino, temos mais 2 opções no menu Sketch, Import Library...: NESPad e SNESPad.
O Hardware
De material, vamos precisar de uns cabos (jump wires), um SNES Pad e o Arduino. Eu recomendo o uso de uma protoboard - perdi algumas horas até perceber que o problema não era no código, mas em um "mal contato"... =/
A ligação entre o gamepad e o arduino segue o mesmo que está no projeto original:
Pode-se seguir as cores (se vc for como eu e já desmountou o gamepad) ou a posição, já que o plug é dividido em 4 e 3 contatos (o GND é o pino do canto arredondado).
No arduino, conecta-se assim:
SNES pin | Arduino Pin |
---|---|
STROBE/LATCH | Digital 2 |
CLOCK | Digital 3 |
DATA | Digital 4 |
+5V | +5V |
GND | GND |
Testando
Vamos criar um código só pra ver se está tudo OK com a comunicação:
#include <SNESpad.h> // SNESPad(<pin STROBE>, <pin CLOCK>, <pin DATA>) SNESpad nintendo = SNESpad(2, 3, 4); int state = 0; void setup() { Serial.begin(57600); } void loop() { // read button state state = nintendo.buttons(); // write binary button state Serial.println(state, BIN); delay(50); }
Ligue seu arduino, faça upload e abra o Serial Monitor. Ajuste o baud rate (é a última caixa, no Serial Monitor) para 57600. Pressione alguma teclas e observe a saída:
Se apenas algumas teclas funcionarem, verifique os cabos ligados ao gamepad.
No próximo post, pretendo mostrar como ligar um segundo gamepad, usar constantes da LIB para ligar leds ou um código pra usar o arduino com o snes-9x. Até a próxima!