Задание. Перепишите программу скетч 1 “Blink” из примеров Arduino IDE так, чтобы плата Arduino непрерывно выдавала световой сигнал SOS в коде Морзе.

В Arduino IDE Вы можете найти примеры в меню файл. Там очень много примеров. Программа “Blink”  находится в разделе Basics.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

Скетч 1. “Blink” из примеров Arduino IDE.

В скетче “Blink” мы удалили все комментарии.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(300);

  digitalWrite(LED_BUILTIN, HIGH);
  delay(300);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(300);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(300);
  digitalWrite(LED_BUILTIN, LOW);
  delay(300);

  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(3000);
}

Скетч 2. Пример Arduino программы “SOS”.

Задание 1. Соберите схему воспроизводящую сигнал SOS в коде Морзе при помощи зуммера.

Рис. 1. Схема воспроизводящая сигнал SOS в коде Морзе.

В схеме, на рис. 1 импульсный сигнал состоящий из чередований 1 и 0 (+ 5 Вольт, 0 Вольт) разной длительности с ножки D13 на плате Arduino подаётся через резистор R1 на базу транзистора Q1. Когда не ножке D13 сигнал высокого уровня, через базу-эмиттер транзистора Q1 протекает входной ток. Транзистор Q1 открывается и через зуммер Zz1-коллектор-эмиттер транзистора Q1 течёт ток. Когда на ножке D13 установлен сигнал низкого уровня, входной ток через транзистор Q1 не протекает, транзистор запирается и не пропускает ток через зуммер.

В зуммер встроен генератор звука. Когда на зуммер подано напряжение питания зуммер издаёт звуковой сигнал.

В схеме рис. 1 можно использовать любой транзистор с n-p-n проводимостью, например 2N2222. Если Вы используете транзистор, отличный от 2N2222, сверяйте его цоколёвку по справочнику.

Рис. 2. Транзистор в корпусе TO-92.

Рис. 3. Схема воспроизводящая сигнал SOS в коде Морзе, собранная на макетной плате.

Задание №2. Изучите международные требования к коду Морзе. Перепишите свою программу с сигналом SOS в коде Морзе в соответствии с международными требованиями.

Рис. 4. Сигнал SOS в коде Морзе.

Алиса, какие временные интервалы в азбуке Морзе?

Рекомендация МСЭ-R M.1677-1 от 10/2009.

  1. Интервал между сигналами и их продолжительность:
  2. Тире равно трём точкам.
  3. Интервал между сигналами, образующими одну букву, равен одной точке.
  4. Интервал между двумя буквами равен трем точкам.
  5. Интервал между двумя словами равен семи точкам.

Пусть точка равна point мс,

пустота между сигналами blank = point,

тогда тире равно dash = 3 * point,

Интервал между буквами letterSpace = 3 * point,

пробел whitespace = 7 * point.

int point = 100;
int blank = point;
int dash = 3 * point;
int letterSpace = 3 * point;
int whitespace = 7 * point;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);

  delay(letterSpace);

  digitalWrite(LED_BUILTIN, HIGH);
  delay(dash);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(dash);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(dash);
  digitalWrite(LED_BUILTIN, LOW);

  delay(letterSpace);

  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);
  delay(blank);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(point);
  digitalWrite(LED_BUILTIN, LOW);

  delay(3000);
}

Скетч 3. Пример Arduino программы “SOS”.
Сохраните свою программу, так, чтобы Вы её смогли потом найти на компьютере.