copter.space
  • База знаний COPTER.SPACE
  • Модульность
  • Сообщество
  • Соревнования
  • ЖУЖА NANO и "НЕБО В КАРМАНЕ" 7-11+
    • ЖУЖА NANO
    • Клеевые модели мини планеров.
    • CASE STUDY
      • Программирование SCRATCH и PYTHON
      • РЕМОНТ “ЖУЖА NANO”. 3D-принтер.
      • РЕМОНТ “ЖУЖА NANO”. 3D-ручка.
  • ЖУЖА MINI 12-14+
    • Назначение
    • Комплектация и характеристики
    • Методические материалы
    • CASE STUDY
      • Сборка ЖУЖА MINI
        • ШАГ 1. Подключение аккумулятора.
        • ШАГ_2. Подключение регуляторов.
        • ШАГ_3. Полетный контроллер.
        • ШАГ 4. Приемник радиоуправления.
        • ШАГ 5. Преобразователь тока.
        • ШАГ 6 Монтаж моторов
        • Схема монтажных групп.
  • ЖУЖА 3.0 Учебный модуль 13-16+
    • Жужа Базовая
    • Назначение Жужа 3.0 FPV
    • 12 ВЕЩЕЙ, КОТОРЫЕ ВЫ ДОЛЖНЫ ПРОВЕРИТЬ ПЕРЕД ПОЛЁТОМ КВАДРОКОПТЕРА
    • CASE STUDY
      • 1. Вводная часть: почему конфигуратор “Вetaflight”?
        • 1.1. Установка конфигуратора.
        • 1.2. Инструкция по прошивке полетного контроллера
        • 1.3. Настройка полетного контроллера
        • 1.4. Раздел Configuration (Конфигурация)
        • 1.5. Проверка моторов в “Motors”
        • 1.6. Настройка приемника (Receiver)
        • 1.7. Раздел “Receiver” (Аппаратура управления).
        • 1.8. Полётные режимы (Modes)
        • 1.9. Режим "Failsave" (“Отказоустойчивость”)
        • 1.10. PID Tuning (Настройка ПИДов)
        • 1.11. Blackbox (Черный ящик)
      • 2. Подключение симулятора
      • 3. "МОРЗЯНКА"
        • 3.1. Азбука Морзе
        • 3.2. Схема подключения
        • 3.3. Сектч
      • 4. GPS_установка. Начало работы с iNav
        • 4.1. Почему iNAV?
        • 4.2. Модуль GPS
        • 4.3. Подключение GPS
        • 4.4. Настройка GPS в iNAV
        • 4.5. Настройка полетных режимов в iNAV
  • ЖУЖА 3.0 VISIO 15-18+
  • Назначение
  • Жужа VISIO 3.0
  • Обзор программ
    • Обзор программного обеспечения для квадрокоптера
    • Введение в программу
    • Загрузка прошивки
    • Настройка
  • CASE STUDY
    • Учебное пособие "Машинное зрение"
    • Конвертация "Жужи Мини" в "Жужу Visio"
    • Подключение адресной светодиодной ленты
    • Статья 1: Запуск автономного квадрокоптера в виртуальной среде
    • Статья 2: Самонаводящийся дрон.
    • Урок 3: В поисках шарика.
    • Урок 4: Отыскать и бабахнуть.
  • Альтитрал
    • Назначение
    • Характеристики
    • Квалификационные требования оператора
      • Запуск дрона в виртуальной среде
      • Посадка на ARUCO-маркер
      • Посадка RED_DETECTOR
    • Обзор программного обеспечения
    • Быстрый старт
      • Привязка пульта_РУ
      • ARM/DISARM
      • Проверка вращения пропеллеров
      • Полёт STABILIZE
        • Особенности УМК серии "Альтитрал"
        • Меры предосторожности
        • Проверка перед полётом
        • Включение питания
        • Управление в полёте
    • Захват грузов
Powered by GitBook
On this page
  1. ЖУЖА 3.0 Учебный модуль 13-16+
  2. CASE STUDY
  3. 3. "МОРЗЯНКА"

3.3. Сектч

