본문 바로가기

카테고리 없음

AIOT - 아두이노(5) - 시리얼 통신

이번엔 시리얼 통신으로 가변저항과 조도센서의 값을 요청해서 출력하는 프로그램을 만들어보겠습니다.

 

시리얼통신이란?

 

시리얼 통신은 직렬로 정보를 주고 받는 방법으로 가장 쉽고 간단한 통신 방식입니다.

아두이노는 시리얼 통신으로 프로그램을 아두이노 보드에 업로드하고 PC와 통신을 합니다.

 

/*
가변 저항 + 조도 센서 
=> 시리얼 통신으로 가변저항(VR=) 또는 조도센서(BRIGHT=) 값 요청해서 출력하기
*/
#define POTEN_PIN A0
#define BRIGHT_PIN A1
void setup() {
  Serial.begin(9600);
}

void loop() {
  int vrValue = analogRead(POTEN_PIN); //가변저항의 값을 받아 vrValue에 저장
  int percent = ((double)vrValue / 1023.0) * 100; //vrValue를 퍼센트로 변환
  int brightValue = analogRead(BRIGHT_PIN); //조도센서의 값을 받아 brightValue에 저장
  
  if (Serial.available() > 0) //메세지를 보냈는지 확인
  {
    String readData = Serial.readStringUntil('\n'); //문자열을 엔터로 받음

    //출력 코드
    if (readData == "VR=")
    {
      Serial.print("VR = ");
      Serial.print(percent);
      Serial.println("%");
    }
    if (readData == "BRIGHT=")
    {
      Serial.print("BRIGHT = ");
      Serial.println(brightValue);
    }
  }
}

시리얼 통신은 생각보다 간단합니다.

값을 받아 변수에 저장하고 출력하는 과정은 이전 게시물에서 많이 했던 과정이라 어렵지 않습니다.

 

다만 메세지를 요청시 문자열 형태로 요청을 하게 되는데, 이 때 아두이노에서는

String 변수명 = Serial.readStringUntil('\n'); 이라는 코드를 사용하는데,

이는 문자열을 엔터를 입력할 때 까지 받는다는 뜻입니다.