/******************************************************************************
* Nome do Arquivo : main.c
*
* Descrição : Arquivo principal aula 4, exemplo 3
*
* Ambiente : WOKWI e RP2040 C/C++ SDK
*
* Responsável : Weslley M. Torres
*
* Versão/Data : 1.0.0 - 10/03/2024 - Initial version
*
*****************************************************************************/
/******************************************************************************
* HEADER-FILES (Somente os arquivos necessários nesse arquivo)
******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "display_lcd.h"
#include "hardware/timer.h"
/*****************************************************************************/
/******************************************************************************
* Variaveis Globais
******************************************************************************/
#define OUT_H 1
#define OUT_L 0
#define OUT 1
#define IN 0
#define DELAY 50000
#define ALARM_NUM 0
#define ALARM_IRQ timer_hardware_alarm_get_irq_num(timer_hw, ALARM_NUM)
uint8_t nome_ra= 1;
uint8_t trava=1;
uint8_t contagem=0;
/*****************************************************************************/
/******************************************************************************
* Prototipos das funções
******************************************************************************/
void system_init(void);
void alarm_irq(void);
/*****************************************************************************/
/******************************************************************************
* Funcao: int main(void)
* Entrada: Nenhuma (void)
* Saída: Nenhuma (void)
* Descrição: Função principal
*****************************************************************************/
void main(void)
{
uint8_t nome_1[17] = "Carlos E. S. ";
uint8_t nome_2[17] = "Carlos H. C. O. ";
uint8_t nome_3[17] = "Guilherme Akaki ";
uint8_t nome_4[17] = "Julio Cesar ";
uint8_t nome_5[17] = "Nathan S. Soares";
uint8_t ra_1[17] = "1600732313022";
uint8_t ra_2[17] = "1600732213005";
uint8_t ra_3[17] = "1600732321042";
uint8_t ra_4[17] = "1600732311020";
uint8_t ra_5[17] = "1600732411020";
stdio_init_all();
system_init();
while(true){
if((trava))
{
LIMPA_DISPLAY();
if(nome_ra==1)
{
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(nome_1);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(ra_1);
}
else if(nome_ra==2)
{
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(nome_2);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(ra_2);
}
else if(nome_ra==3)
{
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(nome_3);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(ra_3);
}
else if(nome_ra==4)
{
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(nome_4);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(ra_4);
}
else if(nome_ra==5)
{
posicao_cursor_lcd(1,0);
escreve_frase_ram_lcd(nome_5);
posicao_cursor_lcd(2,0);
escreve_frase_ram_lcd(ra_5);
nome_ra=0;
}
trava=0;
nome_ra++;
DesligaCursor();
}
sleep_ms(1000);
}
}
/******************************************************************************
* Funcao: void system_init(void)
* Entrada: Nenhuma (void)
* Saída: Nenhuma (void)
* Descrição: Inicializa sistema (microcontrolador e periféricos)
*****************************************************************************/
void system_init(void)
{
init_lcd();
hw_set_bits(&timer_hw->inte, 1u << ALARM_NUM);
irq_set_exclusive_handler(ALARM_IRQ, alarm_irq);
uint64_t target = timer_hw->timerawl + DELAY;
timer_hw->alarm[ALARM_NUM] = (uint32_t) target;
irq_set_enabled(ALARM_IRQ, true);
}
void alarm_irq(void)
{
hw_clear_bits(&timer_hw->intr, 1u << ALARM_NUM);
uint64_t target = timer_hw->timerawl + DELAY;
timer_hw->alarm[ALARM_NUM] = (uint32_t) target;
contagem++;
if(contagem==60)
{
trava=1;
contagem=0;
}
}