반응형
Make IT! Arduino -#02 방문 경고등 만들기
2번째 주제는 초음파 센서를 이용한 경고등이다.
거리에 따라 부저를 통한 소리와 RGB LED 출력으로 색깔을 표현한다.
1번 예제보다 더 쉬운 조립이다. 굳이 목공풀을 사용하지 않아도 될 정도로 결합도 잘 된다.
1번에서 발생했는 인쇄 문재점도 없었다.
그런데 문제점이라고 판단되는것은 책자에 있는 소프트웨어 부분이다.
코딩에서 다소 오류라고 판단되는 부분이 있다.
정확히 만든사람의 의도가 없어서 어떻게 하면 되겠다는 이야기는 할 수가 없다.
그래서 내가 만들면 이렇게 만들겠다는것은 배제하고 오류부분만 이야기 하고자 한다.
1.1번 예제와 마찬가지로 거리에 대한 표현이다. 거리계산 공식이 잘못 되었다.
2. LED 출력핀의 핀모드 이다. 아날로그 출력일때는 핀모드 지정이 불필요 하다.
3. LED 색을 출력하기 위해서 아날로그 출력을 하는데 계산 공식이 거리에 따라 마이너스가 나올수 있다.
3.1 아날로그 출력의 값은 0에서 255이다.
3.2 그냥 거리에 대한 계산공식을 사용하는것 보다는 255로 고정하는편이 더 좋아 보인다.
4. 오류는 아니지만 설명서에는 모두 검정색은 GND, VCC는 빨강으로 되어 있다. 그런데 반대로 되어 있는 부분이 하나 있다.
코딩 오류 이외에는 큰 문제점은 찾지 못했다.
조립도 쉽고 잘 작동하는것 같다.
int rpin =11; //led Red
int gpin =10; //led Green
int bpin =9; //led Blue
int spin =8; //sound buzzer
int epin =3; //초음파 에코
int tpin =2; //초음파 트리거
float duration;
float distance;
void setup()
{
pinMode(tpin, OUTPUT);
pinMode(epin, INPUT);
pinMode(spin, OUTPUT);
// pinMode(rpin, OUTPUT);
// pinMode(gpin, OUTPUT);
// pinMode(bpin, OUTPUT);
Serial.begin(115200);
}
void loop()
{
digitalWrite(tpin, HIGH);
delay(10);
digitalWrite(tpin, LOW);
duration = pulseIn(epin,HIGH);
distance = (340.0*duration/1000/2/10);
//distance = (duration/58.8);
Serial.print(distance);
Serial.println(" cm.");
Alarm(rpin, 20);
Alarm(gpin, 40);
Alarm(bpin, 60);
delay(100);
}
void Alarm(int pin, float check_dis)
{
if(distance < check_dis)
{
int pwm = 255;// -(check_dis -distance);
analogWrite(pin, pwm);
tone (spin, 1000, 100);
delay(100);
tone (spin, 1000, 100);
delay(100);
}
else
{
analogWrite(pin, 0);
}
return ;
}
|
'아두이노' 카테고리의 다른 글
Make IT! Arduino -#04 보안 저금통 만들기 (0) | 2020.07.14 |
---|---|
Make IT! Arduino -#03 자동포탑 만들기 (0) | 2020.07.12 |
Make IT! Arduino -#01 자동타켓과 고무줄 총 만들기 (0) | 2020.06.28 |
아두이노 문자와 문자열-#7 (0) | 2020.06.21 |
아두이노 문자와 문자열-#6 (0) | 2020.06.21 |
댓글