728x90
반응형

아두이노로 시리얼 통신하는 예제입니다.

통신을 큰 2개의 파트로 구분하면 직렬 통신 병렬 통신이 있는데 병렬 통신은 말그대로 복수 신호선으로 동시에 여러BIT를 보내는 것이고 직렬 통신은 한 BIT식 전달하는 방식입니다.

시리얼통신 = 직렬 통신

CODE

char a;//문자 a선언

void setup() {

pinMode(13,OUTPUT);// 13번 핀을 출력으로 사용

Serial.begin(9600);// 9600bps 초당 비트 전송 속도

}

void loop() {

if(Serial.available()){

a=Serial.read();

 

if(a=='1')

{

digitalWrite(13,HIGH); // 만약에 1이면 led high주고 led on 뿌리고, read: 뿌리고 a 값 뿌림

Serial.println("led on");

Serial.print("read:");

Serial.println(a);

}

if(a=='0')

{

digitalWrite(13,LOW); // 만약에 0이면 led low주고 led off 뿌리고, read: 뿌리고 a 값 뿌림

Serial.println("led off");

Serial.print("read:");

Serial.println(a);

}

}

}

여기서 시리얼 통신을 처음 하신 분들을 위해서 몇 가지만 설명하고 넘어가겠습니다.

char로 변수선언 : 문자를 수신 받기 위해서

if(Serial.available()) : 시리얼 통신 data에 입력 값을 버퍼에 저장후 확인이 되면~ 이라고 생각하시는게 편합니다.

a=Serial.read() : 입력받은 데이터를 변형없이 그대로 수신

Serial.print : 문자를 시리얼 모니터상에 뿌려주는 것

Serial.println : 뿌려주고 한줄 밑으로 가는 것입니다.

통신 환경

저는 따로 아두이노 프로그램에서 지원하는 시리얼 모니터를 쓰지 않고 docklight라는 프로그램을 썼습니다.

이 프로그램은 인터넷에서 다운 받을 수 있으나, 정품은 구매를 해야합니다,

정품이 아니여도 간단한 TEST는 진행 가능합니다.

일단, 아두이노 보드를 docklight에서 잡아줍니다.

여기서 통신을 하기위해선 스타트 비트와 엔드 비트가 필요합니다.

스타트 비트는 아 이녀석이 지금 통신을 시작하는구나를 알리는 비트고 엔드비트는 말그대로 아 보낼비트 다 보냈구나를 알리는 비트입니다. 이걸 STX,ETX라고 하는데 보내는 문자가 1이면 STX,1,ETX이런식으로 신호를 보내주어야 합니다. HEX TO ASCII 로 변환하면 0X02 =STX, 0X03=ETX, 0X30=0, 0X31=1이므로 위와같이 만들어준 것입니다.

아스키에 다시 체크를 하고 보면 코딩한데로 문자가 출력되고 원하는 보드에 동작을 확인할 수 있습니다.

 

 

반응형

+ Recent posts