//incluir bibliotecas
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "display_lcd.h"
//criar apelidos
#define LED_VERMELHO 16
#define LED_VERDE 17
#define BTN_VERDE 21
#define BTN_VERMELHO 20
#define OUT 1
#define IN 0
#define OFF 0
#define ON 1
//criar variáveis
unsigned char estado_btn_verde;
unsigned char estado_btn_vermelho;
int main() {
stdio_init_all();
//criação de uma função própria que gauarda outras funções de configuração
system_init();
init_lcd(); //inicializa o displayLCD
LigaDisplay(); //Liga a tela do display e remove o cursor da tela
while (true) {
//realiza a leitura dos botões
estado_btn_verde = gpio_get(BTN_VERDE);
estado_btn_vermelho = gpio_get(BTN_VERMELHO);
posicao_cursor_lcd(1, 1); //posiciona o curso na linha 1 coluna 1
escreve_frase_ram_lcd("BTN VERMELHO: 1");
posicao_cursor_lcd(2, 1); //posiciona o curso na linha 2 coluna 1
escreve_frase_ram_lcd("BTN VERDE: 1");
sleep_ms(100); //Aguarda um tempo e realiza uma nova leitura/conversão
//1 botão para ligar/desligar o LED
if(estado_btn_vermelho == 0)
{
posicao_cursor_lcd(1, 1); //posiciona o curso na linha 1 coluna 1
gpio_put(LED_VERMELHO,!gpio_get(LED_VERMELHO)); //Escreve na saída o valor negado da leitura deste pino
escreve_frase_ram_lcd("BTN VERMELHO: 0");
//atraso para realizar novamente as leituras
sleep_ms(250);
DesligaCursor(); //Permite "reescrever" o valor sob o anterior
}
else if(estado_btn_verde == 0)
{
posicao_cursor_lcd(2, 1); //posiciona o curso na linha 2 coluna 1
gpio_put(LED_VERDE,!gpio_get(LED_VERDE)); //Escreve na saída o valor negado da leitura deste pino
escreve_frase_ram_lcd("BTN VERDE: 0");
//atraso para realizar novamente as leituras
sleep_ms(250);
DesligaCursor(); //Permite "reescrever" o valor sob o anterior
}
}
}
//Criação de uma função pelo usuário que executa os comandos de configuração, esta função não recebe nada e não envia nada
void system_init(void)
{
//habilita os pinos para configuração
gpio_init(LED_VERMELHO);
gpio_init(LED_VERDE);
gpio_init(BTN_VERDE);
gpio_init(BTN_VERMELHO);
//configura os pinos como entrada e saída
gpio_set_dir(LED_VERMELHO,OUT);
gpio_set_dir(LED_VERDE,OUT);
gpio_set_dir(BTN_VERDE,IN);
gpio_set_dir(BTN_VERMELHO,IN);
//habilita os resistores de pull up para os pinos de entrada
gpio_pull_up(BTN_VERDE);
gpio_pull_up(BTN_VERMELHO);
}