#include "pico/stdlib.h"
#include "hardware/uart.h"
#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
#define UART1_TX_PIN 4
#define UART1_RX_PIN 5
int main() {
// Inicializa a UART0 com baud rate de 115200
uart_init(uart0, 115200);
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
// Inicializa a UART1 com baud rate de 115200
uart_init(uart1, 115200);
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
// Habilita o FIFO para evitar sobrecarga de buffer
uart_set_fifo_enabled(uart0, true);
uart_set_fifo_enabled(uart1, true);
// Configuração inicial da UART0 para exibir no terminal
stdio_init_all();
printf("Digite um caractere para ser transmitido via UART0:\n");
// Loop principal
while (true) {
// Verifica se há dados disponíveis na UART0
if (uart_is_readable(uart0)) {
// Lê um caractere da UART0 (do console)
char received_char = uart_getc(uart0);
// Imprime o caractere recebido no terminal
printf("Recebido: %c\n", received_char);
// Envia o dado para a UART1
uart_putc(uart1, received_char);
// Lê o dado da UART1 e transmite de volta para a UART0
if (uart_is_readable(uart1)) {
char forwarded_char = uart_getc(uart1);
// Exibe o dado recebido de UART1 no console (UART0)
printf("Dado recebido de UART1 e enviado para o console: %c\n", forwarded_char);
uart_putc(uart0, forwarded_char);
}
}
// Adiciona um pequeno delay para garantir que o Wokwi processe a entrada
sleep_ms(10);
}
}