#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#define GPIO_TX0 0
#define GPIO_RX0 1
#define GPIO_TX1 4
#define GPIO_RX1 5
#define BAUD_RATE 115200
#define MAXIMO 10
// Limpa o buffer
void clear_uart_buffer(uart_inst_t *uart) {
// Ler todos os caracteres disponíveis
while (uart_is_readable(uart)) {
uart_getc(uart);
}
}
void setup() {
// Inicializa UART0
uart_init(uart0, BAUD_RATE);
gpio_set_function(GPIO_TX0, GPIO_FUNC_UART);
gpio_set_function(GPIO_RX0, GPIO_FUNC_UART);
// Inicializa UART1
uart_init(uart1, BAUD_RATE);
gpio_set_function(GPIO_TX1, GPIO_FUNC_UART);
gpio_set_function(GPIO_RX1, GPIO_FUNC_UART);
}
int main() {
stdio_init_all();
setup();
int count = 0;
while (true) {
char input_char[MAXIMO];
char output_char[MAXIMO];
printf("Digite até %d caracteres: ", MAXIMO);
scanf(" %9s", &input_char);
// Limpa o buffer da UART1 antes de enviar novo dado
clear_uart_buffer(uart1);
// Envia os dados de UART0 para UART1
for(int i = 0; i < strlen(input_char); i++) {
uart_putc(uart0, input_char[i]);
sleep_ms(10); // Pequena pausa entre caracteres
}
while(count < strlen(input_char) && uart_is_readable(uart1)) {
output_char[count] = uart_getc(uart1);
count++;
}
// Adiciona terminador de string
output_char[count] = '\0';
// Mostra os caracteres recebidos
printf("\tCaracteres recebidos: %s\n", output_char);
// Limpa o buffer após receber
clear_uart_buffer(uart1);
}
return 0;
}