티스토리 뷰
2017/03/30 - [디벨로핑] - 컵홀더 아이디어
컵홀더 아이디어를 구형해보고 싶어서 온습도 센서를 처음에 잡았지만
도시당체 이 센서가 어떻게 작동하는 건지 코드를 보고 이해를 못하겠어서
코드가 그나마 짧아보이는 초음파 센서로 다시 넘어왔다.
정말 내 돌머리와 타협을 잘하는 것 같다.
이러다 중간과제로 푸쉬버튼 누르면 led에 불만 들어오는 회로 제출하는건 아닐런지 걱정이된다.
예제에 나와있는 대로 회로를 작성하였다.
int trig = 8;
int echo = 9;
int led = 3;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(led, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig,LOW);
digitalWrite(echo, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
unsigned long duration = pulseIn(echo, HIGH);
float distance =duration/ 29.0/ 2.0;
Serial.print(distance);
Serial.println("cm");
if(distance<10){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
delay(200);
}
코드를 들여다보면 대충 어떤 식으로 작동하는지 감이온다.
pulseIn(핀번호, 로직레벨)함수는 처음보는 함수이지만 어떤 식으로 작동하는지 알 것 같다.
아마 핀의 현재상태를 변수로 받은 로직레벨로 바꾼뒤 반대 로직레벨로 바뀔때 까지 걸리는 시간을 한 번의 진폭으로 받아서 기록하는 모양이다.
소리의 속도를 고려해 29로 나눠준뒤 소리가 벽에 맞고 돌아온 것을 고려해 이를 2로 나눠주면
장애물까지의 거리를 구할 수 있다.
이 거리가 10 이하가 될 경우 led에 불이 들어올 수 있도록 전압을 걸어준다.
led도 정상적으로 작동하고 시리얼모니터를 확인해봤을 때도 정상적으로 작동함을 확인할 수 있다.
이러한 센서를 사용하여 컴퓨터 앞에 앉자마자 대기모드의 컴퓨터를 자동으로 켜주는 장치를 만들어볼 수도 있을 것이다.
+
지금생각해보니 거꾸로 꺼지는 걸 구현하는 게 더 쓸모있을 것 같다.
문 옆에 거리측정 센서를 달아놓고 문이 열려서 센서와 문 사이의 유격이 넓어지면 모니터를 자동으로 꺼준다면
보다 더욱 안락한 몰컴을 즐길 수 있지 않을까
'추가과제' 카테고리의 다른 글
Making Interactive Art: Set the Stage, Then Shut Up and Listen를 읽고 (0) | 2017.04.06 |
---|---|
affordance? (0) | 2017.03.22 |
좋은 인터렉션이란 (0) | 2017.03.07 |