# Проект 2: SOS ![](../media/465eddd4c67ad1cdb098bdef0ee91c3d.png) #### Описание SOS — это международно признанный сигнал бедствия, который состоит из трёх коротких точечных сигналов, трёх длинных тире и трёх коротких точечных сигналов (соответствует «· · · – – – · · ·» в азбуке Морзе). В этом проекте будет использоваться светодиод для имитации мигания сигнала SOS. Каждый точечный сигнал светодиода мигает 0,2 с, каждый тире — 0,6 с, а интервал между двумя символами составляет 0,2 с. #### Аппаратное обеспечение 1\. Плата разработки UNO R3 (ch340) x1 2\. USB-кабель x1 3\. Макетная плата x1 4\. Светодиод x1 5\. Резистор 220Ω x1 6\. Соединительные провода #### Принцип работы SOS («Save Our Souls» или «Save Our Ship») — это международно признанный сигнал бедствия. Его принцип работы прост, но эффективен. ![IMG_256](../media/f60d345a9b43570fd87c9a384f87f416.jpeg) Сигнал SOS обычно состоит из трёх букв: трёх коротких звуков «S», трёх длинных звуков «O» и трёх коротких звуков «S». Этот уникальный ритм выделяет его в различных шумных условиях. Будь то тиканье телеграфа или шорох радио, сигнал SOS можно чётко распознать. Исторически появление сигнала SOS изменило судьбы бесчисленных людей. Корабли, оказавшиеся в бедствии в море, разбившиеся самолёты и все, кто оказался в трудной ситуации, могут обратиться за помощью, посылая сигнал SOS. Как только сигнал SOS получен, немедленно начинаются спасательные операции. В современном обществе применение SOS вышло далеко за пределы морской сферы. Функция экстренного вызова на мобильных телефонах и других средствах связи на самом деле является вариантом SOS. Достаточно нажать определённую комбинацию клавиш в экстренной ситуации, и информация о вашем местоположении и просьба о помощи автоматически отправятся в полицию, пожарную службу и другие спасательные службы. #### Схема подключения Подключение такое же, как в Проекте 2. ![Img](../media/img-20260330185532.png) #### Пример кода ```cpp /* Electronics Learning Starter Kit for Arduino Project 2 SOS Edit By Keyes */ int ledPin = 9; // Define the digital pin to which the LED is connected // Define the duration of the dot signal '.' and the dash signal '-' in ms int dotDuration = 200; int dashDuration = 600; // Set the pause time between two characters in ms int pauseDuration = 200; void setup() { pinMode(ledPin, OUTPUT); // Set the pin to output mode } void loop() { // S ··· for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dotDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(pauseDuration); // O --- for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dashDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(pauseDuration); // S ··· for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dotDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(3000); // SOS cycle interval is 3 s } ``` #### Объяснение кода Сначала нам нужно определить цифровой порт, к которому подключён светодиод. В программировании Arduino это можно сделать одной простой строкой кода: ```cpp int ledPin = 9; ``` Эта строка объявляет целочисленную переменную с именем `ledPin` и инициализирует её значением 9. Это означает, что светодиод подключён к цифровому порту 9 на плате Arduino. В Arduino каждый цифровой порт можно настроить как вход или выход, использовать для считывания данных с датчиков или управления внешними устройствами, такими как светодиоды. Далее нам нужно настроить режим этого порта в функции `setup()` программы. Функция `setup()` — важная часть каждой программы Arduino, которая автоматически выполняется один раз при включении платы для начальной настройки. Чтобы управлять светодиодом, нужно установить порт 9 в режим вывода: ```cpp void setup() { pinMode(ledPin, OUTPUT); } ``` Здесь `pinMode()` — это функция Arduino, которая устанавливает режим указанного цифрового порта. `ledPin` — номер порта, который мы определили ранее, а `OUTPUT` — предопределённая константа, указывающая, что порт будет использоваться для вывода электрических сигналов. Далее мы напишем функцию `loop()`, которая является ядром программы Arduino и выполняется повторно после включения устройства. В этой функции мы реализуем логику управления светодиодом для мигания сигналом SOS. Мы используем функцию `digitalWrite()` для включения и выключения светодиода и функцию `delay()` для управления скоростью и интервалами мигания: ```cpp void loop() { // S ··· for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dotDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(pauseDuration); // O --- for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dashDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(pauseDuration); // S ··· for (int i = 0; i < 3; i++) { digitalWrite(ledPin, HIGH); delay(dotDuration); digitalWrite(ledPin, LOW); delay(pauseDuration); } delay(3000); // SOS cycle interval is 3 s } ``` В этом участке кода `digitalWrite(ledPin, HIGH)` и `digitalWrite(ledPin, LOW)` используются для включения и выключения светодиода, подключённого к порту 9. Функция `delay()` управляет временными интервалами в миллисекундах. Изменяя значения в `delay()`, вы можете регулировать скорость и ритм мигания сигнала SOS. #### Результат проекта ![P2](../media/P2.gif) После загрузки кода и включения питания светодиод будет мигать в ритме сигнала SOS: «· · · – – – · · ·», с интервалом 3 секунды между циклами SOS.