BASIC4MCU | 질문게시판 | 적외선 감지 센서 4개를 이용해 LED조절 질문있습니다.
페이지 정보
작성자 태태 작성일2020-11-02 20:03 조회9,542회 댓글3건본문
// 적외선 감지 센서 4개를 차례대로 두고 물체가 그 위로 지나갑니다. 센서 4개의 감지 시간 차를 이용해 시간 차에 따른 led 불빛을 세가지로 나오게 하고 싶은데요.
어떻게 코딩하는게 좋을까요. 센서의 개수를 줄이셔도 됩니다. 찾아보니 millis함수같은걸 이용하면 될 것 같은데.. 코딩 초보입니다.
*적외선 감지 센서는 TCRT5000을 사용합니다.
댓글 3
조회수 9,542master님의 댓글
master 작성일
2개의 센서로 먼저 공부하세요
https://bbangpan.tistory.com/67
좀 다른 측정방식이지만 공부하는데에는 도움이 되실겁니다.
태태님의 댓글
태태
링크주신글 도움이 됐습니다. 한가지만 더 여쭤보고 싶습니다.
int REDpin = 9; //도로빨간불
int YELLOWpin = 8; //도로 황불
int GREENpin = 7; //도로 초록불
int Rpin = 5; //보행자 빨간불
int Bpin = 6; //보행자 파란불
void setup()
{
pinMode(REDpin, OUTPUT);
pinMode(YELLOWpin, OUTPUT);
pinMode(GREENpin, OUTPUT);
pinMode(Rpin, OUTPUT);
pinMode(Bpin, OUTPUT);
}
void loop()
{
digitalWrite(GREENpin, HIGH); //도로 초록불,보행자 빨간불 on
digitalWrite(Rpin, HIGH);
delay(5000);
digitalWrite(GREENpin, LOW); //도로 초록불off, 도로 황불 on
digitalWrite(YELLOWpin, HIGH);
delay(1000);
digitalWrite(YELLOWpin, LOW); //도로 황불off, 도로 빨간불 on
digitalWrite(REDpin, HIGH);
digitalWrite(Bpin, HIGH); //보행자 파란불 on, 보행자 빨간불off
digitalWrite(Rpin, LOW);
delay(5000);
digitalWrite(REDpin, LOW); //도로 빨간불 off, 보행자 파란불 off
digitalWrite(Bpin, LOW);
}
위에 신호등 코드에 보행자 파란불일때마다 제가 제시한 조건을 실행하고 싶습니다.
1. If문의 위치는 보행자 파란불 켜질때에 같이 하면 될까요?
2. 적외선센서 감지시간 재는 것은
If(적외선센서1==HIGH)
{
unsigned long t1= millis()
} 이런식으로 하면 될까요??
master님의 댓글
master
1.
digitalWrite(Bpin, HIGH); //보행자 파란불 on, 보행자 빨간불off
digitalWrite(Rpin, LOW);
delay(5000);
5초 딜레이 시간동안에 체크를 하세요
2.
스위치 엣지 검출하듯이 검출해야지 시간을 측정할 수 있습니다.
bool flag=0; // 셋업함수 위쪽의 전역변수로 선언
unsigned long t,t_start,t_end; // 셋업함수 위쪽의 전역변수로 선언
If(적외선센서1==HIGH){
if(flag==0){ flag=1; t_start=millis(); }
}
else{
if(flag){ flag=0; t_end=millis(); t=t_end-t_start; }
}