BASIC4MCU | 질문게시판 | 아두이노 신호등 및 추가센서 코딩 질문드립니다.
페이지 정보
작성자 KKID 작성일2019-05-18 17:32 조회4,798회 댓글1건본문
안녕하십니까
''신호등에 서보모터,적외선 거리센서를 달아 보행자신호등이 초록불일때는
서브모터에 달려있는 차단바가 90도로 동작해서 보행자가 건널 수 있고,
빨간불일때는 차단바가 내려가면서 적외선 거리센서가 80mm이하로 내려가면
보행자가 건너는것을 인식하고 횡단보도 밑 부분의 LED랑 경광등이 켜진다.''
이 것을 만들려고 하는데,, 어려움이 있습니다..
소스코드 잘못된부분을 수정이나 조언을 해주시면 감사하겠습니다..
감사합니다.
#define pin A0
#include <Servo.h>
int pos = 90;
Servo myservo;
int black = 5;
int white = 6;
int blue = 7;
int green = 8;
int orange = 9;
int red = 10;
int yellow = 11;
int brown = 12;
int LED;
void setup()
{
Serial.begin(9600);
pinMode(pin,INPUT);
myservo.attach(13);
pinMode(black, OUTPUT); // 보행자
pinMode(white, OUTPUT);
pinMode(blue , OUTPUT); // 엘이디 줄바
pinMode(green, OUTPUT);
pinMode(orange, OUTPUT); //운전자
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(brown , OUTPUT); // 경광등
}
void loop()
{
digitalWrite(green,HIGH); //10초
digitalWrite(orange,LOW);
digitalWrite(red,LOW);
delay(10000);
digitalWrite(green,LOW); // 운전자 신호등
digitalWrite(orange,HIGH); // 5초
digitalWrite(red,LOW);
delay(5000);
digitalWrite(green,LOW);
digitalWrite(orange,LOW); // 10초
digitalWrite(red,HIGH);
delay(10000);
digitalWrite(black,HIGH); // 10초 ,초록색
delay(10000);
digitalWrite(black,LOW); // 보행자 신호등
digitalWrite(white,HIGH); // 15초 ,빨강
delay(15000);
digitalWrite(white,LOW);
}
uint16_t value = analogRead (pin);
uint16_t range = get_gp2d12 (value);
if(range<80)
{
if( LED = red)
{
digitalWrite(blue,HIGH);
delay(10000);
digitalWrite(yellow,HIGH);
delay(10000);
digitalWrite(yellow,LOW);
digitalWrite(brown,HIGH);
delay(10000);
digitalWrite(brown,LOW);
}
else if( LED = green)
{
for(pos =0; pos <=90; pos +1)
{
myservo.write(pos);
delay(1000);
}
for(pos =90; pos >=0; pos -1)
{
myservo.write(pos);
delay(9000);
}
}
if(LED = green)
{
for(pos =0; pos <=90; pos +1)
{
myservo.write(pos);
delay(1000);
}
for(pos =90; pos >=0; pos -1)
{
myservo.write(pos);
delay(9000);
}
}
}
Serial.println (value);
Serial.print (range);
Serial.println (" mm");
Serial.println ();
delay (1000);
}
uint16_t get_gp2d12 (uint16_t value)
{
if (value < 10) value = 10;
return ((67870.0 / (value - 3.0)) - 40.0);
}
댓글 1
조회수 4,798master님의 댓글
master 작성일
디버깅은 동작을 시켜보고 제대로 동작하지 않는 부분을 체크 한 후에
해당 코드를 살펴보는 것으로 시작합니다.
뭐가 되고, 뭐가 안되는지,
어디까지 되고, 어디부터 안되는지는 동작시켜보는 본인만 알 수 있습니다.