?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

아두이노 초음파 3개 연결 햇을 때 간섭에 대해 알고 싶습니다.

페이지 정보

작성자 조진호 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-06-06 21:17 조회1,750회 댓글3건

본문

아두이노 나노에 초음파 3개, 부저 3개, 조도, LED를 연결했습니다

 

초음파3개를 연결후 시리얼 포트를 확인해 보니 간섭이 있는 지;;;;

혼자 값이 떨어지는 경우가 있습니다 ㅠㅠㅠㅠ

그러다 보니 초음파센서가 감지도 안되었는데 부저가 울리네요 ㅠㅠ

왜그런걸 까용 ㅠㅠ

참고로 초음파는 수직으로 달려있습니다.

 

그리고 혹시나 초음파 감지각도를 조절할 수 있을까요?

 

일단 소스 올려드립니다.

 

 int led = 2;
 int sensor = 0;
 int senVal = 0;
 
 int buA = 3;
 int trA = 4;
 int ehA = 5;
 
 int buB = 6;
 int trB = 7;
 int ehB = 8;
 
 int buC = 9;
 int trC = 10;
 int ehC = 11;
 
void setup()
{
  Serial.begin(9600); //9600의 속도로 시리얼 통신을 초기화 시킨다

  pinMode(led, OUTPUT);

  pinMode(trA,OUTPUT);
  pinMode(ehA,INPUT);
  pinMode(buA,OUTPUT);

  pinMode(trB,OUTPUT);
  pinMode(ehB,INPUT);
  pinMode(buB,OUTPUT);
 
  pinMode(trC,OUTPUT);
  pinMode(ehC,INPUT);
  pinMode(buC,OUTPUT);
}
 
void loop()

  long distanceA, durationA, distanceB, durationB, distanceC, durationC;

  senVal = analogRead(sensor);
 
 digitalWrite(trA,HIGH);
  delayMicroseconds(10);
  digitalWrite(trA,LOW);
 
  durationA = pulseIn(ehA,HIGH);
  distanceA = durationA / 58.2;
 
  Serial.print(distanceA);
  Serial.print(" cmA  ");

int valA = distanceA;

if(valA < 100)
{
  digitalWrite(buA, HIGH);
  //delay(50);
}
else
digitalWrite(buA, LOW);
 
  digitalWrite(trB,HIGH);
  delayMicroseconds(10);
  digitalWrite(trB,LOW);
 
  durationB = pulseIn(ehB,HIGH);
  distanceB = durationB / 58.2;
 
  Serial.print(distanceB);
  Serial.print(" cmB  ");

int valB = distanceB;

if(valB < 120)
{
  digitalWrite(buB, HIGH);
  //delay(50);
}
else
digitalWrite(buB, LOW);


  digitalWrite(trC,HIGH);
  delayMicroseconds(10);
  digitalWrite(trC,LOW);
 
  durationC = pulseIn(ehC,HIGH);
  distanceC = durationC / 58.2;

  Serial.print(distanceC);
  Serial.println(" cmC");

int valC = distanceC;

if(valC < 100)
{
  digitalWrite(buC, HIGH);
  //delay(50);
}
else
digitalWrite(buC, LOW);

 

  if(senVal < 30)
  {
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
  }
  else{
  digitalWrite(led, LOW);
  }


 

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

측정각도가  15'라고 하네요. 이 범위에서 겹치지 않게 잘 배치해야 할듯 합니다. 측정에 간섭이 안생기는 범위 내에서 중간에 칸막이로 막으면 어떨까 싶기도 하구요.

김덕배님의 댓글

김덕배 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

글쓴이입니다. 친절한 답변감사합니다. 측정각도 15도가 디폴트 값인가요? 죄송하지만 소스내에서 그 각도를 변경하는 방법이 있을까요?