- Requisitos de software e hardware:
- Conceito por trás:
- Diagrama de circuito:
- Programa Arduino:
- Trabalhando:
Tudo começou com um pequeno jogo da idade das trevas chamado “Mario”, desde o tempo em que era um pequenino rapaz pulando em patos para salvar minha princesa até ser um belo príncipe vagando pela Pérsia (Príncipe da Pérsia) lutando contra a escuridão Para salvar o meu mundo, sou um grande fã de jogos de vídeo e cresci jogando. Mas às vezes eles ficam entediados e eu me sinto menos envolvido nisso. Hoje, os consoles de jogos avançados permitem jogos virtuais e nos ajudam a sentir o jogo muito melhor do que um teclado ou mouse.
Por ser um entusiasta do Arduino, cansei de jogar o famoso jogo “Angry Birds” usando teclado e mouse e decidi construir meu próprio controlador de jogo usando um sensor Flex e um potenciômetro. Quando o sensor flexível é puxado, o pássaro na catapulta também é puxado e você pode usar o potenciômetro para definir a direção em que deve ser lançado. Então, quando você soltar o sensor flexível, o pássaro será lançado. Eu gostei muito de fazer isso, então se você está planejando construir algo muito semelhante, este tutorial será útil. Este tutorial também será útil para controlar o cursor do mouse usando o potenciômetro.
Requisitos de software e hardware:
Programas:
- IDE Arduino
- Processando IDE
- Jogo Angry Birds no computador
Hardware:
- Arduino (qualquer versão)
- Potenciômetro
- Sensor Flex
- Resistor 47K ohm
- Fios de conexão
- Tábua de pão
Conceito por trás:
A placa Arduino lê os valores do potenciômetro e do Flex Senor e os transmite para o laptop / PC por meio da porta USB COM por meio da função Serial.write () normal. Em seguida, lemos essas informações usando Processing e controlamos o cursor do mouse usando a classe Robot em Java, que é compatível com o processamento IDE. Nós programamos o IDE de processamento de forma que quando o sensor Flex for puxado um clique do mouse será feito e baseado em quanto ele for puxado o ponteiro do mouse se moverá na direção X. Então, com base no valor do potenciômetro, moveremos o cursor do mouse na direção Y, desta forma podemos definir a direção em que o pássaro deve ser lançado.
Diagrama de circuito:
O circuito para jogar o Angry Bird usando Flex Sensor e Potenciômetro é fácil.
Simplesmente conectamos um potenciômetro e um sensor flex às entradas analógicas (A0, A1) do Arduino. A saída do sensor Flex também é puxada para baixo usando um resistor pull down 47K.
Você pode conectá-lo diretamente na placa de ensaio ou soldá-los a uma placa Perf e montá-lo em uma luva ou algo para torná-lo mais criativo. Eu simplesmente usei um breadboard para fazer minhas conexões conforme mostrado abaixo:
Programa Arduino:
O código completo do Arduino é fornecido no final do tutorial. Algumas linhas importantes são explicadas abaixo.
Inicializamos o programa para trabalhar com taxa de 9600 bauds e iniciamos a leitura dos valores do sensor Flex e do potenciômetro. Como sabemos, a função serial.write () pode enviar apenas um byte de dados por vez. Uma vez que um byte tem 8 bits e 2 ^ 8 = 256. Seremos capazes de enviar valores de 0 a 256. Portanto, temos que comprimir os valores de saída do sensor Flex e Saída do potenciômetro em 0 a 256.
Para fazer isso, usamos a função map () no Arduino. Todos os valores do sensor flex são convertidos de 5 para 100, então quando dobramos o sensor ele vai incrementar de 5 e quando solto ele volta para 5. Para citar os cliques do mouse o valor 1 e 0 é usado. Quando 1 é enviado, o mouse é pressionado e quando 0 é enviado o mouse é liberado.
if (FlexValue> = 65 && FlexValue <= 120) // meu sensor flex varia de 65 a 120, seu pode ser diferente {FlexValue = map (FlexValue, 120,65,0,100); // com base na dobra, converta para 0 a 100 if (FlexValue> = 5) // 1 e 0 são usados para o clique do mouse, então comece em 5 {Mclick = true; Serial.write (1); // 1 é enviado para fazer clique com o botão esquerdo do mouse Serial.write (FlexValue); // Flex value é a distância para mover o mouse na direção X} else {Mclick = false; Serial.write (0);}}
Da mesma forma, os valores do potenciômetro são convertidos de 101 para 200 na função map () e são enviados para a porta COM do notebook usando a função Serial.write () conforme mostrado abaixo.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Com base, por sua vez, converte de 101 para 201 Serial.write (potValue); // O valor do pote é a distância para mover o mouse na direção Y}
O resto do programa é explicado usando os comentários.
Código de processamento:
O Processing é um aplicativo de desenvolvimento de código aberto e pode ser facilmente baixado e colocado em uso para o desenvolvimento de projetos interessantes usando Arduino ou outros microcontroladores. Já realizamos alguns projetos usando o Processing e você pode conferir clicando nos links abaixo.
- DIY FM Radio using Processing
- Realidade virtual / controle de gestos usando Arduino
- Sala de bate-papo privada usando Arduino.
- Sistema de radar Arduino usando APP de processamento e sensor ultrassônico
- Detecção e rastreamento de rosto em tempo real usando Arduino
- Velocímetro DIY usando Arduino e processamento
- Jogo Ping Pong usando o acelerômetro Arduino
- Robô bípede usando Arduino
- Câmera de imagem térmica DIY Arduino
Neste projeto, usamos o IDE de processamento para ler os valores da porta COM e controlar o ponteiro do mouse com base nos valores recebidos pela porta COM. O código de processamento completo para este controlador de jogo Angry Bird pode ser baixado do link abaixo:
- Processando código para este controlador de jogo Angry Bird (clique com o botão direito e 'Salvar link como')
O programa Arduino pode ser encontrado no final deste tutorial. O código de processamento foi modificado para se adequar ao nosso propósito a partir do código fornecido por yoggy em sua página no GitHub.
Os dados vindos da porta COM devem ser lidos na mesma taxa de transmissão em que foram enviados do Arduino. Verifique também em qual porta COM o seu Arduino está conectado usando o gerenciador de dispositivos. Meu Arduino foi conectado a COM3 e era a 0 º Porto no meu computador e a taxa de transmissão em Arduino foi 9600 para que o código é a seguinte
porta = novo Serial (isto, Serial.list (), 9600);
Assim que começarmos a ler os valores, nós os distinguimos, reconhecendo-os com base no valor de como enviamos do Arduino. Os valores são novamente mapeados de 0 a 100 para que possamos controlar o mouse com base nesse valor.
if (port.available ()> 0) {data = port.read (); println (dados); // Ler os dados da porta COM e salvá-los nos dados} if (data> = 101 && data <= 201) // Se o valor for de 101 a 201, então deve ser do Potenciômetro {Turn = int (map (data, 101,201,0,100)); // Use esse valor para girar o catapullt} if (data> = 5 && data <= 100) // Se o valor for de 5 a 100, então ele deve ser do Flex Sensor {Pull = int (map (data, 5.100, 0,100));} // Use esse valor para puxar a catapulta if (data == 1) click = true; // Use esse valor para pressionar o botão do mouse if (data == 0) click = false; // Use esse valor para soltar o botão do mouse
Depois de categorizar os dados, podemos controlar o mouse usando a classe Robot Java em Processing. O comando robot.mouseMove (crntX-Pull, crntY + Turn); pode ser usado para mover o mouse para qualquer posição desejada e as linhas robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); e robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); pode ser usado para pressionar ou soltar o botão do mouse, respectivamente.
if (click == false) // quando o Flex Sesnor não é puxado {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Solte o botão do mouse} if (click == true) // quando o Flex Sesnor for puxado {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Pressione o botão do mouse robot.mouseMove (crntX-Pull, crntY + Turn); // Mova o mouse com base no valor Flex e POT}}
O IDE de processamento quando iniciado também exibirá uma pequena caixa de diálogo na qual você pode encontrar os valores de Pull, Turn e status do Mouse Click como mostrado abaixo
Este detalhe pode ser usado para depurar o Programa ou corrigir quaisquer dados necessários.
Trabalhando:
Para fazer este projeto Angry Bird funcionar usando o código fornecido, monte seu hardware de acordo com o diagrama de circuito e carregue o código do Arduino fornecido. Em seguida, observe a porta COM à qual seu Arduino está conectado, faça as alterações necessárias no código de processamento e inicie o esboço de processamento.
Agora, basta iniciar o jogo do pássaro irritado e posicionar o cursor perto da catapulta e puxar o sensor flexível para puxar o pássaro e definir a direção usando o potenciômetro. Assim que a direção for definida, solte o sensor Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Seu pássaro será lançado direto no ar e BOOMM !! Nos porquinhos. O trabalho completo pode ser encontrado no vídeo abaixo.
Espero que você tenha gostado do projeto e conseguido construir algo semelhante. Se você tiver alguma dúvida, pode entrar em contato comigo na seção de comentários ou postar sua dúvida no fórum para perguntas técnicas.
Agora, é hora de cair naquelas caixas de porquinho e pegar de volta os ovos de nossos pássaros !!!!