Computer Science/Arduino, RB Pi

Arduino] 시리얼 통신을 이용한 LED 제어

TwinParadox 2015. 10. 31. 22:56
728x90




약 1주일 전에 구매한 아두이노 키트입니다.

필요한 센서만 부분부분 구매할까, 아니면 이렇게 구성된 것으로 살까 고민하던 찰나에,

커뮤니티에서 올라오는 예제와 여러가지 입출력방식,

함수를 경험하는데 나쁠 것도 없다고 생각해서 키트를 샀습니다.

이 키트에는 아두이노 우노 R3보드가 동봉되어 있는데,

그것과는 별개로 보드 자체를 하나 더 샀는데,

이건 자주 애용하던 인터넷 쇼핑몰에서 포인트로만 구매해뒀습니다.

대략 이렇게 사는데 6만원정도 쓴 것 같네요.


잡소리는 이쯤 해두고,

오늘 선보일 코드는 시리얼통신을 이용해서

LED를 점멸을 제어하는 소스를 아두이노에 업로딩했습니다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
int ledPin=9;
String inputString; // 시리얼 통신 통한 입력 문자열
boolean ledOnOff=false// LED 초기값은 꺼진 상태
 
void setup()
{
  Serial.begin(9600); // 포트 초기화
  pinMode(ledPin,OUTPUT); // LED 연결 포트 출력으로 설정
}
 
void loop()
{
  if(ledOnOff) // LED ON
  {
    digitalWrite(ledPin,HIGH);
  }
  else // LED OFF
  {
    digitalWrite(ledPin,LOW);
  }
}
 
void serialEvent() // 시리얼 포트로 데이터 수신
{
  while(Serial.available())
  {
    char inChar=(char)Serial.read(); // read 1 byte
    if(inChar=='\n' || inChar=='\r'// 문자열 종료 검사
    {
      if(inputString.equals("on")) // on
      {
        ledOnOff=true// LED 켜기
        Serial.println("LED On!"); // LED on 컴퓨터로 전송
        inputString=""// 전송 문자열 버퍼 삭제
      }
      else if(inputString.equals("off")) // off
      {
        ledOnOff=false;
        Serial.println("LED Off!");
        inputString="";
      }
    }
    else
    {
      inputString+=inChar; // 문자열 종료 시점까지 이어붙임
    }
  }
}
cs



시리얼통신을 통해 On을 입력하면

시리얼모니터에는 'LED On!'이라는 알림과 함께,

아래와 같이 회로의 LED가 점등됩니다.



시리얼통신을 통해서 Off를 입력할 경우,

모니터에는 'LED Off!'가 출력되면서

다시 LED가 점등됩니다.

여기서 주의할 점은 이외의 명령어가 입력되면

별도로 지정해준 것이 없기 때문에

On, Off가 입력되어도 점멸되지 않습니다.





728x90