



Aqui no nosso blog já usamos e fizemos posts de diversas placas microcontroladas, que resultaram em vários posts legais e bastante aprendizado. Só para citar alguns exemplos, já utilizamos por aqui a placa:
Hoje será a vez de apresentar uma placa sensacional, que é o Arduino Pro Micro!
Olhando rápido, ela parece muito ser uma fusão do Nano V3.0 + Cabo Usb para Arduino com o Pro Mini Atmega328p 5v 16MHz, pois ela é tão pequena quanto Arduino Pro Mini e ainda vem com o conector MicroUSB, que facilita nossa vida para mandar os programas (diferente do Pro Mini, não precisa de um conversor USB externo). Mas se formos olhar detalhadamente para ela, veremos que ela possui um Chip Atmega32U4, o que faz ela uma placa extremamente poderosa, muito mais que o Arduino Pro Mini.
Se caso você conheça a placa Placa Leonardo R3 + Cabo Usb para Arduino, certamente saberá que ela é famosa justamente por conseguir emular dispositivos USB como mouse, teclado e outros periféricos, te dando a possibilidade de fazer com que o Arduino mande comandos para o computador e o "engane", fazendo se passar por um humano.
O Arduino Pro Micro funciona exatamente como o Arduino Leonardo, tendo a vantagem de ser extremamente compacto. Você pode ter ficado na dúvida se isso significa que essa placa só serve para controlar o computador, certo? E a resposta é não! Tanto a placa Leonardo e a Pro Mini funcionam como qualquer outro Arduino para projetos gerais, mas essas possuem esse poder adicional.
A verdade é que o Arduino Pro Micro está para o Arduino Leonardo assim como o Arduino Pro Mini está para o Arduino Uno. Ambos funcionam como miniaturização da placa maior.
Se caso seu projeto precise/demande também várias portas analógicas, o Arduino Pro Micro pode ser a pedida certa também, porque ela possui 9 portas analógicas, contra 6 Arduino Uno.
Aqui está as especificações da placa:
Onde você pode observar os pinos de comunicação serial, SPI e I2C.
Se caso você entenda diagramas esquemáticos e queira dar uma olhada nos detalhes construtivos da placa no sentido de ligações elétricas, clique aqui. Clicou e não entendeu nada? Clique aqui e aprenda sobre diagramas esquemáticos Com a placa devidamente apresentada, vamos ao projeto de hoje. Imagina que chegou uma visita na sua casa, e é uma pessoa querendo jogar algum jogo no computador com você, mas você só tem um controle. O que fazer? Não seria legal você mostrar seus conhecimentos e montar ali mesmo na hora um controle completamente funcional e se divertir com ele? O projeto do Joystick explorará as principais características do Pro Micro: Ser pequeno a ponto de ser encaixado em uma protoboard e conseguir simular para o computador um dispositivo USB do tipo Gamepad. Com isso, iremos utilizar coisas simples como pushbuttons e um joystick para fazer este projeto.
No meu caso, o módulo possuia ilhas de solda na parte superior, mas pode acontecer de o módulo ter ilhas somente na parte inferior, o que dificultará um pouco, mas dará para realizar a soldagem normalmente. Você precisará de um apoio para segurar o módulo e a barra de pinos, e realizar a soldagem por baixo, como na foto abaixo:


