Ультразвуковой датчик движения

Lina_26
Offline
Зарегистрирован: 29.11.2017

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

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

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

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

#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);
}
b707
Offline
Зарегистрирован: 26.05.2017

ни бузера, ни сервы в коде не вижу. Если Вы пробовали их добавить - показывайте ваш код. Если же Вы думаете, что достаточно попросить "помогите начинающему", чтобы все бросились за вас писать вашу программу - вы ошибаетесь.

Пожалуйста, в следующий раз вставляйте код в сообщение правильно.

Lina_26
Offline
Зарегистрирован: 29.11.2017
Вот попытки были

// Ультразвуковой дальномер
// makerplus.ru
// константы для выводов

#define PIN_TRIG 9
#define PIN_ECHO 10
#define PIN_SERVO 4
   /*#define PIN_SPEAKER 8*/

// расстояние обнаружения см
#define DIST_DETECT 100

// частота звукового сигнала
#define FREQ 546

// подключение библиотеки для HC SR04
#include "Ultrasonic.h"

// создание объекта Ultrasonic
// Trig - 9, Echo - 10
Ultrasonic ultrasonic(PIN_TRIG, PIN_ECHO);

// переменная для хранения измеренного расстояния
float dist_cm=0;

// подключение библиотеки для серво
#include <Servo.h>

// создание объекта Servo
Servo myservo;

// переменная для хранения позиции сервопривода
int pos = 0;

// переменная направления перемещения сервопривода
int dir=1;

void setup() {
// запуск последовательного порта
Serial.begin(9600);

// запуск серво на выходе PIN_SERVO
myservo.attach(PIN_SERVO);
}

void loop() {
// вычисление следующей позиции сервопривода
pos=pos+dir;

// установить сервопривод в позицию pos
myservo.write(pos);

// при достижении крайних позиций изменить
// направление dir
if(pos==180)
dir=-1;
else if(pos==0)
dir=1;
else ;

// получить данные с дальномера
dist_cm = ultrasonic.Ranging(CM);
Serial.println(dist_cm);

// обнаружение объекта в зоне
if(dist_cm>0 && dist_cm<DIST_DETECT) {
// звуковой сигнал
tone(PIN_SPEAKER,FREQ);
}

// пока в зоне обнаружения
while(dist_cm>0 && dist_cm<DIST_DETECT){
dist_cm = ultrasonic.Ranging(CM);
Serial.println(dist_cm);
}

// отключить звуковой сигнал
noTone(PIN_SPEAKER);

// пауза перед сменой позиции сервопривода
delay(50);
}