#include "pico/stdlib.h"
#include "hardware/uart.h"
// Definições de pinos e UARTs
#define UART0_TX_PIN 0 // GPIO 0 para TX da UART0
#define UART0_RX_PIN 1 // GPIO 1 para RX da UART0
#define UART1_TX_PIN 4 // GPIO 4 para TX da UART1
#define UART1_RX_PIN 5 // GPIO 5 para RX da UART1
int main() {
// Inicialização das UARTs
stdio_init_all(); // Inicializa a comunicação padrão com o console
uart_init(uart0, 115200); // Inicializa UART0 com baud rate de 115200
uart_init(uart1, 115200); // Inicializa UART1 com baud rate de 115200
// Configuração dos pinos da UART0
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
// Configuração dos pinos da UART1
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
printf("Sistema inicializado. Digite algo no console para testar a comunicação.\n");
while (true) {
char buffer[100]; // Buffer para armazenar dados recebidos
// Lê uma linha do console usando scanf
printf("Digite uma mensagem: ");
scanf("%99s", buffer);
// Envia os dados da UART0 para UART1
printf("Enviando mensagem via UART0 para UART1...\n");
for (int i = 0; buffer[i] != '\0'; i++) {
uart_putc(uart0, buffer[i]); // Envia caractere pela UART0
}
// Adiciona um caractere de fim de linha
uart_putc(uart0, '\n');
// Recebe os dados da UART1
printf("Recebendo mensagem de volta pela UART1...\n");
int index = 0;
while (uart_is_readable(uart1)) {
buffer[index++] = uart_getc(uart1); // Lê caractere pela UART1
if (index >= 99) break; // Evita estouro do buffer
}
buffer[index] = '\0'; // Finaliza a string
// Exibe os dados recebidos no console
printf("Mensagem recebida: %s\n", buffer);
}
return 0;
}