Код Морзе - це система зв'язку для кодування будь-якого символу в двох різних тривалостях сигналів, що називається крапками і тире . Азбука Морзе розроблена Самуелем Ф.Б. і надалі використовується в телеграфії для передачі секретної інформації. Найбільш використовувався в часи Другої світової війни. Код Морзе можна виконати, натискаючи, мигаючи світлом або пишучи. Код Морзе доступний у двох версіях - оригінальній та міжнародній азбуці Морзе. У міжнародному коді Морзе оригінальна версія модифікується шляхом видалення пробілів та оформлення тире в певній довжині. Код Морзе доступний для кодування алфавітів та цифр. Він в основному використовується в радіо- та океанічному зв'язку, а також є частиною тренувань для солдатів.
Мова завжди була перешкодою для азбуки Морзе, оскільки важко виконати код для діакритичних символів іншою мовою. Є кілька відомих слів, які вважаються важливою особливістю азбуки Морзе, такі як "SOS". Повна форма SOS - "Врятуй наші душі", створена як універсальний сигнал лиха, що представляє небезпеку.
На зображенні нижче показано азбуку Морзе для алфавітів від А до Я.
Сьогодні в цьому навчальному посібнику ми створимо перекладач азбуки Морзе за допомогою Arduino, який прийме будь-який символ як вхідний сигнал від послідовного монітора і перетворить його в еквівалентний звуковий сигнал Морзе за допомогою зумера.
Потрібні компоненти
- Arduino Uno
- Зумер
- Макет
- Провід перемички
Кругова діаграма
Підключіть плюсовий штифт зуммера до 8- го штифта Arudino UNO, а негативний - до заземлення Arduino. Завантажте код за допомогою Arduino IDE і введіть символи на послідовному моніторі, щоб створити звук. РК-дисплей також можна додати до Arduino для відображення тире та крапок.
Пояснення програмування
Повний код генератора азбуки Морзе Arduino наведено в кінці, тут ми пояснюємо програму для розуміння роботи проекту.
Наведений нижче код використовується для отримання рядка символів, а потім перетворення його в код Морзе.
char stringToMorseCode = "";
Потім визначте штифт для зумера, підключеного до Arduino, і висоту тону для звуку, генерованого цим зуммером. Тоді ми визначаємо довжину крапки та тире.
int audio8 = 8; // виведення звуку на штифт 8 int note = 1200; // музична нота / висота звуку int dotLen = 100; // довжина коду Морзе 'dot' int dashLen = dotLen * 3; // довжина коду Морзе 'тире'
У функції void loop () , якщо доступні послідовні дані, вони зберігатимуться у змінних indata . Потім він читає символ по одному за допомогою команди inData . Команда variable.toUppercase () використовується для зміни малих літер на великі. Потім він створює звук відповідно до кожного персонажа.
недійсний цикл () { char inChar = 0; char inData = ""; // довжина даних 6 символів Рядок змінної = ""; Рядок змінної1 = ""; int index1 = 0; if (Serial.available ()> 0) { while (Serial.available ()> 0 && index1 <100) { delay (100); inChar = Serial.read (); inData = inChar; index1 ++; inData = '\ 0'; } змінної.toUpperCase (); for (байт i = 0; i <100; i ++) { variable.concat (String (inData)); } затримка (20);
Наведені нижче функції MorseDot та MorseDash використовуються для створення звуку для крапки та тире відповідно.
void MorseDot () { tone (audio8, note, dotLen); // почати відтворення тональної затримки (dotLen); // утримуємося в цій позиції } void MorseDash () { tone (audio8, note, dashLen); // почати відтворення тональної затримки (dashLen); // утримуємо в цій позиції }
Функція GetChar має код для всіх алфавітів. Отже, кожного разу, коли ми вводимо будь-який алфавіт, з цієї функції береться відповідний код Морзе для створення конкретного звуку.
void GetChar (char tmpChar) { switch (tmpChar) { case 'a': MorseDot (); затримка (100); MorseDash (); затримка (100); перерву; ... ... … по замовчуванням: перерва; } }
Тепер завантажте код в Arduino за допомогою Arduino IDE і введіть будь-який символ на послідовний монітор і натисніть кнопку введення, щоб відправити символи в Arduino.
Тут ми набрали "SOS", який є універсальним сигналом лиха, щоб створити звук для того самого.
Демонстрація цього ж наведена у відео нижче.