BASIC4MCU | 질문게시판 | 안녕하세요. 간만에 질문올려봅니다..
페이지 정보
작성자 태태 작성일2020-11-17 18:18 조회2,515회 댓글1건본문
//
#define inputPin1 A0
#define inputPin2 A1
//
int REDpin=9; // 도로빨간불
int YEL0pin=8; // 도로 황불
int GREENpin=7; // 도로 초록불
int Rpin=5; // 보행자 빨간불
int Bpin=6; // 보행자 파란불
int DRpin=4; // 운전자 경고등
int FGpin=10; // 바닥신호등 초록
int FYpin=11; // 바닥신호등 황불
int FRpin=12; // 바닥신호등 빨강
//
bool flag_1=0,flag_2=0;
unsigned long t1;
unsigned long t2;
//
void setup(){
pinMode(REDpin,OUTPUT); pinMode(YEL0pin,OUTPUT); pinMode(GREENpin,OUTPUT);
pinMode(FRpin,OUTPUT); pinMode(FGpin,OUTPUT); pinMode(FYpin,OUTPUT);
pinMode(DRpin,OUTPUT); pinMode(Rpin,OUTPUT); pinMode(Bpin,OUTPUT);
Serial.begin(9600);
}
//
void loop() {
digitalWrite(GREENpin,1); digitalWrite(Rpin,1); delay(5000); //도로 초록불,보행자 빨간불 on
digitalWrite(GREENpin,0); digitalWrite(YEL0pin,1); delay(1000); //도로 초록불off,도로 황불 on
digitalWrite(YEL0pin,0); digitalWrite(REDpin,1); //도로 황불off,도로 빨간불 on
digitalWrite(Bpin,1); digitalWrite(Rpin,0); digitalWrite(DRpin,1); //보행자 파란불 on,보행자 빨간불off 운전자경고등 on
for(int i=0;i<100;i++){
Serial.println(t1);
Serial.println(t2);
int inputPin1=analogRead(inputPin1);
if(inputPin1 > 2) //감지할 때
{
if(flag_1==0){ flag_1=1; t1=millis(); }
}
int inputPin2=analogRead(inputPin2);
if(inputPin2 > 2)
{
if(flag_2==0){ flag_2=1; t2=millis(); }
}
//디버깅 해보니 여기서 갇혀서 빠져나오질 못합니다. 그리고 시리얼모니터로 확인했을때 t1,t2값도 나오지 않더라구요.
하고싶은건 센서1 감지하면 시간측정 다음 센서2 감지하면 시간측정하고 측정값으로 LED관리하고싶습니다.
if (t1+t2<=500){ digitalWrite(FRpin,1); }
else if(t1+t2<= 1000){ digitalWrite(FYpin,1); }
else { digitalWrite(FGpin,1); }
delay(100);
//
digitalWrite(FGpin,0); digitalWrite(FYpin,0); digitalWrite(FRpin,0);
}
Serial.println("time end");
digitalWrite(REDpin,0); digitalWrite(Bpin,0); digitalWrite(DRpin,0); //도로 빨간불 off,보행자 파란불 off 운전자경고등 off
}
댓글 1
조회수 2,515master님의 댓글
master 작성일
디버깅(에뮬레이션 또는 시뮬레이션)은 딜레이에서 실제보다 시간이 많이 걸립니다.
flag_1 및 flag_2를 clear 시키는 문장은 안보입니다.
시간계산도 이상하군요
unsigned long t;
t=t2-t1;
if (t<=500){ digitalWrite(FRpin,1); }
else if(t<= 1000){ digitalWrite(FYpin,1); }
else { digitalWrite(FGpin,1); }
비교문은 이런식으로 만들어야겠죠
if문의 위치도 t2입력하는 곳으로 옮겨야 할 것으로 생각되고요
c언어 초보인 것 같아서 허술한 곳이 너무 많아서 조언이 어렵고, 조언해드려도 이해하지 못할 것 같습니다.
공부를 더 한 후에 다시 시도해보세요