Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Basic
2018-01-29 22:19:15

Если можно, так сказать услышать из первых уст: насколько безопасен такой летательный аппарат?

Lic Control
2017-11-29 22:52:12

Для этой задачи необходимо иметь несколько процедур. В одной процедуре с максимально допустимой частотой  опрашивайте датчик расстояния. Полученные данные следует обработать цифровым фильтром, например, в фильтре Калмана (см.Википедию) для удаления случайных выбросов значений.
В другой процедуре, по полученным через фильтр значениям расстояния, устанавливайте сервопривод в нужное положение. Здесь же, или в третьей процедуре, изменяйте громкость буззера.
Вторая и третья процедуры должны выполняться значительно реже, например 1-10 раз в секунду.
Вызов процедур с разной частотой можно оформить с помощью таймеров.  Для этого есть хорошие библиотеки, например MsTimer2,  TimerOne и др.
Можно сделать все и в цикле loop() используя millis():
if((millis() - time1) > period1) {
myProcedure1();
time1=millis();
}
Здесь period1 - периодичность выполнения первой процедуры в миллисекундах.
Аналогично вызывайте вторую и третью процедуру со своими time2, time3, period2, period 3.

Не забудьте объявить все переменные и процедуры.
Я аналогичным способом измерял расстояние до земли при посадке. Такой себе landtronic, как я его назвал. В моем случае при снижении до 3-5 метров звучал сигнал.
Вот краткое Описание и фото
liccontrol.htm

Lina_26
2017-11-29 17:47:40

Здравствуйте. Есть такая проблема.В общем есть некий ультразвуковой датчик движения. Не получается прикрутить бузер и серво

Серво привод  нужно установить в положение от 0 до 180 градусов (если до предмета расстояние 3 м, установить 180 градусов, если меньше 3х метров - 0 градусов) И настроить интенсивност звучания бузера.

Помогите пожалуйста, начинающему. roll roll roll

вот примерный код :

#define trigPin 9 //Sensor Echo pin connected to Arduino pin 12
#define echoPin 10 //Sensor Trip pin connected to Arduino pin 11

void setup()

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600); // инициализация послед. порта
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW); // Подаем 0 на выход микроконтроллера
  delayMicroseconds(2); //задержка 2 мкс
  digitalWrite(trigPin, HIGH); // Подаем сигнал на выход микроконтроллера
  delayMicroseconds(10);  // Удерживаем 10 микросекунд
  digitalWrite(trigPin, LOW); // Затем убираем
  duration = pulseIn(echoPin, HIGH); //замеряем время Echo
  distance = duration/58.2; // пересчитываем в см.
 
Serial.println(distance); // выводим в последовательный порт

  delay(1000);
}

Підвал форуму