#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "pico/time.h"
#include <string>
// Define GPIO pin connected to LED
#define LED_PIN 15
// Function to generate a dot in Morse code
void dot() {
gpio_put(LED_PIN, 1);
sleep_ms(200); // Dot duration
gpio_put(LED_PIN, 0);
sleep_ms(200); // Inter-element gap
}
// Function to generate a dash in Morse code
void dash() {
gpio_put(LED_PIN, 1);
sleep_ms(600); // Dash duration
gpio_put(LED_PIN, 0);
sleep_ms(200); // Inter-element gap
}
// Function to transmit a character in Morse code
void transmit(char c) {
switch (c) {
case 'A': case 'a':
dot(); dash();
break;
case 'B': case 'b':
dash(); dot(); dot(); dot();
break;
case 'C': case 'c':
dash(); dot(); dash(); dot();
break;
case 'D': case 'd':
dash(); dot(); dot();
break;
case 'E': case 'e':
dot();
break;
case 'F': case 'f':
dot(); dot(); dash(); dot();
break;
case 'G': case 'g':
dash(); dash(); dot();
break;
case 'H': case 'h':
dot(); dot(); dot(); dot();
break;
case 'I': case 'i':
dot(); dot();
break;
case 'J': case 'j':
dot(); dash(); dash(); dash();
break;
case 'K': case 'k':
dash(); dot(); dash();
break;
case 'L': case 'l':
dot(); dash(); dot(); dot();
break;
case 'M': case 'm':
dash(); dash();
break;
case 'N': case 'n':
dash(); dot();
break;
case 'O': case 'o':
dash(); dash(); dash();
break;
case 'P': case 'p':
dot(); dash(); dash(); dot();
break;
case 'Q': case 'q':
dash(); dash(); dot(); dash();
break;
case 'R': case 'r':
dot(); dash(); dot();
break;
case 'S': case 's':
dot(); dot(); dot();
break;
case 'T': case 't':
dash();
break;
case 'U': case 'u':
dot(); dot(); dash();
break;
case 'V': case 'v':
dot(); dot(); dot(); dash();
break;
case 'W': case 'w':
dot(); dash(); dash();
break;
case 'X': case 'x':
dash(); dot(); dot(); dash();
break;
case 'Y': case 'y':
dash(); dot(); dash(); dash();
break;
case 'Z': case 'z':
dash(); dash(); dot(); dot();
break;
case ' ':
sleep_ms(600); // Word space
break;
default:
break;
}
}
int main() {
// Initialize stdio
stdio_init_all();
// Initialize GPIO
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
// Message to be transmitted
const char* message = "HELLO WORLD";
while (1) {
for (int i = 0; message[i] != '\0'; ++i) {
transmit(message[i]);
sleep_ms(200); // Inter-character gap
}
sleep_ms(2000); // Inter-word gap
}
return 0;
}