162.Genesis


 * Grupo**

Isaías Lima Leonardo Moreira Milena Baptista Victor Fontolan Vinicius Bortoleto


 * Projeto**

Genesis


 * Resumo**

O projeto consiste em um jogo de puzzle e suspense utilizando a conexão entre Arduino e Unity.


 * Software / Materiais utilizados**


 * Softwares**

Unity 5.4

IDE do Arduino

Biblioteca System.io no Unity

Biblioteca Keypad no Arduino

Uso de StreamReader no Unity


 * Materiais**

Arduino UNO

Keypad 4x3

Case feito de madeira

Fios para conexão do Pad com a placa

USB para conexão Arduino – PC


 * Metodologia**

Nosso jogo usa como principal fonte de interação o KeyPad 4x3 que passa as informações do Arduino para o Unity através da porta COM, também usa o Mouse para algumas funções menores. No Unity nós tratamos esses dados recebidos pelo Arduino e criamos diversas situações que o jogador terá que resolver apenas com os inputs do Keypad.


 * Desenvolvimento**

Primeiramente foi necessário fazer as conexões entre o Keypad 4x3 e a placa do Arduino, de forma que os caracteres pressionados saíssem de forma correta no Serial da IDE, utilizamos a biblioteca Keypad.h disponível no site do Arduino Playground, que consiste em ler a matriz de botões. Assim que concluímos essa parte, realizamos através da porta Serial o envio dos inputs recebidos pelo teclado. Após a programação no Arduino, o próximo desafio foi realizar a conexão entre a IDE e o Unity, depois que estudamos alguns tutoriais na internet, realizamos essa conexão através da Porta Serial COM, para isso utilizamos a biblioteca System.IO.Ports e System.IO, que nos permite usar a conexão na porta usada pelo Arduino. Essas bibliotecas também foram aproveitadas para fazer a leitura de arquivos TXT através do StreamReader, para economizar códigos colocamos as senhas dos puzzles em um arquivo TXT e através do uso desse comando nós conseguimos ler o arquivo e fazer um filtro para validar se o jogador conseguiu fazer a resposta correta.

 Além da parte dos códigos também fizemos algumas interfaces gráficas básicas, a interação do mouse com a tela foi feita através de elementos UI que o Unity fornece, como o Botão do computador, o restante foi feito através do controle de animações.


 * Resultados**








 * Script responsável pela conexão Unity-Arduino**

code using UnityEngine; using UnityEngine.UI; using System.Collections; using System.IO.Ports; using System.IO;

public class po : MonoBehaviour {   SerialPort sp = new SerialPort ("COM6", 57600); public int i = 0, j = 0, t = 0, checador = 0, verificador = 0, achou = 0, readeropen = 0, readerclose = 0; Text var; string[] Linhas; StreamReader sr, jk; public Animator anim; public string getsenha = null, senha = null, senhabloco = null, linha = null;

void Start {       sr = new StreamReader (Application.dataPath + "/" + "textounity.txt"); anim = GetComponent ; sp.Open ; sp.ReadTimeout = 1; var = GetComponent ; }

void Update {       if (this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Genesis")) { anim.SetBool ("acabou", true); }       if (readeropen == 1) { sr.Close ; sr = new StreamReader (Application.dataPath + "/" + "textounity.txt"); readeropen++; }

try { if (i == 3) { while (j < 3) {

linha = sr.ReadLine ; if (senha == linha) { anim.SetBool ("senhaok", true); achou = 1; verificador = 1;

} else { j++;

}               }                if (j == 3 && achou != 1) { verificador = 2; }           } else { getsenha = sp.ReadLine ; senha = senha + "" + getsenha; i++;

}       } catch (System.Exception) { }   } }

code

code
 * Script Arduino:**
 * 1) include 

const byte LINHAS = 4; const byte COLUNAS = 3;

char matriz_teclas[LINHAS][COLUNAS] = { {'1','2','3'},  {'4','5','6'},  {'7','8','9'},  {'*','0','#'} };

byte PinosLinhas[LINHAS] = {8, 7, 6, 5}; byte PinosColunas[COLUNAS] = {4, 3, 2};

Keypad meuteclado = Keypad( makeKeymap(matriz_teclas), PinosLinhas,                           PinosColunas, LINHAS, COLUNAS);

void setup { Serial.begin(57600); }

void loop{

char tecla_pressionada = meuteclado.getKey; if (tecla_pressionada) {   Serial.println(tecla_pressionada); } } code


 * Conclusão**

Podemos concluir que o Arduino é um dispositivo com inúmeras utilidades e aplicações. Nós resolvemos focar em criar um jogo que utilize o mesmo. Nosso objetivo foi juntar o mundo real com o virtual, criando um jogo que é comandado pelas ações que o jogador faz a partir do equipamento montado com o Arduino. Com os acessórios corretos é possível aprimorar de forma muito ampla a utilização do Arduino para as devidas funções.

Assim, pode-se observar que é possível mesclar conhecimento de criação de jogos com conhecimentos sobre utilização de Arduino, sendo possível transformar o Arduino em um equipamento que siga a temática e o contexto do jogo criado.