Заняття 2. Азбука Морзе

На цьому занятті ми використаємо макетну плату, створимо власні функції в програмі і з їх допомогою світлодіода виведемо декілька слів записаних азбукою Морзе.

Рис. 2.1: Макетна плата
Рис. 2.2: Дроти для складання макетів

Почнемо зі збирання попередньої схеми більш коректним чином з використанням резистору 220 Ом (або 330 Ом) для обмеження струму. Для цього використаємо спеціальні дроти (Рис. 10 та Рис. 11) та макетну плату (Рис. 9). Макетна плата використовується для збирання схем без використання пайки. Отвори в ній мають електричні з’єднання по п’ять (в інших модифікаціях може бути інше число) отворів вздовж коротшої сторони.
Збираємо схему, як показано на Рис. 12. Не має значення до якого виходу діоду під’єднати резистор, але важливо, щоб “мінус” діода був під’єднаний до контакту “GND”, а “плюс” (це довша ніжка) до цифрового контакту №13


Рис. 2.3: Схема з використанням макетної плати


На фото (Рис. 13) показано як виглядає зібране устаткування до цього заняття. Тепер можна писати скетч. Запишемо азбукою Морзе слово “Україна” за допомогою крапок і тире.

У (. . -)
к (- . -)
р (. – .)
а (. -)
ї (. – – – .)
н (- .)
а (. -)

Рис. 2.4: Устаткування до заняття 2

Якщо ми спробуємо записати цей скетч так, як ми робили на минулому занятті, то вийде занадто багато тексту, що буде повторювати одні ті самі дії. Виникає питання: “Чи можна зробити так, щоб ті ділянки коду, що повторюються, були якось об’єднані для спрощеного виклику?” Тут на допомогу прийде можливість писати власні функції в Arduino IDE. Ми вже знайомі із стандартними функціями loop() і setup(), які не мають параметрів. Створимо свої аналогічні функції dot() для виведення крапки і dash() для тире. Також треба перед бачити можливість підключення світлодіоду до іншого контакту без змін по всьому тексту скетчу. Для цього скористаємось можливістю встановлення констант за допомогою директиви #define.
Оголосимо константу MORSE_PIN. При нашому варіанті підключення її слід присвоювати значення 13. В тексті скетчу це виглядатиме так:

define MORSE_PIN 13

Тепер можна створити власні функції для виведення крапки і тире. Домовимось, що пауза між знаками азбуки Морзе буде складати 0,5 с, тривалість крапки 0,5 с, а тривалість тире 1 с. Функції треба розмістити за межами інших функцій в скетчі. Спочатку напишемо зарезервоване слово “void”, яке означає, що функція не буде повертати ніяких значень. Потім необхідно написати унікальну назву функції і круглі дужки, в яких вказують параметри (наші функції не матимуть параметрів). Код функції буде поміщений у фігурні дужки, які ідуть після круглих дужок.
Функція, що виводить крапку:

void dot()
{
digitalWrite(MORSE_PIN, HIGH);
delay(500);
digitalWrite(MORSE_PIN, LOW);
delay(500);
}

Функція, що виводить тире:


void dash()
{
digitalWrite(MORSE_PIN, HIGH);
delay(1000);
digitalWrite(MORSE_PIN, LOW);
delay(500);
}


Немає різниці де саме в тексті скетчу розмістити функції, перед стандартними setup() і loop(), чи після них. Зазвичай функції розміщують в кінці програми.
Тепер замість багатьох повторень коду ми можемо викликати крапку чи тире за потребою. Остаточно весь текст програми виглядатиме так:

define MORSE_PIN 13
void setup()
 {
     pinMode(MORSE_PIN, OUTPUT);
 }

void loop()
{
dot(); dot(); dash(); // Літера “у”
delay(1000); // Затримка після літери
dash(); dot(); dash(); // Літера “к”
delay(1000);
dot(); dash(); dot(); // Літера “р”
delay(1000);
dot(); dash();// Літера “а”
delay(1000);
dot(); dash(); dash(); dash(); dot(); // Літера “ї”
delay(1000);
dash(); dot(); // Літери “н”
delay(1000);
dot(); dash(); // Літера “а”
delay(1000);
}

void dot()
{
digitalWrite(MORSE_PIN, HIGH);
delay(500);
digitalWrite(MORSE_PIN, LOW);
delay(500);
}
void dash()
{
digitalWrite(MORSE_PIN, HIGH);
delay(1000);
digitalWrite(MORSE_PIN, LOW);
delay(500);
}

Додаткове завдання. Прпограйте своє повне ім’я азбукою Морзе. Використовуючі для цього дані з Рис. 14

 Рис. 2.5: Українська азбука Морзе (джерело вікіпедія)

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *