인텔 갈릴레오2 시리얼 포트를 이용한 LED제어

인텔 갈릴레오2
 이전 글을 통해서 갈릴레오의 LED를 깜빡이게 하고 갈릴레오2에 설치된 리눅스 환경을 확인하는 방법을 알아보았다. 이번 글에서는 LED를 깜빡이는 것을 직접 손으로 제어 하는 방법을 알아보자. 시리얼 통신이라는 것을 이용해서 LED를 제어할 것이다.
 시리얼 통신이라는 것은 한번에 한 비트씩 순차적으로 데이타를 전송하는 방식을 말한다. 동시에 여러개의 데이타를 보내는 병렬통신에 비해서 속도는 느리지만 직관적이고 사용하기가 쉽다. 시리얼 포트라는 것은 시리얼 통신을 하기 위해 열려있는 논리적(물리적) 통로라고 생각하면 된다. 컴퓨터 뒤쪽에 있는 아래 그림과 같은 포트가 시리얼 포트의 한 종류이다.
아두이노 IDE에서도 갈릴레오가 연결된 포트를 확인 할 수 있다.

 먼저, 갈릴레오2의 전원 케이블을 연결하고 그리고 마이크로UBS포트에 선을 연결한다. 갈릴레오 시작하기에서 배웠던 블링크 예제를 불러와 갈릴레오2가 정상적으로 동작하고 있는지 확인한다.

 이번에는 실제 LED를 출력핀에 연결을 하여 제어를 해보자. 먼저 이전에 보았던 Blink 예제의 한 부분을 보자.
int led = 13;
pinMode(led, OUTPUT);
 위 코드의 뜻은 13번 PinMode에 아웃풋을 출력하라"라는 뜻으로 해석하면 된다. 아래의 사진을 참고하여 13번 구멍과 GND 구멍에 LED를 연결한다. 이때, LED의 다리가 긴쪽(+극)을 13번에 연결하고 짧은 쪽을 GND에 연결한다.

LED를 연결 하였다면, aduino IDE의 코드를 살펴보자.
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {            
  // initialize the digital pin as an output.
  Serial.begin(9600);        // 시리얼 포트를 9600baud 속도로 연다
  pinMode(led, OUTPUT);  
}
// the loop routine runs over and over again forever:
void loop() {
  if(Serial.available() > 0)
  {
    int state = Serial.read();
 
    if(state == '1')
    {
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      Serial.println("LED Light On");
    }
    else
    {
      digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
      Serial.println("LED Light Off");
    }
  }
}
 Blink 예제를 조금 변경하여 LED를 제어하는 코드를 만들었다. Serial.read()를 통해서 시리얼 통신으로 들어오는 내용을 읽어서 '1'이면 13번 출력에 연결된 LED를 켜게 하는 코드이다. Serial.println()은 시리얼 모니터에 찍는 로그 프린트명령이다. 시리얼 모니터에 '1'을 입력받으면 시리얼모니터는 '1'을 갈릴레오 시리얼 포트로 전송하고 "LED Light On"을 출력한다.

위 코드를 입력한 후, 업로드(Ctrl + U)를 한다. 그리고 나서, 도구 -> 시리얼모니터 를 클릭한다.
시리얼 모니터에 '1'을 입력하고 Send 버튼을 누르면, 갈릴레오에 연결한 LED가 켜지는 것을 확인할 수 있다.
 '2'를 입력하면 LED가 꺼진다.
 이상 시리얼 포트를 이용한 갈릴레오 LED제어를 마친다.