본문 바로가기

프로그래밍/Arduino

Serial 통신하기

  1. 준비물
    - 아두이노 보드(내 보드는 Arduino Uno)


  2. 코드
  3. void setup() {
      // 시리얼 통신 보드레이트 설정
      Serial.begin(9600);
    }
    
    void loop() {
      // 입력 받은 값이 있는 경우는 0보다 큼
      if(Serial.available() > 0) {
        char inputVal = Serial.read(); // 사용자 입력(char 형을 받음)
        int i_Val = 10;
        float f_Val = 1.23456;
    
        // 입력받은 char값 표시
        Serial.print("inputVal : ");
        Serial.println(inputVal);
        
        switch(inputVal) {
          // int형 표시
          case 'i' :
            Serial.print("\t intVal : ");
            Serial.println(i_Val);
            break;
    
          // float형 표시
          case 'f' :
            Serial.print("\t floatVal : ");
            Serial.print(f_Val);
            Serial.print("\t\t");
            Serial.print("floatVal .2 : ");
            Serial.println(f_Val, 2); // 소수점 아래 2자리까지 표시
            break;
        }
    
        Serial.println("");
      }
    }
    


  4. 출력 화면



  5. 알게된 점
    - 보드마다 보드레이트가 다름(보드레이트는 통신하는 속도라고 함)
    - Arduino Uno는 디버거가 없어 Serial 출력을 통해 디버깅(Arduino Zero는 디버거가 있음)
    - print 또는 println에 두번째 인자는 출력할 소수점 자리 수
    - 사용자 입력 시 char형만 받아옴(qwer 입력 시 q, w, e, r 따로 입력 됨)
    - Serial 입력 시 아두이노 보드의 RX LED 켜짐(Receive)
    - Serial 출력 시 아두이노 보드의 TX LED 켜짐(Transmit)