Ультразвуковой датчик движения
- Войдите на сайт для отправки комментариев
Ср, 29/11/2017 - 18:43
Здравствуйте. Есть такая проблема.В общем есть некий ультразвуковой датчик движения. Не получается прикрутить бузер и серво
Серво привод нужно установить в положение от 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);
}
ни бузера, ни сервы в коде не вижу. Если Вы пробовали их добавить - показывайте ваш код. Если же Вы думаете, что достаточно попросить "помогите начинающему", чтобы все бросились за вас писать вашу программу - вы ошибаетесь.
Пожалуйста, в следующий раз вставляйте код в сообщение правильно.
Вот попытки были // Ультразвуковой дальномер // 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); }