Diễn đàn Arduino Việt Nam | Tôi yêu Việt Nam
Hãy cùng đăng nhập hoặc đăng ký vào diễn đàn để cập nhật những bài viết mới và mở hết chức năng của diễn đàn nào!

Share
Tổng số bài gửi : 5
Points : 7
Reputation : 0
Join date : 13/04/2017
Xem lý lịch thành viên
13042017
e thấy trên trang arduino.vn có hướng dẫn làm radar quay 180 độ, vậy muốn radar 360 độ phải làm thế nào?
Share this post on:diggdeliciousredditstumbleuponslashdotyahoogooglelive

Comments

on Thu Apr 13, 2017 8:32 pmanhminhdhtv
vanthongpro đã viết:Bạn có thể thay servo thành động cơ bước.
Dạ! cám ơn a! Very Happy Very Happy
avatar
on Thu Apr 13, 2017 8:11 pmvanthong
Bạn có thể thay servo thành động cơ bước.
on Thu Apr 13, 2017 8:07 pmanhminhdhtv
e định làm cho nó xoay cho giống thực tế, mình có thể bỏ servo đi thay vào 1 motor r hiển thị từ cảm biến lên processing đc k a?
avatar
on Thu Apr 13, 2017 7:22 pmvanthong
anhminhdhtv đã viết:
vanthongpro đã viết:bạn cho mình xem thử code của nó được không
Code Radar 180:
#include .
const int trigPin = 8;
const int echoPin = 7;
int buzzer=10;
long duration;
int distance;
Servo myServo;
void setup() {
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(buzzer, OUTPUT);
 Serial.begin(9600);
 myServo.attach(9);
}
void loop() {
 
 for(int i=15;i<=165;i++){  
 myServo.write(i);
 delay(30);
 distance = calculateDistance();
 
 Serial.print(i);  Serial.print(",");
 Serial.print(distance);
Serial.print(".");
 }
 for(int i=165;i>15;i--){  
 myServo.write(i);
 delay(30);
 distance = calculateDistance();
 Serial.print(i);
 Serial.print(",");
 Serial.print(distance);
 Serial.print(".");
 }
}
int calculateDistance(){
 
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 distance= duration*0.034/2;
 if(distance<20) {
 digitalWrite(buzzer, LOW);
 delay(20);
 digitalWrite(buzzer, HIGH);
}
else {
 digitalWrite(buzzer, HIGH);
}
 return distance;
}
e mua servo 360 thì người ta bảo k thể điều khiền như 180 mà cấp xung vào thì nó quay thôi..

Nếu bạn không dùng servo 360 độ thì bạn dùng servo 180 độ vẫn được nhưng bạn phải sử dụng 2 cảm biến siêu âm.
Và code cho arduino. Code này mình tìm trên mạng
Code:
#include <Servo.h>


#define radarFrontEchoPin 2
#define radarFrontInitPin 3
#define radarBackEchoPin 4
#define radarBackInitPin 5
#define radarServoPin 6

unsigned int radarReadings[360];

byte radarAngle = 90;
byte radarDirection = 1;
byte radarStepAngle = 5;
unsigned long radarSensorPulseTime = 0; // stores the pulse in Micro Seconds
Servo radarServo;

//setup
void setup() {
  pinMode(radarFrontInitPin, OUTPUT);
  pinMode(radarFrontEchoPin, INPUT);
  pinMode(radarBackInitPin, OUTPUT);
  pinMode(radarBackEchoPin, INPUT);

  radarServo.attach(radarServoPin);

  for (unsigned int i = 0; i < 360; i++) {
    radarReadings[i] = 0;
  }


  Serial.begin(115200);

  radarServo.write(radarAngle);
  delay(500);
  Serial.println("Starting...");
}

// execute
void loop() {
  readDistance();



  delay(100);
}

void readDistance() {
  radarReadings[radarAngle] = getUltraSoundMeasurement(radarFrontInitPin, radarFrontEchoPin);
  radarReadings[radarAngle + 180] = getUltraSoundMeasurement(radarBackInitPin, radarBackEchoPin);

  Serial.println("Front:");
  Serial.println(radarAngle, DEC);
  Serial.println(radarReadings[radarAngle], DEC);
  Serial.println("Back:");
  Serial.println(radarAngle + 180, DEC);
  Serial.println(radarReadings[radarAngle + 180], DEC);
  Serial.print('-');
  Serial.print('-');
  Serial.print('-');
  Serial.print('-');
  Serial.print('-');
  Serial.print('-');
  Serial.println('-');

  if (radarDirection == 1) {
    if (radarAngle + radarStepAngle >= 179) {
      radarAngle = 179;
      radarDirection = 0;
    }
    else {
      radarAngle = radarAngle + radarStepAngle;
    }
  }
  else {
    if (radarAngle - radarStepAngle + 100 <= 100) {
      radarAngle = 0;
      radarDirection = 1;
    }
    else {
      radarAngle = radarAngle - radarStepAngle;
    }
  }

  radarServo.write(radarAngle);
}

unsigned long getUltraSoundMeasurement(byte initPin, byte echoPin) {
  digitalWrite(initPin, HIGH); // send 10 microsecond pulse
  delayMicroseconds(10); // wait 10 microseconds before turning off
  digitalWrite(initPin, LOW); // stop sending the pulse

  radarSensorPulseTime = pulseIn(echoPin, HIGH, 30000); // Look for a return pulse, it should be high as the pulse goes low-high-low

  return radarSensorPulseTime / 58; // return distance = pulse time / 58 to convert to cm.
}
Bạn nạp vào và chạy thử xem
on Thu Apr 13, 2017 3:15 pmanhminhdhtv
vanthongpro đã viết:bạn cho mình xem thử code của nó được không
Code Radar 180:
#include .
const int trigPin = 8;
const int echoPin = 7;
int buzzer=10;
long duration;
int distance;
Servo myServo;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
myServo.attach(9);
}
void loop() {

for(int i=15;i<=165;i++){
myServo.write(i);
delay(30);
distance = calculateDistance();

Serial.print(i); Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
for(int i=165;i>15;i--){
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
int calculateDistance(){

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
if(distance<20) {
digitalWrite(buzzer, LOW);
delay(20);
digitalWrite(buzzer, HIGH);
}
else {
digitalWrite(buzzer, HIGH);
}
return distance;
}
e mua servo 360 thì người ta bảo k thể điều khiền như 180 mà cấp xung vào thì nó quay thôi..
avatar
on Thu Apr 13, 2017 2:52 pmvanthong
bạn cho mình xem thử code của nó được không
on Thu Apr 13, 2017 2:45 pmanhminhdhtv
vanthongpro đã viết:Bạn có thể thay servo 180 độ thành 360 độ và sửa lại code trong vòng lập for của arduino.
a có thể hướng dẫn kỹ hơn cho e đc k?
avatar
on Thu Apr 13, 2017 5:40 amvanthong
Bạn có thể thay servo 180 độ thành 360 độ và sửa lại code trong vòng lập for của arduino.
Sponsored content
Permissions in this forum:
Bạn không có quyền trả lời bài viết
Free forum | © phpBB | Free forum support | Liên hệ | Report an abuse | www.sosblogs.com