Want to create interactive content? It’s easy in Genially!

Get started free

Relatorio

Sergio Rodrigues

Created on October 12, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Tech Presentation Mobile

Geniaflix Presentation

Vintage Mosaic Presentation

Shadow Presentation

Newspaper Presentation

Zen Presentation

Audio tutorial

Transcript

Relatorio

Contextualize Your Topic with a Subtitle

Apresentação do projeto tinkercad

INDEX

  • Introdução
  • Objetivo do projeto
  • Componentes ultilizados
  • Funcionamento do Sistema

Contextualize Your Topic with a Subtitle

  • Fluxograma / Lógica de Programação
  • Explicação do codigo
  • Conclusão

Introdução

Apresentação geral do projeto e o seu propósito.

O projeto consiste no desenvolvimento de um sistema automático de abertura de porta que combina segurança, facilidade e gestão energética. O sistema utiliza um sensor de proximidade ultrasonico para detetar a presença de uma pessoa e um teclado numérico para introdução de um código de acesso. Após a inserção do código, um visor informa se o código está correto ou incorreto, enquanto um LED indica a proximidade do utilizador em relação à porta. Quando o código é validado com sucesso, o mecanismo de abertura é ativado, permitindo o acesso de forma segura e controlada e caso o utilizador coloque o código errado 3 vezes o sistema bloqueia durante 10 segundos.

Contextualize Your Topic with a Subtitle

+INFO

Objetivo do projeto

O que prentendemos alcançar com o projeto.

Com este projeto pretendemos criar um sistema de segurança automatizado e 100% personalizavel para locais restritos em que o usuario necessita de um codigo que pode ser alterado no script que controla o sistema e caso o usuario coloque o codigo errado 3 vezes ativa o sistema de bloqueio que consiste em desativar o teclado numerico durante 10 segundos mas que tambem pode ser alterado no script que controla o sistema.

Contextualize Your Topic with a Subtitle

+INFO

LISTA

Componentes ultizados

Lista abaixo

Funcionamento do Sistema

Explicação de como o sistema funciona

O sistema tem um sensor ultrasonico que envia um pulso que vai e volta assim descubrindo a distancia a que o utilizador se encontra da porta se esta distancia for superior a 50cm o LCD mostra "Esperando ultilizador" caso seja menor o teclado matricial e ativado e o LCD mostra "Digite o codigo" caso o codigo seja digitado correto a porta(micro servo) sera abertae o LCD mostrara "Acesso concedido" caso ocorra o contrario e o codigo esteja errado o LCD mostrara "Codigo incorreto" mas se o utilizador errar 3 vezes o sistema de bloqueio sera ativado, este sistema consiste em desligare o teclado matricial durante 10 seg fazendo com que nao seja possivel escrever o codigo

Contextualize Your Topic with a Subtitle

Fluxograma / Lógica de Programação

Subtitle here

Explicação do codigo

Bibliotecas e defenição das ligações

O que são Bibliotecas?As bibliotecas nao são mais do que um codigo pre-escrito que nos podemos usar sem termos de o escrever novamente e são adicionadas com #include <Nome da biblioteca>

Bibliotecas usadas:#include <Servo.h> #include <Keypad.h> #include <LiquidCrystal.h>

Definição das ligações LiquidCrystal lcd(12, 11, 5, 4, 3, 2); Servo portaServo;

O que e que este trecho faz? Este trecho faz algo muito simples e importante. O LiquidCrystal lcd(12, 11, 5, 4, 3, 2); esta a dizer que esses sao os pinos em que o (RS, E, D4, D5, D6, D7) estao ligados. O Servo portaServo; e um objeto criado usado para enviar comandos a um servo motor

+INFO

Explicação do codigo

Deteção de Presença

O que faz o trecho ao lado?O digitalWrite(trigPin, HIGH); envia um pulse que ao bater em algo volta e aqui entra o duration = pulseIn(echoPin, HIGH); que recebe o pulse e calcula quantos segundos demorou a ir e voltar

Medidor de distancia ultrassonico: digitalWrite(trigPin, HIGH); duration = pulseIn(echoPin, HIGH);

Calcula a distancia em cm: distance = duration * 0.034 / 2;

O que e que este trecho faz? Este trecho faz algo muito simples que e calcular a distancia em centimeteros. Explicando mais tecniamente o codigo faz a seginte conta A distancia(cm) = Tempo×Velocidade do som/2

Explicação do codigo

Deteção de Presença

Confirma o codigo e abre o Micro Servo: if (codigoDigitado==codigoCorreto) { lcd.print("Acesso concedido"); portaServo.write(90); }

Vamos explicar por partes: Aqui diz que se o codigoDigitado for igual ao correto alguma coisa acontece: if (codigoDigitado == codigoCorreto) { Como o lcd.print("Acesso concedido"); e o portaServo.write(90); } estao dentro do if quer dizer que se o codigoDigitado for igual ao codigoCorreto o LCD vai escrever Acesso concedido e o servo vai rodar 90 graus

Explicação do codigo

Deteção de Presença

Tentativas e bloqueio: if (tentativas >= 3) { bloqueado = true; tempoBloqueio = millis(); }

Vamos explicar por partes: Aqui o codigo diz que se o numero de tentativas for maior que o limete que neste caso e 3 ela ativa o bloqueio e o tempoBloqueio liga

