#include <stdio.h>
#include "pico/stdlib.h"
#include "tusb.h"
// Definição dos pinos dos LEDs e Buzzer
#define LED_VERDE 11
#define LED_AZUL 12
#define LED_VERMELHO 13
#define BUZZER 10
// Buffer para receber dados
char buffer[64];
void configurar_gpios() {
gpio_init(LED_VERDE);
gpio_init(LED_AZUL);
gpio_init(LED_VERMELHO);
gpio_init(BUZZER);
gpio_set_dir(LED_VERDE, GPIO_OUT);
gpio_set_dir(LED_AZUL, GPIO_OUT);
gpio_set_dir(LED_VERMELHO, GPIO_OUT);
gpio_set_dir(BUZZER, GPIO_OUT);
gpio_put(LED_VERDE, 0);
gpio_put(LED_AZUL, 0);
gpio_put(LED_VERMELHO, 0);
gpio_put(BUZZER, 0);
}
void acender_led(int gpio) {
gpio_put(gpio, 1);
sleep_ms(1000);
gpio_put(gpio, 0);
}
void ativar_buzzer() {
gpio_put(BUZZER, 1);
sleep_ms(500);
gpio_put(BUZZER, 0);
}
void processar_comando(const char* comando) {
printf("Comando recebido: %s\n", comando); // Eco
if (strcmp(comando, "vermelho") == 0) {
acender_led(LED_VERMELHO);
} else if (strcmp(comando, "verde") == 0) {
acender_led(LED_VERDE);
} else if (strcmp(comando, "azul") == 0) {
acender_led(LED_AZUL);
} else if (strcmp(comando, "som") == 0) {
ativar_buzzer();
}
}
void tud_cdc_rx_cb(uint8_t itf) {
uint32_t count = tud_cdc_available();
if (count > 0) {
count = tud_cdc_read(buffer, sizeof(buffer));
buffer[count] = '\0'; // Terminar string
// Processar cada linha recebida
char* linha = strtok(buffer, "\n");
while (linha != NULL) {
processar_comando(linha);
linha = strtok(NULL, "\n");
}
}
}
int main() {
stdio_init_all();
configurar_gpios();
// Inicialização TinyUSB
tusb_init();
while (true) {
tud_task(); // Processar eventos TinyUSB
}
return 0;
}