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

IMG_256

Сигнал SOS обычно состоит из трёх букв: трёх коротких звуков «S», трёх длинных звуков «O» и трёх коротких звуков «S». Этот уникальный ритм выделяет его в различных шумных условиях. Будь то тиканье телеграфа или шорох радио, сигнал SOS можно чётко распознать.

Исторически появление сигнала SOS изменило судьбы бесчисленных людей. Корабли, оказавшиеся в бедствии в море, разбившиеся самолёты и все, кто оказался в трудной ситуации, могут обратиться за помощью, посылая сигнал SOS. Как только сигнал SOS получен, немедленно начинаются спасательные операции.

В современном обществе применение SOS вышло далеко за пределы морской сферы. Функция экстренного вызова на мобильных телефонах и других средствах связи на самом деле является вариантом SOS. Достаточно нажать определённую комбинацию клавиш в экстренной ситуации, и информация о вашем местоположении и просьба о помощи автоматически отправятся в полицию, пожарную службу и другие спасательные службы.

Схема подключения

Подключение такое же, как в Проекте 2.

Img

Пример кода

/*

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.

Результат проекта

P2

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