티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함