19-2 Grupo 7

## Autores

Guilherme Simionato RA: 0040961823018

Gabriel de Oliveira Neri RA: 0040961823021

Kaio Soares Rauta RA: 0040961823037

Fabio Neves de Lima RA: 0040961713021

Erik Riccioppo RA: 0040961823011

## Resumo

Neste projeto iremos mostrar uma trava digital que como o nome sugere, abre ou fecha a tranca de acordo com a senha utilizada pelo usuário.

## Software/materiais utilizados

1. Teclado;
2. Leds;
3. Servo motor

Software — Arduino IDE

## Metodologia

Em si, o projeto inteiro tem como base a placa padrão do Arduino. Cada componente apresenta sua própria entrada e logo em seguida são colocados em funcionamento através do código.

1. O usuário entra com a senha utilizando o teclado;
2. Depois de uma certa sequencia o programa faz a verificação da senha;
3. A resposta de senha certa ou errada é indicada com o piscar do led e eventualmente (se correta) com o movimentar da trava;

## Desenvolvimento

O primeiro passo do projeto foi elaborar como seria o desenvolvimento do mesmo, então foi decidido que cada componente seria tratado como uma parte separada no momento do desenvolvimento, este método foi escolhido pelo fato de simplificar o desenvolvimento por parte dos programadores.

Após isto, definimos como 'motor de alimentação' o cabo fornecido pelo professor, sendo necessário somente um computador para a transmissão de energia, como citado acima os componentes foram conectados de forma a serem considerados 'módulos' (1 por vez) e para cada testes únicos foram realizados com códigos simples para seu funcionamento o primeiro foi o teclado membrana 4x3, o segundo o led vermelho para sinalizar um erro, o terceiro o servo motor junto a uma placa (que irá simular a tranca) e por ultimo o led RBG para sinalizar sucesso, no final foram realizados testes de persistência (teste que prevê o funcionamento projetado) para todos os componentes em conjunto.

A maior dificuldade encontrada pelo grupo durante o desenvolvimento foi a pequena quantidade de portas localizadas no Arduino e uma maneira mais organizada para a ligação de cada componente, com isso em mente vários projetos foram analisados para a coleta de experiencia e melhoria do nosso projeto.

**código fonte do projeto:**

```
#include <Keypad.h>
#include <Servo.h>

const byte LINHAS = 4;
const byte COLUNAS = 3;
const int pinoServo = 12;

const int ledVerde = 2;
const int ledAzul = 3;
const int ledVermelho = 11;

Servo s;
int pos;

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

byte PinosLinhas[LINHAS] = {4, 5, 6, 7};
byte PinosColunas[COLUNAS] = {8, 9, 10};
char senha[8] = {};
char senhaCorreta[8] = {'1','1','1','1','1','1','1','1'};
int posicaoSenha = 0;
int i = 0;
boolean isSenhaCorreta = true;
char tecla_anterior = '#';
int count = 0;
char tecla_pressionada = "";

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

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  Serial.println("Aguardando acionamento das teclas...");
  Serial.println();
  pinMode(ledVermelho, OUTPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(ledAzul, OUTPUT);
  s.attach(pinoServo);
  s.write(0);
}

void loop()
{
  tecla_pressionada = meuteclado.getKey();

  if (tecla_pressionada)
  {
    senha[posicaoSenha] = tecla_pressionada;
    posicaoSenha = posicaoSenha + 1;
    if(posicaoSenha == 8) {
      for(i = 0; i < posicaoSenha; i++) {

         if(senha[i] != (int)senhaCorreta[i]) {
            isSenhaCorreta = false;
         }
      }
      if(isSenhaCorreta) {
        Serial.println("Senha correta, acessando sistema!!");
        digitalWrite(ledVerde,HIGH);
        delay(5000);
        digitalWrite(ledVerde,LOW);

        delay(1000);
        for(pos = 0; pos < 90; pos++)
          {
            s.write(pos);
          delay(15);
          }
        delay(5000);
          for(pos = 90; pos >= 0; pos--)
          {
            s.write(pos);
            delay(15);
          }
          posicaoSenha = 0;
          isSenhaCorreta = true;

      } else {
        Serial.println("Senha incorreta, tente novamente!");
        digitalWrite(13, HIGH);
        delay(4000);
        digitalWrite(13, LOW);
        delay(1000);
        posicaoSenha = 0;
        isSenhaCorreta = true;
      }
    }
  }
}

```

## Resultados

Nosso grupo conseguiu atingir os resultados esperados porém houveram algumas dificuldades já comentados em relação a ligação dos cabos na placa Arduino e protoboard, contudo através das pesquisas realizadas pelo grupo, foi possível resolver essas dificuldades e aperfeiçoar o projeto, tanto no código como no design em geral.

## Conclusão

Obtivemos sucesso no desenvolvimento do projeto, tendo em vista todas as dificuldades encontradas durante o desenvolvimento porém graças as pesquisas realizadas conseguimos obter um avanço significativo.

Foi possível aprender sobre o funcionamento de um teclado membrana 4x3 e de um servo motor e aplica-los juntos aos demais componentes assim criando um micro-projeto de tranca digital.