📻 کد مورس با آردوینو — پیام مخفی بفرست

پروژه‌ای که برنامه‌نویسی را با تاریخ قاطی می‌کند: همان سیستمی که ۱۵۰ سال پیام‌های دنیا را جابه‌جا می‌کرد، در ۴۰ خط کد.

قوانین زمان‌بندی مورس

کل مورس روی یک واحد زمانی ساخته شده — به آن «نقطه» می‌گوییم:

کد

const int led = 13, buzzer = 8;
const int UNIT = 150;      // میلی‌ثانیه؛ کوچک‌تر = سریع‌تر

const char* LETTERS[] = {
  ".-",   "-...", "-.-.", "-..",  ".",    "..-.", "--.",  "....",
  "..",   ".---", "-.-",  ".-..", "--",   "-.",   "---",  ".--.",
  "--.-", ".-.",  "...",  "-",    "..-",  "...-", ".--",  "-..-",
  "-.--", "--.."
};

void signal(int units) {
  digitalWrite(led, HIGH);
  tone(buzzer, 700);
  delay(UNIT * units);
  digitalWrite(led, LOW);
  noTone(buzzer);
  delay(UNIT);              // فاصله‌ی بین علامت‌ها
}

void sendChar(char c) {
  if (c == ' ') { delay(UNIT * 7); return; }
  if (c >= 'a' && c <= 'z') c = c - 'a' + 'A';
  if (c < 'A' || c > 'Z') return;

  const char* code = LETTERS[c - 'A'];
  for (int i = 0; code[i] != 0; i++) {
    signal(code[i] == '-' ? 3 : 1);
  }
  delay(UNIT * 2);          // مجموعاً ۳ واحد بین حروف
}

void setup() {
  pinMode(led, OUTPUT);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  const char* message = "SOS SALAM";
  for (int i = 0; message[i] != 0; i++) {
    sendChar(message[i]);
  }
  delay(3000);
}

چرا بعد از هر حرف فقط ۲ واحد صبر می‌کنیم؟

چون تابع signal خودش یک واحد فاصله گذاشته. ۱ + ۲ = ۳ واحد، همان قانون مورس. این جور جزئیات کوچک است که فرق بین «کار می‌کند» و «درست کار می‌کند» را می‌سازد.

SOS

معروف‌ترین پیام مورس: سه نقطه، سه خط، سه نقطه. انتخاب شد چون ساده است و حتی کسی که مورس بلد نیست هم می‌تواند بزندش.

قدم بعدی

یک دکمه اضافه کن و مورس را خودت بزن، بعد آردوینو تشخیص بدهد چه حرفی زده‌ای — سخت‌تر از فرستادن است ولی خیلی جذاب‌تر.

پیام مورست را بفرست 📻

مقاله‌های دیگر

🤖

آردوینو چیست؟ راهنمای کامل برای شروع از صفر

بهترین شبیه‌ساز مدار آنلاین فارسی — چرا شبیه‌ساز، و چرا روبومیکر؟

💡

ساده‌ترین پروژه الکترونیک برای بچه‌ها: روشن‌کردن یک LED