/******************************************************************************
Nome do Arquivo : main.c
Descrição : Arquivo principal aula 14, exemplo 1
Ambiente : WOKWI e RP2040 C/C++ SDK
Responsável : Weslley M. Torres
Versão/Data : 1.0.0 - 25/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/gpio.h"
/*****************************************************************************/
/******************************************************************************
Variaveis Globais
******************************************************************************/
#define BUTTON_PIN 15
#define LED_PIN 8
#define BUTTON2_PIN 14
#define LED2_PIN 7
/*****************************************************************************/
/******************************************************************************
Prototipos das funções
******************************************************************************/
void system_init(void);
void button_callback(void);
/*****************************************************************************/
/******************************************************************************
Funcao: int main(void)
Entrada: Nenhuma (void)
SaÃda: Nenhuma (void)
Descrição: Função principal
*****************************************************************************/
void main(void)
{
uint8_t texto_linha_um[17] = "FATEC S.A. 2025";
uint8_t texto_linha_dois[17] = " Interrupts ";
uint8_t texto_led1[17] = "LED 1: ";
uint8_t texto_led2[17] = "LED 2: ";
uint8_t texto_ligado[17] = "high";
uint8_t texto_desligado[17] = "low";
stdio_init_all();
printf("Microcontroladores - Aula 12\n");
sleep_ms(250);
system_init();
posicao_cursor_lcd(1, 1);
escreve_frase_ram_lcd(texto_linha_um);
posicao_cursor_lcd(2, 1);
escreve_frase_ram_lcd(texto_linha_dois);
while(true)
{
posicao_cursor_lcd(1, 1);
escreve_frase_ram_lcd(texto_linha_um);
posicao_cursor_lcd(2, 1);
escreve_frase_ram_lcd(texto_linha_dois);
DesligaCursor();
gpio_put(LED2_PIN, !gpio_get(BUTTON2_PIN));
sleep_ms(50);
}
}
/******************************************************************************
Funcao: void system_init(void)
Entrada: Nenhuma (void)
SaÃda: Nenhuma (void)
Descrição: Inicializa sistema (microcontrolador e periféricos)
*****************************************************************************/
void system_init(void)
{
printf("Init Hardware ....\n");
sleep_ms(10);
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
gpio_put(LED_PIN, 0);
gpio_init(BUTTON_PIN);
gpio_set_dir(BUTTON_PIN, GPIO_IN);
gpio_pull_up(BUTTON_PIN); // Enable pull-up resistor
gpio_init(LED2_PIN);
gpio_set_dir(LED2_PIN, GPIO_OUT);
gpio_put(LED2_PIN, 0);
gpio_init(BUTTON2_PIN);
gpio_set_dir(BUTTON2_PIN, GPIO_IN);
gpio_pull_up(BUTTON2_PIN);
gpio_set_irq_enabled_with_callback(BUTTON_PIN, GPIO_IRQ_EDGE_FALL|GPIO_IRQ_EDGE_RISE, true, (gpio_irq_callback_t)&button_callback);
//gpio_set_irq_enabled_with_callback(BUTTON2_PIN, GPIO_IRQ_EDGE_FALL, true, (gpio_irq_callback_t)&button_callback);
init_lcd();
}
/******************************************************************************
Funcao: void button_callback(void)
Entrada: Nenhuma (void)
SaÃda: Nenhuma (void)
Descrição: Função tratamento interrupcao do botao
*****************************************************************************/
void button_callback(void)
{
gpio_put(LED_PIN, !gpio_get(LED_PIN)); // Toggle the LED
printf("Button 1 pressed!\n");
}