ed50

Já está disponível a nova edição da Revista Programar, esta edição traz como destaque um artigo sobre “Azure Logic Apps: o futuro dos backends?”, contendo também um também um artigo sobre “Análise do livro Introdução ao Desenvolvimento de Jogos em Android” (pag.65) elaborado por mim, entre muitos outros artigos.

É uma revista redigida por um grupo de voluntários que tem por gosto a programação, e apresenta artigos de grande qualidade e utilidade para qualquer interessado em programação…

O Download Pode Ser Feito Aqui:

Share

5 Formas de Destruir um Arduino

Share

O mundo da tecnologia é motivado e “limitado” pela imaginação de cada um. Desta feita o artigo desta edição prende-se com a ligação de um micro-controlador Arduino ao conhecido Game Engine Unity.

O objetivo deste artigo é explicar como proceder à ligação de um micro-controlador Arduino ao Unity e usar este como uma espécie de “comando” para o jogo criado no Unity. Será um exemplo extremamente simples que resultará no controlo de um simples sprite no eixo do X sem qualquer animação especial.

Para este pequeno tutorial necessitamos dos seguintes elementos:

  • Arduino Uno
  • 2 x Push Buttons
  • Cabos de Conexão
  • Arduino IDE
  • Unity

Uma vez cumpridos os requisitos vamos dar inicio à assemblagem do pequeno circuito eletrónico que será o nosso “comando” de controlo do personagem do exemplo em Unity.

Depois de implementado o seguinte esquema eletrónico iremos passar à programação do micro-controlador Arduino.

Aqui fica o código necessário:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Definição dos pin's responsáveis pelos respectivos Push Buttons
const int botaoEsquerdo = 3;
const int botaoDireito = 4;
 
void setup()
{
   Serial.begin(9600);
   pinMode(botaoEsquerdo, INPUT);
   digitalWrite(botaoEsquerdo, HIGH);
   pinMode(botaoDireito, INPUT);
   digitalWrite(botaoDireito, HIGH);
}
 
//Método de Leitura Constante do Estado dos Push Butons
void loop()
{
   if(digitalRead(botaoEsquerdo) == LOW)
   {
      Serial.write(1);
      Serial.flush();
      delay(20);
   }
   if(digitalRead(botaoDireito) == LOW)
   {
      Serial.write(2);
      Serial.flush();
      delay(20);
   }
}

Feito o upload do código acima mostrado para o Arduino vamos passar ao Unity.

Para isso necessitamos de criar um novo projeto, assim como uma nova “scene” onde poderemos colocar um background ao nosso gosto e um “personagem” que será controlado pelo “comando” acionado pelo Arduino.

No exemplo mostrado usei ainda um elemento para o solo ao qual adicionei um “BoxCollider” assim como o personagem tem também adicionado um “BoxCollider” para que não caia no infinito. Mas estes pormenores podem ser personalizados ao gosto de cada um.


Arduino: Unity

A imagem acima mostra o exemplo que criei para ilustrar este tutorial.

Após a criação do cenário propriamente dito temos de então de criar um script em C# que será o coração do movimento e ligação com o Arduino.

Aqui está o código que deverá ser incluído no script C# para que possamos então conectar o nosso “comando” Arduino ao Personagem implementado no Unity.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using UnityEngine;
using System.Collections;
using System.IO.Ports;
 
public class Arduino : MonoBehaviour {
   //Definiçao da variavel velocidade
   public float velocidade;
   //Definiçao da Porta COM que sera utilizada
   SerialPort porta = new SerialPort("COM3", 9600);
 
   // Use this for initialization
   void Start () {
      //Abertura da Porta COM para conexao com o Arduino
      porta.Open ();
      porta.ReadTimeout = 1;
   }
 
   // Update is called once per frame
   void Update () 
   {
      //Caso a porta COM responda positivamente estao executaremos o metodo Mover()
      if(porta.IsOpen)
      {
         try
         {
            Mover (porta.ReadByte());
         }
         catch(System.Exception)
         {
         }
      }
   }
 
   //Metodo Mover que sera chamado a cada clique no Push Button
   void Mover(int direcao)
   {
      //Para a Direita
      if (direcao == 1) 
      {
         transform.Translate(-Vector2.right * velocidade * Time.deltaTime, Space.World);
      }
      //Para a Esquerda
      if (direcao == 2) 
      {
         transform.Translate(Vector2.right * velocidade * Time.deltaTime, Space.World);
      }
   }
}

Após criar o script C# apenas é necessário arrastá-lo para para o “Inspector” referente ao personagem e se tudo correu bem ao colocar a cena em execução o Arduino será capaz de enviar para o Unity as nossas ações e reproduzi-las em tempo real.

Este tutorial é apenas um pequeno exemplo de como controlar um personagem usando o Arduino, no entanto pode ser aprofundado e explorado ao gosto de cada um, sendo possível implementar uma ação “saltar”, “disparar”, basicamente tudo o que a nossa imaginação disser.

Artigo publicado na Edição 49 da Revista Programar

Share


< Já está disponível a nova edição da Revista Programar, esta edição traz como destaque um artigo sobre “ASP.NET 5”, contendo também um também um artigo sobre “Conexão de Arduino ao Unity” (pag.41) elaborado por mim, entre muitos outros artigos. É uma revista redigida por um grupo de voluntários que tem por gosto a programação, e apresenta artigos de grande qualidade e utilidade para qualquer interessado em programação… O Download Pode Ser Feito Aqui:

Share

Não sei se é um caso geral dos Geeks / Nerds chamemos-lhe assim, mas a maior parte dos meus momentos de criação / invenção ocorrem durante a noite e esta experiência não foi diferente.  Já há muito tempo andava com a ideia de tentar aliar um Arduino ao muito poderoso e conhecido Unity.

Eis o resultado…

Num post futuro explicarei passo por passo como fazer…

Related Posts Plugin for WordPress, Blogger...Share