아두이노 Arduino/파이썬(Python)

[아두이노]파이썬 Pyserial로 아두이노 문자, 실수, 정수 값 읽기(수신하기, 송수신, 통신)

끄적끄적아무거나 2022. 5. 16. 18:08
반응형

 

목차

     

     

    Arduino에서 보낸 값 컴퓨터에서 읽기: 실행 방법 

     

    앞서 포스터에서 PC에서 Pyserial로 명령을 보내었고 아두이노에서 해당 명령을 읽어서 LED를 켰다가 끄는 예제를 구현하였습니다. (https://scribblinganything.tistory.com/524) 이번 포스트에서는 아두이노에서 주기적으로 문자열(String), 정수(Integer), 실수(Float) 값을 컴퓨터로 송신하고 (USB 케이블로 시리얼통신 사용) 노트북은 해당 값을 읽어서 출력하는 예제를 실행합니다. 

     

    파이썬(Python)에서 송신하는 메세지를 출력하기 위해서는 파이썬에서 아래의 함수 사용이 필요 합니다.

     

    1. readline 함수 : "\n" 엔터키(다음줄)가 들어올때까지의 버퍼에 저장된 데이터를 읽어 옵니다.

    2. decode 함수 : 아두이노에서 파이썬으로 USB 시리얼 통신으로 보낼 때 인코딩(Encoding) 되기 때문에 decode 작업을 해줍니다.  

     

     

     

     

     

    Arduino에서 보낸 값 컴퓨터에서 읽기: 아두이노 코드

     

    아두이노에서는 아래와 같이 코드를 작성합니다. 

     

    예제 코드>>

    void setup() {
      Serial.begin(9600);
      Serial.setTimeout(1);
    }
    
    void loop() {
      String s_var = "hi";
      int i_var = 100;
      float f_var = 3.14;
    
      Serial.println(s_var);
      Serial.println(i_var);
      Serial.println(f_var);
      delay(500);
    }

    문자열, 정수, 실수 값을 0.5초 주기로 정기적으로 보냅니다. 

     

     

     

     

     

     

     

    Arduino에서 보낸 값 컴퓨터에서 읽기: 파이썬 코드

     

    앞서 아두이노에서 보낸 코드는 아래와 같이 파이썬에서 처리 합니다. 

     

    예제 코드>>

    import serial
    
    ser = serial.Serial("COM6", 9600)
    
    while True:
        a_var = ser.readline().decode()
        b_var = ser.readline().decode()
        c_var = ser.readline().decode()
        print("Type : " + str(type(a_var)) + " Value : " + a_var)
        print("Type : " + str(type(b_var)) + " Value : " + b_var)
        print("Type : " + str(type(c_var)) + " Value : " + c_var)

    6~8번 라인: 주기적으로 보내는 값을 버퍼(Buffer)에서 가져와서 디코드 해줍니다.

    9~11번 라인: 변수에 저장한 값의 종류와 값을 출력 해줍니다. 

     

     

    결과>>

    Type : <class 'str'> Value : hi
    
    Type : <class 'str'> Value : 100
    
    Type : <class 'str'> Value : 3.14
    
    Type : <class 'str'> Value : hi
    
    Type : <class 'str'> Value : 100
    
    Type : <class 'str'> Value : 3.14
    
    Type : <class 'str'> Value : hi
    
    Type : <class 'str'> Value : 100
    
    Type : <class 'str'> Value : 3.14

     

    위와 같이 출력값이 나왔습니다. 종류는 decode 과정에서 문자열로 확인됩니다.

     

    반응형