3. 두 번째 실험 : 송신
이번에는 파이썬에서 값을 송신하면 그에 따라서 아두이노의 LED를 점멸시키는 예제를 해 보겠다. 파이썬에서 데이터를 쓰는 함수로 Serial.write() 함수가 있는데 전송할 바이트 데이터를 리스트나 튜플로 묶어서 넘겨주면 된다. 반환값은 전송한 데이터의 바이트 수이다. 예를 들면 다음과 같다.
-------------------------------------------------------------------------
>>> ard.write( [0] ) # 0이라는 데이터를 전송한다.
>>> ard.write( [10, 150, 255] ) # 10,150,255를 차례로 전송한다.
>>> ard.write( 123 ) # 예외 발생!
-------------------------------------------------------------------------
전송되는 데이터는 바이트 데이터이므로 0~255 사이의 정수여야 하며 마지막 예와 같이 리스트나 튜플이 아니라면 예외가 발생함을 유의하여야 한다.
만약 문자열을 한꺼번에 전송하고 싶다면 encode() 라는 문자열 내장 함수를 이용하면 된다. 이 함수는 파이썬 문자열을 아스키값의 bytes 배열로 변환시켜준다.
-------------------------------------------------------------------------
>>> ard.write( 'Hello arduino.\r\n'.encode() )
-------------------------------------------------------------------------
이 명령은 'H' 부터 맨 마지막 '\n' 까지 14개의 문자의 아스키코드를 차례로 전송한다.
이제 실험을 위해서 아두이노에 다음과 같은 프로그램을 작성하여 다운로드 했다.
아두이노 프로그램 : 전원이 켜지면(또는 리셋 버튼을 누르면) "Hello python." 이라는 문자열을 보낸다. 그리고 데이터가 들어오면 0값이면 LED를 끄고 아니라면 켠다.
-------------------------------------------------------------------------
void setup() {
Serial.begin(9600);
Serial.println("Hello python.");
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if( Serial.available() )
digitalWrite(LED_BUILTIN, Serial.read());
}
-------------------------------------------------------------------------
이제 ard.write([0]) 이라고 명령을 내리면 LED가 꺼지고 ard.write([1])이라고 하면 LED가 켜지는 것을 다음과 같이 확인할 수 있다.
위 동영상을 보면 1을 쓰면 LED가 켜지고 0을 쓰면 꺼지는 것을 볼 수 있다.
'프로그래밍언어.Lib > 파이썬' 카테고리의 다른 글
파이썬의 pyserial 을 이용해서 아두이노와 통신하기 (1/3) (0) | 2015.04.27 |
---|---|
파이썬의 pyserial 을 이용해서 아두이노와 통신하기 (2/3) (1) | 2015.04.27 |
파이썬의 산술 연산자 (0) | 2015.04.24 |
파이썬 식별자 만드는 규칙 (0) | 2015.04.24 |
폴더를 파이썬 모듈로 만들기 (0) | 2015.04.24 |