Morze.ino
#include <Adafruit_NeoPixel.h> //Библиотека для работы с адресной светодиодной лентой
#define BUZZ 12 //Константа, хранящая номер порта, к которому подключен пьезоизлучатель
#define DASH 210 //Константа, хранящая длительность сигнала "тире"
#define LED 10 //Константа, хранящая номер порта, к которому подключена светодиодная лента
#define COUNTPIX 6 ////Константа, хранящая количество светодиодов в ленте

//Создание объекта strip класса Adafruit_NeoPixel
Adafruit_NeoPixel strip = Adafruit_NeoPixel(COUNTPIX, LED, NEO_GRB+NEO_KHZ800);

/*В азбуке Морзе действуют определённые правила, 
регламентирующие длительность сигналов. 
Так длительность точки в 3 раза короче 
длительности тире, пауза между точками и тире
равна по длительности точке, пауза между
цифрами и буквами равна длительности тире, 
а длительность паузы между словами и числами 
в 7 раз длиннее точки.*/
int dot = DASH/3; //Длительность сигнала "точка"
int pause = dot; //Длительность паузы между точками и тире
int charPause = DASH; //Длительность паузы между цифрами и буквами
int space = dot*7; //Длительность паузы между числами и словами
//Массив символов, в который мы запишем закодированное слово
char myWord[] = {".... . .-.. .-.. ---|.-- --- .-. .-.. -.."};

//Функция, которая принимает символ как параметр
//и воспроизводит его с помощью ленты и пьезоизлучателя
void bip(char symbol)
{
    if (symbol == '-') //Если тире
    {
      //Пройти по всем светодиодам ленты
      for (int i = 0; i < COUNTPIX; i++)
      {
        //Установить для каждого белый цвет
        strip.setPixelColor(i, strip.Color(255,255,255));
      }
      strip.show(); //Вывести установленные значения на ленту
      digitalWrite(BUZZ, HIGH); //Подать питание на пьезоизлучатель
      delay(DASH); //Пауза, соответствующая длительности тире
      digitalWrite(BUZZ, LOW); //Выключение питания на пьезоизлучателе
      strip.clear(); //Установить состояние всех светодиодов как "выключено"
      strip.show(); //Вывести установленные значения на ленту
      delay(pause); //Пауза, соответствующая длительности промежутку между 
                    //точками и тире
    }
    
    if (symbol == '.') //Если точка
    {
      //Пройти по всем светодиодам ленты
      for (int i = 0; i < COUNTPIX; i++)
      {
        //Установить для каждого белый цвет
        strip.setPixelColor(i, strip.Color(255,255,255));
      }
      strip.show(); //Вывести установленные значения на ленту
      digitalWrite(BUZZ, HIGH); //Подать питание на пьезоизлучатель
      delay(dot); //Пауза, соответствующая длительности точке
      digitalWrite(BUZZ, LOW); //Выключение питания на пьезоизлучателе
      strip.clear(); //Установить состояние всех светодиодов как "выключено"
      strip.show(); //Вывести установленные значения на ленту
      delay(pause); //Пауза, соответствующая длительности промежутку между 
                    //точками и тире
    }
    
    if (symbol == ' ') //Если пробел
      delay(charPause); //Пауза, соответствующая длительности промежутку между 
                        //буквами и цифрами
      
    if (symbol == '|') //Если разделитель
      delay(space); //Пауза, соответствующая длительности промежутку между словами
}

//Служебная функция, которая выполняется один раз
//при включении микроконтроллера и в основном используется для настроек
void setup() 
{
  strip.begin(); //Инициализация ленты
  strip.setBrightness(255); //Установка яркости свечения (0-255)
  pinMode(BUZZ, OUTPUT); //Установка порта D12 в режим выхода
  //Проходим по массиву, содержащему заданную фразу
  for(int i = 0; i < sizeof(myWord); i++)
  {
     //Передаём каждый символ в функцию для воспроизведения
    bip(myWord[i]); 
  }
}

//Основную функцию loop мы не используем,
//т.к. нет необходимости многократного
//повторения кода
void loop() 
{}
Previous3.2. Схема подключенияNext4. GPS_установка. Начало работы с iNav

Last updated 5 years ago

Пример работы скетча можно посмотреть

ЗДЕСЬ