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:
E aqui é o seu pinout, com a função de cada pino:
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.
O primeiro passo é remover os pinos 90° que vieram no módulo original, e soldar no lugar pinos 180°, que você adquiriu
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:
Créditos: Samuel Martins
Recomendo que você tire a peça preta depois da soldagem, fazendo ficar dessa forma:
Créditos: Samuel Martins
Com os pinos devidamente soldados, você poderá realizar a montagem abaixo, optando sempre por utilizar jumpers em U, ou fazer seus próprios jumpers utilizando fios regidos finos.
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.
Para o projeto, iremos utilizar uma biblioteca desenvolvida pelo Matthew Heironimus, no qual o Github da biblioteca pode ser consultado clicando aqui.
Para fazer o download da biblioteca na versão que estamos utilizando, clique aqui.
Para instalar ela, vá na Arduino IDE em “Sketch> Incluir Biblioteca > Adicionar biblioteca .ZIP”
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.
Gostou tanto a ponto de querer fazer um controle assim permanente para você? Que tal utilizar uma Placa Fenolite Perfurada 10x5cm para você soldar tudo e ter o seu próprio controle DIY?
Você realizou a montagem e gostou muito? Posta lá no instagram e nos marca: @eletrogate
Achou legal mas não entende nada sobre Arduino? Não fique triste! Agora temos um canal no Youtube fresquinho, e acabamos de lançar um vídeo falando sobre o que é Arduino, confere lá e se inscreve.
Dúvidas e sugestões, utilize a parte dos comentários! Não se esqueça de avaliar o post aqui embaixo.
Muito obrigado por ter lido até aqui. Abraços e até a próxima!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!