Activity
Снял видео с демонстрацией работы.
Сделал рабочий прототип в макетном исполнении.
Все работает так, как и задумывалось.
Осталось теперь водрузить это на коптер.
В итоговом варианте будет стоять ардуина мини и сонар HC-SR04. места не занимает, весит ничего.
Вот весь скетч, полностью допиленная и рабочая версия.
Конечно, он не совершенен, можно сделать его более оптимальным, прикрутить бародатчик итд - но я этого не умею.
(как свернуть не знаю)
#include "Servo.h" //библеотека серво
Servo myservo;
const int Trig = 8; //подключаем вход Триггер сонара к 8 цифровому пину ардуины
const int Echo = 9; //подключаем выход Эхо сонара к 9 цифровому пину ардуины
const int ledPin = 13; // 13 – если будете использовать встроенный в Arduino светодиод
void setup()
{
myservo.attach(10); // Servo присоединен к 10 выводу
myservo.writeMicroseconds(700); // устанавливаем ноги в положиние для старта при подачи питания, если они уже в нем не стоят
delay(5000); //ждем 5 с после подачи питания(все равно, пока инициализируются гиры, компас жпс итд.)
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
unsigned int time_us=0;
unsigned int distance_sm=0;
void loop()
{
digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
delayMicroseconds(10); // Удерживаем 10 микросекунд
digitalWrite(Trig, LOW); // Затем убираем
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=time_us/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт для проверки сонара и расстояния
if (distance_sm<200) // Если расстояние до земли менее 200 сантиметром(расстояние можно менять в пределах характеристик сонара HC-SR04 )
{
digitalWrite(ledPin, 1);
myservo.writeMicroseconds(700); // то складываем ноги
delay(500); // ждем 0,5с для защиты от дребезга и ложных сработок
}
else
{
digitalWrite(ledPin, 0);
myservo.writeMicroseconds(2300); //если меньше 200 см, то раскладываем для посадки
delay(500);
}
delay(100);
}
набросок идеи, чтоб не забыть.
пришла в голову идея сделать автоматические складные ноги для коптера.
Идея заключается в том, что при достижении определенной заданной заранее высоты ноги складываются/раскладываются.
Реализовано за счет ардуинки с кодом и дешевого сонара HS4
устройство полностью автономно, кроме питания.
цель - освободить канал на приемнике
мне кажется, именно за счет этого работает механика в новомодном ДЖИ Инспире 1
Алгоритм такой - коптер на земле _ расстояние от сонара до земли < 2(например) метров - ноги разложены.
Задаем время ожидания - если не взлетели вы
взлетаем, растояние увеличивается - ноги складываем, не увеличивается - не складываем(30 сек например)
летаем, расстояние увеличилось, время вышло, ноги сложились, летаем
садимся
расстояние стало между 5- и 2мя метрами - ноги разложились. учитываем скорость посадки и и время, за которое разложаться ноги!!! - надо знать характеристики сонара, и насколько далеко он гарантированно определяет расстояние до твердой поверхности. С травы и на траву не летаем
опять тайм аут на увеличение расстояния расстояние уменьшается - ноги остаются разложенными - садимся.