BASIC4MCU | 질문게시판 | 2개의 초음파센서로 서보모터 하나 작동
페이지 정보
작성자 승천 작성일2022-12-03 15:43 조회570회 댓글2건본문
초음파센서 1개로 서보모터 하나 작동시키는 것 밖에 안 나와있어서
초음파센서 2개를 이용해서 한쪽뿐만 아니라 양쪽에서 오는 물체를 인식해서 서보모터를 작동시키려고 하는데요 !
이 주소보시면 마스터 님께서 댓글로 도움을 주셔서 그 코드에서
제가 아래의 코드로 수정해서 써보았는데
왼쪽 초음파센서에 인식하면 잘 왔다 갔다하지만
오른쪽 초음파센서에 물체가 오면
그냥 시계바늘이 배터리 없어서 그 자리에서 깜빡깜빡 거리는 것 마냥 되더구요,,
제가 많이 부족하긴한데 꼭 성공시키고 싶어서 몇시간동안 만지작거리고 있는데
코드를 어떻게 짜야
2개 초음파센서에 하나씩 인식될때 서보모터 하나를 작동시킬지 모르겠네요 ㅜㅜ
저는 입구차단기 처럼 자동문을 만들려고합니다 !
그래서 예를 들면 왼쪽의 초음파센서에 특정거리 내에 인식이 되어지고 나서
오른쪽의 초음파 센서 쪽으로 갈때 !
즉, 왼쪽과 오른쪽의 초음파센서 사이 (왼쪽 오른쪽 둘다 인식이 안되는 그 구간 ) 에
있을때 서보모터가 다시 자리로 돌아와서 부딪히는 일이 없도록 딜레이 1초 정도?? 하려고 하거든요
잘 되질 않네요 ㅜ
아래는 위에서 말씀드린 에러 난 코드입니다,,
#include <Servo.h>
Servo myservo;
int Trig=8,Echo=9;
int Trig1=11,Echo1=12;
//
int k=0;
//
void setup() {
Serial.begin(9600);
pinMode(Trig,OUTPUT); pinMode(Echo,INPUT);
pinMode(Trig1,OUTPUT); pinMode(Echo1,INPUT);
myservo.attach(6); myservo.write( 90);
}
void loop() {
digitalWrite(Trig,1); delayMicroseconds(10); digitalWrite(Trig,0);
unsigned long duration=pulseIn(Echo,HIGH);
float distance=((340.*(float)duration)/10000.)/2.;
Serial.print(distance); Serial.println("cm");
//
if ((distance< 30)&&(k==0)){ k=1; myservo.write(180); }
else if((distance>=30)&&(k==1)){ k=0; myservo.write( 90); }
digitalWrite(Trig1,1); delayMicroseconds(10); digitalWrite(Trig1,0);
unsigned long duration1=pulseIn(Echo1,HIGH);
float distance1=((340.*(float)duration1)/10000.)/2.;
Serial.print(distance1); Serial.println("cm");
//
if ((distance1< 30)&&(k==0)){ k=1; myservo.write(180); delay(1000);}
else if((distance1>=30)&&(k==1)){ k=0; myservo.write( 90); delay(1000); }
}
댓글 2
조회수 570master님의 댓글
master 작성일뭘 하려는지 잘 모르겠습니다.
승천님의 댓글
승천
입구차단기인데 기존의 하나의 초음파센서로 하는 것은 들어오는 쪽만 인식가능하고 안에서 나가려는 차량은 인식을 못하기 때문에
들어올때 와 나갈때 둘다 차단기가 열리는,
양쪽에 초음파 센서를 달아서 서보모터(차단기) 를 작동시키려 합니다..!