#include "pico/stdlib.h"
#include <stdio.h>
#include <string.h>
int main() {
stdio_init_all();
printf("UART0 and UART1 Test Starting...\n");
gpio_init(2);
gpio_init(7);
gpio_set_dir(7, GPIO_OUT);
gpio_set_dir(2, GPIO_OUT);
int i = 0;
//Configuração da UART
uart_init(uart0, 115200); // UART0
uart_init(uart1, 115200);
gpio_set_function(0, GPIO_FUNC_UART); // Configura TX
gpio_set_function(1, GPIO_FUNC_UART); // RX
gpio_set_function(4, GPIO_FUNC_UART); // TX
gpio_set_function(5, GPIO_FUNC_UART); // RX
// Send data
char message[10] = {};
i = 0;
while (i < 10)
{
char c = uart_getc(uart0); // Lê um caractere da UART
if (c == '\n' || c == '\r') {
break;
}
message[i] = c;
i++;
}
char msg_u1[10] = {};
char msg_u0[10] = {};
i = 0;
// Calcular o tamanho do array populado
size_t tamanho = strlen(message);
while (i <= tamanho) {
gpio_put(2, 1);
uart_putc_raw(uart0, message[i]);
uart_tx_wait_blocking(uart0);
// mensagem enviada pela uart0, ou seja, vai enviar
// pelo TX0 tanto para o console quanto para a uart1 RX1
msg_u1[i] = uart_getc(uart1);
// mensagem coletada pela uart1 e populando o array msg_u1
sleep_ms(500);
gpio_put(7, 0);
i++;
}
gpio_put(2, 0);
i = 0;
size_t tamanho_msg_u1 = strlen(msg_u1);
while (i <= tamanho_msg_u1) {
gpio_put(7, 1);
uart_putc_raw(uart1, msg_u1[i]);
// mensagem enviada pela uart1, ou seja, vai enviar
// pelo TX1 para a uart0 RX0
uart_tx_wait_blocking(uart1);
msg_u0[i] = uart_getc(uart0);
// mensagem coletada pela uart0 e populando o array msg_u0
uart_putc_raw(uart0, msg_u0[i]);
// mensagem vai printar no console do wokwi pela uart0 ja q ela ta enviando a msg_u0 pelo tx0
i++;
sleep_ms(100);
}
gpio_put(7, 0);
while(1)
{
sleep_ms(100);
gpio_put(7, 0);
sleep_ms(100);
gpio_put(7, 1);
}
}