Conclusão

Resumindo as funções do projetoO projeto desenvolvido no Tinkercad teve como objetivo criar um sistema de segurança com sensor de distância, teclado e servo motor. Quando alguém se aproxima a menos de 50 cm, o sistema pede uma senha. Caso a senha esteja correta, o servo abre e o LCD mostra “Acesso concedido”. Após três erros seguidos, o sistema bloqueia por 10 segundos.

Que conhecimentos ganhei Através deste projeto aprendi a integrar diferentes componentes eletrónicos e a compreender melhor a lógica de programação em Arduino e a importancia de ir testando o codigo a cada adição

THANK YOU!

With this function...

With this function...You can add additional content that excites the brain of your audience: videos, images, links, interactivity... Whatever you want!

Write an awesome headline

An awesome presentation...
  • Represent data with graphics.
  • Use timelines.
  • It is animated and interactive.
  • Excite the brain through multimedia elements.
  • DO NOT go overboard with bullet points 🙃​.
  • It is clear and structured
  • It tells stories hierarchically.
  • It matches your audience.
  • It adapts fonts and color to the theme.
  • It includes images and entertains.

Write an awesome headline

An awesome presentation...
  • Represent data with graphics.
  • Use timelines.
  • It is animated and interactive.
  • Excite the brain through multimedia elements.
  • DO NOT go overboard with bullet points 🙃​.
  • It is clear and structured
  • It tells stories hierarchically.
  • It matches your audience.
  • It adapts fonts and color to the theme.
  • It includes images and entertains.

PROMPT SCRIPT

#include <Servo.h> #include <Keypad.h> #include <LiquidCrystal.h> int ledPin = A5; //LCD pinos(RS, E, D4, D5, D6, D7) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Servo Servo portaServo; const byte LINHAS = 4; const byte COLUNAS = 4; char teclas[LINHAS][COLUNAS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pinosLinhas[LINHAS] = {A0, A1, A2, A3}; byte pinosColunas[COLUNAS] = {8, 9, 10, A4}; Keypad teclado = Keypad(makeKeymap(teclas), pinosLinhas, pinosColunas, LINHAS, COLUNAS); //sensor distance const int trigPin = 7; const int echoPin = 6; long duration; int distance; //variaveis Codigo String codigoDigitado = ""; String codigoCorreto = "1234"; //contador de tentativas int tentativas = 0; bool bloqueado = false; unsigned long tempoBloqueio = 0; //Estado do sistema enum Estado {ESPERAR, DIGITAR, RESULTADO}; Estado estadoAtual = ESPERAR; unsigned long ultimoTempoLCD = 0; //evitar atualizaçoes desnecessárias void setup () { lcd.begin(16, 2); portaServo.attach(13); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // define o LED como saída e garante que começa desligado pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); lcd.print("Sistema PRONTO..."); delay(1500); lcd.clear(); portaServo.write(0); } void loop () { // se o sistema estiver bloqueado if (bloqueado) { if (millis() - tempoBloqueio < 10000) { // 10 segundos de bloqueio lcd.setCursor(0, 0); lcd.print("Acesso bloqueado"); lcd.setCursor(0, 1); lcd.print("Aguarde..."); return; // ignora o resto do loop } else { bloqueado = false; tentativas = 0; lcd.clear(); lcd.print("Sistema pronto"); delay(1000); lcd.clear(); } } //impulso ultrasonico digitalWrite(trigPin, LOW); delay(2); digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); //pulse int distance = duration * 0.034 / 2; //tempo em CM //LCD if (distance > 50 && estadoAtual != ESPERAR) { estadoAtual = ESPERAR; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Waiting"); lcd.setCursor(0, 1); lcd.print("Utilizador "); delay(700); codigoDigitado = ""; } else if (distance <= 50 && estadoAtual == ESPERAR){ estadoAtual = DIGITAR; lcd.clear (); lcd.setCursor(0, 0); lcd.print("Digite o Codigo"); } //quando digitarem if (estadoAtual == DIGITAR) { char tecla = teclado.getKey (); if (tecla) { if (tecla == '#') { lcd.clear(); if (codigoDigitado == codigoCorreto) { lcd.print("Acesso concedido"); portaServo.write(90); digitalWrite(ledPin, HIGH); delay(5000); portaServo.write(0); digitalWrite(ledPin, LOW); tentativas = 0; // reset tentativas codigoDigitado = ""; } else { tentativas++; lcd.print("Codigo incorreto"); codigoDigitado =""; if (tentativas >= 3) { bloqueado = true; tempoBloqueio = millis(); lcd.clear(); lcd.print("Acesso bloqueado"); lcd.setCursor(0, 1); lcd.print("Aguarde 10 seg"); codigoDigitado = ""; } } estadoAtual = RESULTADO; ultimoTempoLCD = millis(); } else if (tecla == '*') { codigoDigitado = ""; lcd.setCursor(0, 1); lcd.print(" "); } else { codigoDigitado += tecla; lcd.setCursor(0, 1); lcd.print(codigoDigitado); } } } if(estadoAtual == RESULTADO && millis() - ultimoTempoLCD > 2000 && !bloqueado) { estadoAtual = ESPERAR; lcd.clear(); lcd.print("Aguardando"); lcd.setCursor(0, 1); lcd.print("Utilizador..."); } delay(50); }