//Nome:Estrela José Marcolino
#include <stdio.h>
#include "pico/stdlib.h"
// Definição de pinos para o teclado matricial
#define ROW_1 2
#define ROW_2 3
#define ROW_3 4
#define ROW_4 5
#define COL_1 6
#define COL_2 7
#define COL_3 8
#define COL_4 9
// LEDs
#define LED_VERDE 15
#define LED_VERMELHO 14
// Inicializa LEDs
void inicializar_leds() {
gpio_init(LED_VERDE);
gpio_set_dir(LED_VERDE, GPIO_OUT);
gpio_put(LED_VERDE, 0); // Apaga LED Verde
gpio_init(LED_VERMELHO);
gpio_set_dir(LED_VERMELHO, GPIO_OUT);
gpio_put(LED_VERMELHO, 0); // Apaga LED Vermelho
}
// Inicializa o teclado matricial
void inicializar_teclado() {
// Configura as linhas como saída
gpio_init(ROW_1);
gpio_set_dir(ROW_1, GPIO_OUT);
gpio_put(ROW_1, 1);
gpio_init(ROW_2);
gpio_set_dir(ROW_2, GPIO_OUT);
gpio_put(ROW_2, 1);
gpio_init(ROW_3);
gpio_set_dir(ROW_3, GPIO_OUT);
gpio_put(ROW_3, 1);
gpio_init(ROW_4);
gpio_set_dir(ROW_4, GPIO_OUT);
gpio_put(ROW_4, 1);
// Configura as colunas como entrada com pull-up
gpio_init(COL_1);
gpio_set_dir(COL_1, GPIO_IN);
gpio_pull_up(COL_1);
gpio_init(COL_2);
gpio_set_dir(COL_2, GPIO_IN);
gpio_pull_up(COL_2);
gpio_init(COL_3);
gpio_set_dir(COL_3, GPIO_IN);
gpio_pull_up(COL_3);
gpio_init(COL_4);
gpio_set_dir(COL_4, GPIO_IN);
gpio_pull_up(COL_4);
}
// Verifica qual tecla foi pressionada
int ler_teclado() {
// Varre as linhas
gpio_put(ROW_1, 0);
if (!gpio_get(COL_1)) {
gpio_put(ROW_1, 1);
return 1; // Tecla "1" pressionada
}
gpio_put(ROW_1, 1);
// Adicione verificações para outras teclas, se necessário
return 0; // Nenhuma tecla pressionada
}
// Função principal
int main() {
stdio_init_all();
inicializar_leds();
inicializar_teclado();
printf("\n=== Bem Vindo!ao Futuro ===\n");
// Simula o nome correto
char nome_correto[] = "Estrela";
char nome_usuario[] = "Estrela"; // Nome já validado como correto
// Aguarda o dígito 1 ser pressionado
printf("Aguardando o número 1 ser pressionado...\n");
int digito_usuario = 0;
while (digito_usuario != 1) {
digito_usuario = ler_teclado(); // Verifica o teclado
}
// Verifica as condições
if (strcmp(nome_usuario, nome_correto) == 0 && digito_usuario == 1) {
gpio_put(LED_VERDE, 1); // Acende LED Verde
printf("Seja Bem Vindo Senhor Estrela! LED Verde aceso.\n");
} else {
gpio_put(LED_VERMELHO, 1); // Acende LED Vermelho
printf("Acesso não autorizado! LED Vermelho aceso.\n");
}
// Aguarda antes de desligar os LEDs
sleep_ms(9000);
// Desliga LEDs antes de encerrar
gpio_put(LED_VERDE, 0);
gpio_put(LED_VERMELHO, 0);
return 0;
}