Проект 2: SOS

Описание
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») — это международно признанный сигнал бедствия. Его принцип работы прост, но эффективен.

Сигнал SOS обычно состоит из трёх букв: трёх коротких звуков «S», трёх длинных звуков «O» и трёх коротких звуков «S». Этот уникальный ритм выделяет его в различных шумных условиях. Будь то тиканье телеграфа или шорох радио, сигнал SOS можно чётко распознать.
Исторически появление сигнала SOS изменило судьбы бесчисленных людей. Корабли, оказавшиеся в бедствии в море, разбившиеся самолёты и все, кто оказался в трудной ситуации, могут обратиться за помощью, посылая сигнал SOS. Как только сигнал SOS получен, немедленно начинаются спасательные операции.
В современном обществе применение SOS вышло далеко за пределы морской сферы. Функция экстренного вызова на мобильных телефонах и других средствах связи на самом деле является вариантом SOS. Достаточно нажать определённую комбинацию клавиш в экстренной ситуации, и информация о вашем местоположении и просьба о помощи автоматически отправятся в полицию, пожарную службу и другие спасательные службы.
Схема подключения
Подключение такое же, как в Проекте 2.

Пример кода
/*
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 это можно сделать одной простой строкой кода:
int ledPin = 9;
Эта строка объявляет целочисленную переменную с именем ledPin и инициализирует её значением 9. Это означает, что светодиод подключён к цифровому порту 9 на плате Arduino. В Arduino каждый цифровой порт можно настроить как вход или выход, использовать для считывания данных с датчиков или управления внешними устройствами, такими как светодиоды.
Далее нам нужно настроить режим этого порта в функции setup() программы. Функция setup() — важная часть каждой программы Arduino, которая автоматически выполняется один раз при включении платы для начальной настройки. Чтобы управлять светодиодом, нужно установить порт 9 в режим вывода:
void setup() {
pinMode(ledPin, OUTPUT);
}
Здесь pinMode() — это функция Arduino, которая устанавливает режим указанного цифрового порта. ledPin — номер порта, который мы определили ранее, а OUTPUT — предопределённая константа, указывающая, что порт будет использоваться для вывода электрических сигналов.
Далее мы напишем функцию loop(), которая является ядром программы Arduino и выполняется повторно после включения устройства. В этой функции мы реализуем логику управления светодиодом для мигания сигналом SOS. Мы используем функцию digitalWrite() для включения и выключения светодиода и функцию delay() для управления скоростью и интервалами мигания:
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.
Результат проекта

После загрузки кода и включения питания светодиод будет мигать в ритме сигнала SOS: «· · · – – – · · ·», с интервалом 3 секунды между циклами SOS.