//Antonio Sergio Castro de Carvalho Junior
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
//O loop é infinito (while (true)), permitindo que continue digitando e enviando mensagens indefinidamente
// mas pode colocar break e encerrar o loop após uma única execução.
// Definições dos pinos para UART0 e UART1
#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
#define UART1_TX_PIN 4
#define UART1_RX_PIN 5
int main() {
// Inicializa a comunicação serial para permitir o uso de printf.
stdio_init_all();
// Inicializa UART0 e UART1 com a taxa de baud de 115200
uart_init(uart0, 115200);
uart_init(uart1, 115200);
// Configura os pinos para UART0
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
// Configura os pinos para UART1
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
// Buffer para armazenar o dado recebido
char buffer[100];
while (true) {
// Lê um dado do console usando scanf
printf("Digite um dado: ");
scanf("%s", buffer);
// Envia o dado da UART0 para a UART1
uart_puts(uart0, buffer);
// Aguarda um tempo para a transmissão
sleep_ms(100);
// Recebe o dado da UART1
int i = 0;
while (uart_is_readable(uart1) && i < sizeof(buffer) - 1) {
buffer[i++] = uart_getc(uart1);
}
buffer[i] = '\0'; // Adiciona o terminador nulo ao final da string
// Verifica se houve dados recebidos
if (i > 0) {
// Imprime o dado recebido no console
printf("\nDado recebido: %s\n", buffer);
} else {
printf("\nNenhuma mensagem recebida da UART1.\n");
}
// Adiciona uma linha em branco para separar as mensagens
printf("\n");
}
return 0;
}