아두이노로 시리얼 통신하는 예제입니다.
통신을 큰 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이므로 위와같이 만들어준 것입니다.
아스키에 다시 체크를 하고 보면 코딩한데로 문자가 출력되고 원하는 보드에 동작을 확인할 수 있습니다.
'LAP > Arduino' 카테고리의 다른 글
[아두이노] 2개 DC Motor 방향제어(조이스틱) (0) | 2019.09.25 |
---|---|
[아두이노] 온도센서 이용 모터,LED제어 (0) | 2019.09.25 |
[아두이노] 초음파센서를 이용한 거리측정 (0) | 2019.09.20 |
아두이노 시리얼 통신 2 (0) | 2019.08.21 |
ARDUINO FOR문 LED 쉬프팅[순차점멸] (0) | 2019.08.20 |