Use um Arduino para dar ainda mais realismo a jogos
Por Luís Ribeiro do IPGuarda para o Pplware
Saiba, em tempo real, várias informações de um jogo de corrida, como a velocidade, rotações por minuto, aceleração, pressão de turbo, nome do carro, entre outras;
Arduino!!! Por alguns conhecido, por uns uma incógnita, e por outros só conhecido pelo nome.
Numa sociedade, todo o indivíduo necessita de comunicar com os restantes. Para tal, desenvolveu e adquiriu, ao longo na sua vida, formas e protocolos de comunicação. Na electrónica e na informática não é menos verdade essa realidade. Cada vez mais a sociedade exige que haja comunicação entre homem/máquina e máquina/máquina. O Arduino permite tudo isso e muito mais….haja ideias.
Mas o que é o Arduino? Arduino é uma plataforma electrónica desenvolvida em Itália, projectada com micro controladores Atmel AVR de 8 bits ou Atmel ARM de 32 bits, e que tinha como objectivo proporcionar a eletrónica mais acessível à comunidade tanto a nível financeiro, como a nível de desenvolvimento de projectos.
A simplificação a nível de desenvolvimento foi conseguida através de uma ferramenta multi-plataforma escrita em Java, denominada de Arduino IDE, que proporciona ao utilizador um IDE de programação para o Arduino, bastante acessível.
A Arduino Board (ou plataforma Arduino), possui diversos tipos de pinos I/O (input/output), podendo estes ser de digital output/input (pinos digitais de input e output), PWM (Pulse Width Modulation), e de analog input (pinos analógicos de input), fornecendo assim a possibilidade de se poder ligar diverso tipo de material eletrónico, tais como LEDs, sensores, motores, ecrãs, entre outros. Está presente uma interface SERIAL ou USB que permite ao Arduino comunicar com outros dispositivos, tal como um computador normal; e também um pino que fornece 5V de tensão elétrica, e que pode ser usado por exemplo para alimentar pequenos servomotores.
Existem várias Boards que variam no micro controlador usado e no número de pinos I/O que possuem. Sendo assim, o preço será diferente dependo destes factores anteriores. Além das Boards existem também controladores denominados de SHIELDs que são possíveis de acoplar a estas Boards, e que podem oferecer uma ligação à rede através de uma porta de rede, ou de wireless; ou em que é possível sermos nós próprios a criar o nosso circuito.
Arduino Ethernet SHIELD
Arduino Proto SHIELD
Existem vários modelos clone do Arduino oficial, que são outras plataformas compatíveis com o Arduino e com o próprio IDE que possui, e que normalmente também são compatíveis com os SHIELDs oficiais.
Em suma, o Arduino é uma excelente ferramenta para quem gosta de aliar a área de programação à área da eletrónica, e por um preço bastante acessível.
Vários projectos básicos:
- Ligar/desligar uma luz
- Controlar a intensidade de uma luz (recurso a portas PWM)
- Controlar rotação de um motor
- Simular a recepção/envio de dados pela porta SERIAL
- …etc
Estes são apenas alguns projectos para iniciados que o podem ajudar a compreender melhor como funciona e como trabalhar com o Arduino.
FVM -
Mostro agora um projeto ainda “verdinho” que tenho desenvolvido com recurso a um controlador Arduino Duemilanove, que possui 6 pinos analógicos de input, 14 pinos digitais de input/output, sendo que 6 deles fornecem um output PWM, e que tem um preço de 17,50€ - ver aqui.
Neste projecto faço o uso de um jogo de corridas e de uma biblioteca (DLL), para assim ser possível saber em tempo real, várias informações deste jogo, tais como velocidade, rotações por minuto, aceleração, pressão de turbo, nome do carro, entre outras; neste jogo existe um modo que é necessário activar, e que do qual resulta o envio destas informações (informações em tempo real dos dados de simulação do jogo) num pacote UDP para uma determinada interface de rede e para um determinado porto. Através de programação, controlo estas informações e com a ligação SERIAL envio-as para o Arduino, onde depois é observado um determinado OUTPUT (que pode ser luzes a acender, motores a rodar, etc ), que foi programado.
O vídeo que se segue mostra como é possível controlar um conjunto de LEDs, que representam um conta-rotações de automóvel.
Este artigo tem mais de um ano
Excelente Projecto!
Seria também interessante se pudesses indicar algumas as informações mais relevantes para que possamos reproduzir ou experimentar projectos semelhantes.
Uma espécie de tutorial para o que não se sentem muito a vontade com interligação entre uma aplicação e o Arduino!
Cumprimentos
Vou “chatear” o autor para deixar aqui essa informação 🙂
Obrigado.
Sim posso partilhar essa informação.
É bastante simples como faço a comunicação da aplicação com o arduino.
Na aplicação do PC defino uma variavel do tipo porta de série:
(usando Visual C#)
SerialPort porta = new SerialPort(“COM4”, 57600);
porta.Write(dados);-> enviar pela porta de serie a variável dados
No arduino:
Serial.read(); -> lê os dados da porta de série do Arduino
Só temos é de ter atenção que o Arduino só lê 1 byte de cada vez.
Por isso a variável dados que envio é sempre char, porque essa só ocupa um byte.
Mas posso partilhar com mais detalhe como faço isso tudo.
Cumps e mais uma vez obrigado
Fiquei curioso sobre a ligação entre a aplicação e o Arduino.
E possível modificar qualquer aplicação ou só aquelas que permitem exportar dados(um tipo de API)?
Como se sabe quais os dados de interesse(p.e. distiguir turbo de rotações)?
Se possível um guia do projecto era interessante.
Cumps.
Exacto, como é que faz a selecção dos dados relevantes dados pelo output do jogo para o input da aplicação?
Poderia especificar melhor os processos?
Cumprimentos
Viva
Como é dito no artigo, eu uso uma biblioteca que ja possui métodos do tipo GET para saber rotações, velocidade…
Só basta colocar esta DLL como referência no projecto.
Achei o projecto altamente interessante. Eu durante este verão comecei a mexer nos arduinos, tentar perceber como funcionam etc….
Se pode-ses disponibilizar um tutorial ou algo do género seria genial…
Eu por exemplo gostava de fazer o mesmo para o dirt 3 e grid 2, por uns leds a assinalar o nº de rotações e um display numero a dar conta do nº da mudança…. ou até ter só um display lcd com o numero exacto de rpm e mudança….
qual é o jogo? existem vários jogos com esta possibilidade de comunicação?
Pode usar o Live for Speed, mas muitos jogos da Codemasters (DIRT 2,3 e F1 2012) também podem ser configurados para tal.
Luis se não for muito incómodo porque não fazer uma espécie de guia com algumas dicas para quem não esta ainda muito dentro destes temas?
Cumps
Muito fixe puto, vê-se mesmo que estudaste no I.P.G.
Continua com essa disposição, para fazeres projectos deste ou de outros tipos.
Parabéns!
Estes sao bons projectos mas existem apps para android com uma finalidade parcida
podes dar o nome de algumas dessas apps?
Ola boa noite. Eu precisava de falar com o autor deste projecto, para lhe mostrar um plano para um projecto o qual era importante uma ajuda!
Pedia a alguém da administração que tem visibilidade do meu email, que o desse ao autor para ele poder entrar em contacto comigo!
Viva
Podes usar este site que foi por onde comecei
http://insimdotnet.codeplex.com/
Cumps
como faço pra pegar informaçoes do jogo e jogar no C#?
Viva
Podes usar este site que foi por onde comecei
http://insimdotnet.codeplex.com/
Lá tens DLL que falo em cima, e também exemplos de como te iniciares
Para ires buscar as informações do jogo tens de alterar umas linhas no ficheiro de configuração do Live for speed:
Neste site estão as instruções:
http://insimdotnet.codeplex.com/wikipage?title=OutSim%20and%20OutGauge
Cumps
fiz um projeto semelhante usei o flightgear um simulador de voo que ultiliza um teclado para ser controlado e substitui por um controle joystick de xbox
e tambem ultilizei as informações e angulos da aeronave e reproduzi em cilindros hidraulicos tudo ultilizando arduino
( o projeto foi para o tcc do senai de automação eu e mais uma amiga e o orientador desenvolvemos)
É muito simples, o autor simplesmente copio e colo este post, devido a não querer responder as perguntas de como foi feito para dar um get nas informações e um post no arduino, referente a dll eu já estudei algo e acho que consigo desenvolver algo semelhante, se pesquisarem no youtube por tachometer bmw arduino vocês vão ver um exemplo de um painel da bmw sendo utilizado com os valores do jogo grid2 ficou muito real.
Agora se o autor tiver um pouquinho de ética, posta a origem do post, ou então prova pra galera que foi ele que desenvolveu postando o code 😉
Parabéns pelo projeto!!
Eu gostaria de saber se pode me tirar uma duvida.
É o seguinte tenho interesse de fazer um Conta – Giros para usar nos meus jogos de simulação de carro e tudo mais, como Project Cars, f1 entre outros, mais a minha plataforma é o playstation 4, Queria saber como posso fazer a comunicação do playstation 4 com o Arduino, sem a necessidade de algum cabo ligado a algum computador para emulação ou algo do tipo, apenas o arduino e o ps4!!