#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"

int main() {
  // Inicializa a comunicação padrão (USB/UART para debug)
  stdio_init_all();

  // Configuração da UART0 para comunicação serial
  uart_init(uart0, 115200);
  gpio_set_function(0, GPIO_FUNC_UART); // Define o pino 0 como saída TX
  gpio_set_function(1, GPIO_FUNC_UART); // Define o pino 1 como entrada RX
  uart_set_fifo_enabled(uart0, true);   // Habilita FIFO para evitar perda de dados

  // Configurações adicionais da UART0
  uart_set_hw_flow(uart0, false, false); // Desativa controle de fluxo por hardware
  uart_set_format(uart0, 8, 1, UART_PARITY_NONE); // Define 8 bits de dados, 1 stop bit, sem paridade

  // Configuração da UART1 para comunicação serial
  uart_init(uart1, 115200);
  gpio_set_function(4, GPIO_FUNC_UART); // Define o pino 4 como saída TX
  gpio_set_function(5, GPIO_FUNC_UART); // Define o pino 5 como entrada RX
  uart_set_fifo_enabled(uart1, true);   // Habilita FIFO para melhor gerenciamento de buffer

  // Configurações adicionais da UART1
  uart_set_hw_flow(uart1, false, false); // Desativa controle de fluxo por hardware
  uart_set_format(uart1, 8, 1, UART_PARITY_NONE); // Define 8 bits de dados, 1 stop bit, sem paridade
  
  while (true) {   
    printf("\nDigite a informação para enviar: "); 

    char texto[100]; // Buffer para armazenar o texto digitado
    scanf("%99s", texto); // Captura a entrada do usuário (até 99 caracteres)

    printf("\nEnviando via UART0: %s", texto); 
    uart_puts(uart0, texto); // Envia a string via UART0

    sleep_ms(1000); // Aguarda um segundo antes de prosseguir

    // Verifica se há dados disponíveis na UART1
    if (uart_is_readable(uart1)) {    
      printf("\nRecebendo via UART1: ");
      while (uart_is_readable(uart1)) {  
        char c = uart_getc(uart1); // Lê um caractere recebido
        printf("%c", c); // Exibe o caractere recebido
      }      
    }
  }
}
Loading
pi-pico-w