/*******************************************************************************
FileName: main.c
Dependencies: Veja a secao de includes
Processor: Raspberry Pico
Compiler: SDK 1.5.1
Company: FATEC Santo Andre
Author: Prof. Edson Kitani
Date: 17/04/2025
Software License Agreement: Somente para fins didativos
*******************************************************************************
File Description: Leitura do Ultrassom
*
Change History:
1.0 17/04/2025 Versao inicial
2.0 12/09/2025 Ativação do Dual Core - Lembrar de modificar o CMAKEList
adicionando target_link_libraries(${projname} pico_multicore)
*******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
//#include "hardware/adc.h"
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include "pico/bootrom.h"
#include "ssd1306.h"
//#include "pico/time.h"
//#include "pico/multicore.h"
//====================================================================
// Definicoes do Projeto
//====================================================================
#define botao_B1 22 //GPIO22
#define LED_VM 2 //GPIO22
//==================================================================
// Protótipos das Funções
//void send_trigger(void);
//void gpio_callback(uint gpio, uint32_t events);
//static void core1_entry(void);
//===================================================================
// Variáveis Globais
//volatile uint32_t contador_tempo = 0; // Contador de tempo em unidades de 0,1 ms
//volatile uint32_t inicio_pulso = 0; // Armazena o tempo no início do pulso
//volatile uint32_t fim_pulso = 0; // Armazena o tempo no fim do pulso
//volatile bool captura_iniciada = false; // Flag para detectar estado do pulso
//volatile bool medida_pronta = false; // Flag para indicar que a medida está pronta
//===================================================================
// Buffer de RAM de tela
uint8_t display_buffer[128 * SSD1306_HEIGHT / 8] = {0};
//===============================================================================================
void main(void)
{
// Configura o pino 22 do botão B1 para função inicial de Boot
gpio_init(botao_B1);
gpio_set_dir(botao_B1, 0);
gpio_init(LED_VM);
gpio_set_dir(LED_VM, 1);
bool boot = gpio_get(botao_B1);
if(boot == 0) {reset_usb_boot(0, 0);}
// Inicializa a UART com baud rate de 115200 e Sensor Ultrassom
stdio_init_all();
// Inicializa a interface I2C e o display
SSD1306_init();
// Limpa o buffer
ssd1306_clear_buffer(display_buffer);
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(2000);
// Escreve texto no buffer
ssd1306_write_text(display_buffer, 32, 0, "FATEC");
ssd1306_write_text(display_buffer, 10, 8, "SANTO ANDRE");
ssd1306_write_text(display_buffer, 0, 24, "STS ABS= ");
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(2000);
//Loop principal do Core 0
while (true)
{
if((gpio_get(botao_B1)))
{
ssd1306_write_text(display_buffer, 72, 24, "OK "); //Limpa local do buffer
gpio_put(LED_VM, 0);
}
else
{
ssd1306_write_text(display_buffer, 72, 24, "FAIL");
gpio_put(LED_VM, 1);
}
// Atualiza o display com o conteúdo do buffer
ssd1306_send_data(display_buffer, 128 * SSD1306_HEIGHT / 8);
sleep_ms(1);
sleep_ms(100);
}
}