본문 바로가기

Electronics

아두이노 기초강좌 4

지난 번에는 주변의 빛 밝기를 감지해서 LED를 끄고 켜는 것을 만들기 시작했다.  그러다 끝에는 LED를 끄고 켜는 경계가 되는 밝기의 기준을 어떻게 잡을 것이냐를 고민하다 다음번으로 미루는 것으로 마무리를 지었다. 역시 오늘일은 내일로 미루는게 제맛이다. 제맛을 너무나 냈는지 어느새 2주가 지났다.

빛센서로부터 들어오는 아날로그 신호를 숫자로 표시해서 본다면 손으로 센서를 가렸을때와 가리지 않았을때의 차이를 LED를 끄고 켜는 경계로 할것인지, 방 전등을 아예 끄거나 켰을 때의 조도 차이를 LED 끄고 켜는 경계로 할 것인지를 결정할 수 있을 것이다.   

아두이노보드에 직접 LED숫자판을 달거나 LCD를 달 수도 있지만 그건 좀 복잡하니까 나중에 내공이 쌓이면 해보고, 오늘은 간단하게 컴퓨터를 통해서 빛센서의 값을 읽는 것을 시도해보기로 한다. 

아래의 코드를 보자. 지난번 코드와 달라진점이 보이는가? 그렇다 별로 없다. 시작할때 한번만 도는 세팅인 setup()쪽에 Serial.begin(9600);가 추가되었고, 무한루프를 돌게될 loop()쪽에 Serial.println(val);이 추가 되었다. 

int sensorPin = 5;

int ledPin = 13;                            

int val = 0;


void setup()

{

  Serial.begin(9600);                   // 시리얼포트를 9600bps속도로 사용하겠다라는 설정

  pinMode(ledPin, OUTPUT);

}


void loop()

{

  val = analogRead(sensorPin);

  Serial.println(val);                     // 변수val의 값을 시리얼포트를 통해서 전송하라는 얘기

   if (val < 500)

      {digitalWrite(ledPin, HIGH);}

   else  

      {digitalWrite(ledPin, LOW);}

}


Serial.begin(9600);은 9600bps (bit per second)의 속도로 통신을 하겠다는 설정인데, 속도가 마음에 안들면 바꿔도 된다. 하지만 마음대로 쓰는건 아니고 정해진 단계가 있다. PC에 깔린 아두이노 프로그램(아두이노IDE라고도 부름)의 시리얼 모니터 버튼을 누르면 모니터링을 위한 창이 새로 뜬다. 그 창의 아래쪽에 보면 속도 세팅하는 뭔가가 있는데 거기보면 300 baud부터 115200 baud까지 단계 중에서 선택하도록 되어 있다. 



위의 작성한 코드의 시리얼포트 속도와 아두이노 IDE의 시리얼포트 속도를 맞춰주기만 하면 된다. 둘이 서로 다르면 글자가 깨져서 알아볼수 없는 글자들이 시리얼 모니터 창에 쏟아져 나온다.

여기서 잠시, 아두이노에 짜 넣는 프로그램을 프로그램이라는 용어 대신 스케치라고도 부른다. 예술가에게 좀 더 친근한 용어를 써서 쉽게 다가서려고 했는지 모르겠으나 새로시작하는 사람들에겐 또 하나의 용어 장벽이 되기도 한다. 가뿐히 뛰어 넘어주기 바란다.

위 코드의 if 문에서 판단 기준값을 500으로 잡으면 내 방에서 낮에 손바닥으로 센서위 5센티미터 가량 위를 가릴때 불이 켜지고  손을 치우면 불이 꺼진다. 방의 밝기는 각자 다를테니 시리얼 모니터를 통해서 센서의 값을 숫자로 보면서 손바닥으로 가려보거나 방 불을 꺼보거나 하면서 어떻게 달라지는지 확인해보고 자기 목적에 맞는 기준 값을 정해보자.

숫자가 너무 빨리 지나가버려서 읽기가 쉽지는 않지만 대충 알아볼 수는 있다. 그래도 변화를 그래프로 쉽게 알아볼 수 있었으면 좋겠다는 사람이 있다면 프로세싱을 이용하는 방법을 배우면 될 것이다. 이 강좌가 후반으로 가게되면 프로세싱으로 그래프를 보는 방법도 소개하도록 하겠다.


'Electronics' 카테고리의 다른 글

급기야 PIC도 시작, PIC용 프로그래머 PIC-PG1제작하다.  (4) 2010.08.20
아두이노 기초강좌 5  (36) 2010.06.22
아두이노 기초강좌 3  (13) 2010.04.28
아두이노 기초강좌 2  (34) 2010.04.14
아두이노 기초 강좌 1  (36) 2010.04.07