Задание. Перепишите программу скетч 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.
- Интервал между сигналами и их продолжительность:
- Тире равно трём точкам.
- Интервал между сигналами, образующими одну букву, равен одной точке.
- Интервал между двумя буквами равен трем точкам.
- Интервал между двумя словами равен семи точкам.
Пусть точка равна 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”.
Сохраните свою программу, так, чтобы Вы её смогли потом найти на компьютере.