A montagem real ficou assim, se caso você queira se inspirar nela:
Com a montagem concluída, podemos partir para a programação do módulo.
Selecione o arquivo "ArduinoJoystickLibrary-master.zip" e dê um abrir. A Arduino IDE irá instalar a biblioteca automaticamente.
Abra a Arduino IDE e copie o seguinte código:
/*
* Gamepad com o Arduino Pro Micro
* Eletrogate 2020 // Arduino versao 1.8.12
*/
#include <Joystick.h>
#define Joystick_GND 21 // Setando o pino 21 como o GND do nódulo Joystick
#define Joystick_VCC 20 // Setando o pino 20 como o Vcc do nódulo Joystick
#define Joystick_VRX A1 // Setando os pinos abaixo cada um com sua função
#define Joystick_VRY A0
#define Joystick_SW 15
#define Button_B 5
#define Button_Y 4
#define Button_A 10
#define Button_X 16
#define Button_Start 3
#define Button_Select 2
// Criando um objeto do tipo Joystick, onde simulará um gamepad.
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD,
11, 0, // Quantidade de botões, Numero de Hat Switch
true, true, false, // Eixos X e Y no joystick, mas não o eixo Z
false, false, false, // Sem Rx, Ry, ou Rz
false, false, // Sem rudder ou throttle
false, false, false); // Sem acelerador, freio, ou direção
void setup() {
Serial.begin(9600);
pinMode(Joystick_GND, OUTPUT); // Setendo Joystick_GND como saída, já que ele deverá jogar o valor 0V para o módulo.
pinMode(Joystick_VCC, OUTPUT); // Setendo Joystick_VCC como saída, já que ele deverá jogar o valor 5V para o módulo.
pinMode(Joystick_VRX, INPUT); // Setando como entrada porque este pino deverá ler o valor do joystick
pinMode(Joystick_VRY, INPUT); // Setando como entrada porque este pino deverá ler o valor do joystick
pinMode(Joystick_SW , INPUT_PULLUP); // Todos os botões abaixo estão setados como INPUT_PULLUP, dispensando resistores.
pinMode(Button_B , INPUT_PULLUP);
pinMode(Button_Y , INPUT_PULLUP);
pinMode(Button_A , INPUT_PULLUP);
pinMode(Button_X , INPUT_PULLUP);
pinMode(Button_Start , INPUT_PULLUP);
pinMode(Button_Select , INPUT_PULLUP);
digitalWrite(Joystick_VCC, HIGH);// Setendo o valor de 5V no VCC do Joystick
digitalWrite(Joystick_GND, LOW); //Setendo o valor de GND no GND do Joystick
Joystick.begin();
Joystick.setXAxisRange(-127, 127); // Definindo os limites dos eixos do gamepad. Deixe esse valor padrão
Joystick.setYAxisRange(-127, 127);
}
void loop() {
//Setando os valores dos eixos e butões
Joystick.setXAxis(map(analogRead(Joystick_VRY),0,1023,-127,127)); // Utilizando a função Map para que o sinal original de 0 1023 seja adequado a -127 a 127
Joystick.setYAxis(map(analogRead(Joystick_VRX),0,1023,127,-127)); // Utilizando a função Map como no exemplo anterior, mas utilizando a vantagem da inversão
Joystick.setButton(0, !digitalRead(Button_X)); // Como estamos usando INPUT_PULLUP, o valor precisa ser invertido.
Joystick.setButton(1, !digitalRead(Button_A));
Joystick.setButton(2, !digitalRead(Button_B));
Joystick.setButton(3, !digitalRead(Button_Y));
Joystick.setButton(9, !digitalRead(Button_Start));
Joystick.setButton(8, !digitalRead(Button_Select));
Joystick.setButton(10, !digitalRead(Joystick_SW));
delay(10); // Um pequeno delay na ordem de fração do nosso movimento dos dedos.
}
A explicação de cada linha está nos comentários do código.
Para carregar seu código, selecione a opção "Arduino Micro". Você poderá selecionar também a opção "Arduino Leonardo" se desejar.
Selecione a Porta COM correta, e envie o código. O computador irá fazer um sinal de que um dispositvo foi desplugado, mas não se preocupe, é comum.
O seu Sistema Operacional pode demorar alguns instantes para reconhecer e configurar o novo dispositivo, mas assim que identificado tudo estará pronto para ser testado. Abra um jogo qualquer, configure os controles para o seu GamePad Arduino Micro com cada função individual, e se divirta. Se tudo deu certo, você poderá comemorar o fim do projeto fazendo igual eu, jogando Rayman Legends com seu controle novo.
|
Aqui no nosso blog já usamos e fizemos posts de diversas placas microcontroladas, que resultaram em vários posts legais e bastante aprendizado.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200