#include <stdio.h>
#include <pico/stdlib.h>
// Definição dos tempos (em milissegundos)
#define LED 13
#define TEMPO_PONTO 200 // LED aceso para ponto (.)
#define TEMPO_TRACO 800 // LED aceso para traço (-)
#define GAP 125 // Intervalo entre sinais da mesma letra
#define INTERVALO_LETRA 250 // Intervalo entre letras diferentes
#define INTERVALO_FIM 3000 // Reinício do ciclo após 3 segundos
// Função para enviar um ponto (.)
void enviar_ponto() {
gpio_put(LED, true);
sleep_ms(TEMPO_PONTO);
gpio_put(LED, false);
sleep_ms(GAP);
}
// Função traço (-)
void enviar_traco() {
gpio_put(LED, true);
sleep_ms(TEMPO_TRACO);
gpio_put(LED, false);
sleep_ms(GAP);
}
int main() {
gpio_init(LED);
gpio_set_dir(LED, GPIO_OUT);
while (true) {
// Três pontos (...)
for (int i = 0; i < 3; i++) {
enviar_ponto();
}
sleep_ms(INTERVALO_LETRA);
// Três traços (---)
for (int i = 0; i < 3; i++) {
enviar_traco();
}
sleep_ms(INTERVALO_LETRA);
// Três pontos (...)
for (int i = 0; i < 3; i++) {
enviar_ponto();
}
// Pausa de 3 segundos antes de reiniciar
sleep_ms(INTERVALO_FIM);
}
return 0;
}