BASIC4MCU | 질문게시판 | 분리수거(적외선감지,금속감지)
페이지 정보
작성자 가든 작성일2019-04-29 10:21 조회6,324회 댓글0건본문
적외선감지센서로 쓰레기의 유무를 판단하고
쓰레기가 올려진것이 확인되면 금속감지센서가 금속 비금속 여부를 판단하여 쓰레기가 올려진 판을 좌우로 움직여 금속 비금속을 분리하는
쓰레기통을 만들고 싶습니다.
판을 좌우로 움직일 때 서보모터를 사용하여 움직이려고 합니다.
금속감지센서와 적외선 감지센서에 대해 궁금한게 있는데
1.적외선 감지센서가 물체를 감지하면 금속센서를 작동시키는건가요?
2.금속감지센서가 어떤 식으로 물체의 금속 비금속 여부를 감지하는건가요?
제품명은 LJ12A3-4-Z 유도형 근접 센서 입니다.
한개로는 부족할 것 같아 두세개 정도 부착할 것 같습니다.
파란색 버튼같은게 있는데 물체가 이걸 누름으로써 센서가 동작하는 건 아닌거같고..
도대체 어떤식으로 작동을 하는건지 궁금합니다.
3.코드 작성에 대해 궁금한 것이 있습니다.
서보모터를 쓰레기를 올려두는 판 밑 가운데에 장착해서 시계방향으로는 50도 회전후 2초 뒤 원위치로 복귀.
반시계방향으로도 50도 회전후 2초뒤 원위치로 복귀 하는 형식으로 만들고 싶습니다.
코드에서 delay도 수정해야 할것 같고. 모터 작동후 원위치로 복귀하는 코드도 어떤식으로 써야 할 지 모르겠습니다.
#include <Servo.h> //서보모터 헤더파일
int angle = 0; //각도 저장변수
int sen = 8; //적외선 센서 핀
int sen2 = 10; //금속 센서 핀
int servo = 9; //Servo 핀 설정
Servo myservo; //Servo에 따르는 myservo 라는 객체명을 정한다
void setup()
{
Serial.begin(9600); //하드웨어 시리얼 포트를 9600bps 속도로 초기화
myservo.attach(9); //myservo는 8번핀에 의해 컨트롤 됨을 설정.
pinMode(sen, INPUT); //// 장애물 감지 센서는 감지를 하고 아두이노로 신호를 보내주는 것이므로 입력모드로 설정해야하며,
pinMode(sen2, INPUT); //// 장애물 감지 센서는 감지를 하고 아두이노로 신호를 보내주는 것이므로 입력모드로 설정해야하며,
pinMode(servo, OUTPUT); // servo는 아두이노로부터 신호를 받아 출력하는 것이므로 출력모드로 설정해야한다.
pinMode(LED, OUTPUT);
}
void loop(){
myservo.write(0);
delay(1000);
if(digitalRead(sen)==LOW&& digitalRead(sen2)==LOW) //적외선 감지, 금속일 때
{
digitalWrite(servo, HIGH);
myservo.write(50); //서보모터가 50도
delay(1000);
}
else if(digitalRead(sen)==LOW && digitalRead(sen2)==HIGH) //적외선 감지, 비금속일 때
{
digitalWrite(servo, HIGH);
myservo.write(50); //서보모터가 50도
delay(1000);
}
}
댓글 0
조회수 6,324등록된 댓글이 없습니다.