#include <stdio.h>
#include "pico/stdlib.h"
// Definição dos pinos do teclado matricial
//#define ROWS 4
//#define COLS 4
//#define led_green 11
//#define led_red 12
// Definição dos pinos dos segmentos do display
const uint8_t segment_pins[] = {0, 1, 2, 3, 4, 5, 6};
// Mapeamento dos dígitos para os segmentos do display
const uint8_t digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 0, 0, 1, 1} // 9
};
// Função para exibir um dígito no display
void display_digit(uint8_t digit) {
/*gpio_put(0, 1);
gpio_put(1, 1);
gpio_put(2, 1);
gpio_put(3, 0);
gpio_put(4, 0);
gpio_put(5, 1);
gpio_put(6, 1);*/
for (int i = 0; i < 7; i++) {
gpio_put(segment_pins[i], digits[digit][i]);
printf("Teste\n");
}
}
// Função para configurar todos os pinos como saída
/*void setupDisplay() {
printf("Configura todos os pinos como saída\n");
for (int i = 0; i < 7; i++) {
gpio_init(segment_pins[i]);
gpio_set_dir(segment_pins[i], GPIO_OUT);
}
for (int i = 0; i < 2; i++) {
gpio_init(display_pins[i]);
gpio_set_dir(display_pins[i], GPIO_OUT);
gpio_put(display_pins[i], 0); // Desativa inicialmente os displays
}
}*/
// Atualização dos pinos de acordo com as novas conexões
//const uint8_t row_pins[ROWS] = {28, 27, 26, 22}; // Pinos conectados às linhas R1, R2, R3, R4
//const uint8_t col_pins[COLS] = {21, 20, 19, 18}; // Pinos conectados às colunas C1, C2, C3, C4
// Mapa de teclas do teclado matricial
/*const char key_map[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};*/
// Função para inicializar os pinos do teclado
/*void keypad_init() {
printf("Inicializa o teclado matricial\n");
for (int i = 0; i < ROWS; i++) {
gpio_init(row_pins[i]);
gpio_set_dir(row_pins[i], GPIO_OUT);
gpio_put(row_pins[i], 0); // Configura as linhas como saídas em nível baixo
}
for (int i = 0; i < COLS; i++) {
gpio_init(col_pins[i]);
gpio_set_dir(col_pins[i], GPIO_IN);
gpio_pull_down(col_pins[i]); // Configura as colunas como entradas com pull-down
}
}*/
// Função para ler o teclado matricial
/*char read_keypad() {
for (int row = 0; row < ROWS; row++) {
gpio_put(row_pins[row], 1); // Ativa a linha atual
for (int col = 0; col < COLS; col++) {
if (gpio_get(col_pins[col])) { // Verifica se a coluna atual está em nível alto
gpio_put(row_pins[row], 0); // Desativa a linha atual
return key_map[row][col]; // Retorna a tecla pressionada
}
}
gpio_put(row_pins[row], 0); // Desativa a linha atual
}
return '\0'; // Retorna nulo se nenhu,a tecla for pressionada
}*/
int main() {
stdio_init_all();
//keypad_init(); // Inicializa o teclado matricial
//setupDisplay(); // Configura todos os pinos como saída
// Inicializa e configura os pinos dos segmentos como saída
for (int i = 0; i < 7; i++) {
gpio_init(segment_pins[i]);
gpio_set_dir(segment_pins[i], GPIO_OUT);
}
//char password[4] = {'9', '5', '3', '8'};
//char password_user[4] = {'0', '0', '0', '0'};
//int digSenha = 0;
//int contSenha = 0;
uint8_t numDisplay = 7;
while (true) {
display_digit(numDisplay);
/*char key = read_keypad(); //Lê o teclado
if (key != '\0') { // Verifica se uma tecla foi pressionada
printf("Tecla pressionada: %c\n", key); // Imprime a tecla pressionada
password_user[digSenha] = key;
display_digit(9); // Exibe o dígito atual no display
digSenha++;
printf("digSenha: %d\n", digSenha);
if (digSenha == 4) {
for (int i = 0; i < 4; i++) {
if (password_user[i] == password[i]) {
contSenha++;
}
}
if (contSenha == 4) {
printf("Senha correta.\n");
for (int j = 0; j < 4; j++) {
password_user[j] = '0';
}
digSenha = 0;
contSenha = 0;
} else {
printf("Senha incorreta.\n");
for (int j = 0; j < 4; j++) {
password_user[j] = '0';
}
digSenha = 0;
contSenha = 0;
}
}
}*/
sleep_ms(1000); // Aguarda para evitar múltiplas leituras da mesma tecla
}
return 0;
}