Procurando um dispositivo simples de controle para o seu projeto de robótica ? Experimente este Adaptador Wiichuck NunChuck Arduino, uma placa muito simples de usar e que transfere para o Arduino os dados do acelerômetro, do joystick e dos demais botões do controle NunChuck.
Mas o que é esse tal de NunChuck ?
O controle NunChuck do Nintendo Wii
O videogame Nintendo Wii tem como controle principal o Wii Remote, um dispositivo parecido com um controle remoto (e que de certa forma é), que os jogadores usam para controlar os movimentos na tela de acordo com a movimentação do Wii Remote. O controle NunChuck, por sua vez, é um dispositivo auxiliar, que é ligado no Wii Remote e expande as funcionalidades do controle principal:
Durante o jogo você pode, por exemplo, usar o controle principal para mirar em um inimigo, enquanto usa o NunChuck para selecionar uma arma, efetuar o disparo e executar alguma outra ação, já que ele conta com 2 botões, um joystick de 2 eixos e um acelerômetro de 3 eixos.
O cabo de conexão do NunChuck tem seis pinos, sendo 2 de comunicação I2C e 2 de alimentação, conforme mostra a imagem abaixo. Os demais pinos não são utilizados:
Como o Arduino e outros microcontroladores e placas já tem a interface I2C embutida, podem se comunicar facilmente com esse controle usando o adaptador Wiichuck.
Adaptador Wiichuck Arduino
O adaptador Wiichuck nada mais é do que uma pequena placa com 4 conectores, que serve para alimentar o controle NunChuck e ao mesmo tempo fazer a comunicação com o Arduino usando a interface I2C através dos pinos analógicos A4 (SDA) e A5 (SCL).
Para conexão com o Arduino, soldamos uma barra de pinos nesse adaptador, e fazemos a conexão conforme a imagem abaixo:
Assim, teremos os pinos A2 e A3 responsáveis pela alimentação do controle, e os pinos A4 e A5 fazendo a comunicação I2C:
Se preferir, você pode fazer uma ligação com jumpers, alimentando o controle com uma fonte externa, liberando asssim os pinos A2 e A3.
Programa Wiichuck Arduino
Para facilitar o nosso trabalho, o criador da placa criou uma biblioteca que você pode baixar neste link.
Descompacte o arquivo zip e teremos dentro da pasta dois arquivos, o WiichuckDemo.INO, que é um programa de teste, e outro chamado nunchuck_funcs.h, que é a biblioteca propriamente dita.
Criei o programa abaixo com o WiichuckDemo.ino como base, e nele adicionei as funções de mostrar as informações do joystick, além dos valores do acelerômetro e dos botões já contidos no programa original:
//Programa: Wiichuck com Arduino //Autor: Arduino e Cia /*Creditos 2008 Tod E. Kurt, http://thingm.com/ */ #include <Wire.h> #include "nunchuck_funcs.h" int loop_cnt = 0; byte accx, accy, zbut, cbut, joyx, joyy; void setup() { Serial.begin(19200); //Seta os pinos de alimentacao nunchuck_setpowerpins(); //Inicializa o controle nunchuck_init(); Serial.println("Teste WiiChuckDemo Arduino"); } void loop() { //Leitura a cada 100ms if ( loop_cnt > 1000 ) { loop_cnt = 0; //Le os dados do Nunchuck nunchuck_get_data(); //Datos do Joystick joyx = nunchuck_joyx(); joyy = nunchuck_joyy(); //Dados do Acelerometro accx = nunchuck_accelx(); // ranges from approx 70 - 182 accy = nunchuck_accely(); // ranges from approx 65 - 173 //Dados dos botoes zbut = nunchuck_zbutton(); cbut = nunchuck_cbutton(); //Imprime os valores no Serial Monitor Serial.print("Ac.X: "); Serial.print((byte)accx, DEC); Serial.print("tAc.Y: "); Serial.print((byte)accy, DEC); Serial.print("tBot.Z: "); Serial.print((byte)zbut, DEC); Serial.print("tBot.C: "); Serial.print((byte)cbut, DEC); Serial.print("tJoy.X: "); Serial.print((byte)joyx, DEC); Serial.print("tJoy.Y: "); Serial.println((byte)joyy, DEC); } loop_cnt++; delay(1); }
Com o programa carregado no Arduino, abra o Serial Monitor e explore as funcionalidades do controle, girando para frente e para trás, para o lado direito e esquerdo, e acionando os botões:
Não esqueça de setar a velocidade do Serial Monitor para 19200, para que os dados apareçam corretamente.
Gostou? Confira outros posts com Arduino aqui mesmo no Arduino e Cia!