/******************************************************************************
* Nome do Arquivo : main.c
*
* Descrição : Cronometro
*
* Ambiente : WOKWI e RP2040 C/C++ SDK
*
* Responsável : Nathan Santana Soares
*
*****************************************************************************/
/******************************************************************************
* HEADER-FILES (Somente os arquivos necessários nesse arquivo)
******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "display_lcd.h"
#define OUT_H 1
#define OUT_L 0
#define LED 28
#define LED_2 27
#define CHAVE 15
#define CHAVE_2 14
#define OUT 1
#define IN 0
/*****************************************************************************/
/******************************************************************************
* Prototipos das funções
******************************************************************************/
void system_init(void);
/*****************************************************************************/
/******************************************************************************
* Funcao: void main(void)
* Entrada: Nenhuma (void)
* Saída: Nenhuma (void)
* Descrição: Função principal
*****************************************************************************/
void main(void)
{
unsigned int recebe = 0;
unsigned char texto_linha_um[17] = "FATEC S.A. 2025";
unsigned char texto_linha_dois[19] = "Microcontrolador";
unsigned char texto_cronometro[17] = "Cronometro";
uint8_t estado = 1;
uint8_t estado_2 = 1;
uint16_t contagem =0;
stdio_init_all();
printf("Hello, Wokwi!\n");
sleep_ms(250);
system_init();
/* cria_caractere_lcd(0, smile);
cria_caractere_lcd(1, sad);
cria_caractere_lcd(2, circulo);
cria_caractere_lcd(3, seta_baixo);
*/
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(texto_linha_um);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(texto_linha_dois);
sleep_ms(100);
LIMPA_DISPLAY();
posicao_cursor_lcd(1,3);
escreve_frase_ram_lcd(texto_cronometro);
posicao_cursor_lcd(2,7);
escreve_inteiro_lcd(0);
DesligaCursor();
while(true)
{
contagem=0;
estado= 1;
while(estado)
{
sleep_ms(10);
estado = gpio_get(CHAVE);
printf("Verificando Botao Verde \n");
}
estado_2 = gpio_get(CHAVE_2);
for(uint8_t conte=0;estado_2!=0;conte++)
{
printf("Contando \n");
sleep_ms(10);
if(!(conte%100))
{
printf("Escrita no LCD \n");
LIMPA_DISPLAY();
posicao_cursor_lcd(1,3);
escreve_frase_ram_lcd(texto_cronometro);
posicao_cursor_lcd(2,7);
escreve_inteiro_lcd(contagem);
DesligaCursor();
contagem++;
}
estado_2 = gpio_get(CHAVE_2);
}
printf("Botao Vermelho Pressionado \n");
//LIMPA_DISPLAY();
//posicao_cursor_lcd(1,10);
sleep_ms(10);
}
}
/******************************************************************************
* Funcao: void system_init(void)
* Entrada: Nenhuma (void)
* Saída: Nenhuma (void)
* Descrição: Inicializa sistema (microcontrolador e periféricos)
*****************************************************************************/
void system_init(void)
{
gpio_init(LED);
gpio_set_dir(LED, OUT);
gpio_init(LED_2);
gpio_set_dir(LED_2, OUT);
gpio_init(CHAVE);
gpio_set_dir(CHAVE, IN);
gpio_pull_up(CHAVE);
gpio_init(CHAVE_2);
gpio_set_dir(CHAVE_2, IN);
gpio_pull_up(CHAVE_2);
printf("System Init!\n");
sleep_ms(250);
init_lcd();
}