init set
앞서 firmatastandard.c (firmata 제공 예제) 를 업로드 했고, 지원되는 파이썬 개발 환경을 구축했다면 스크립트 작성 시 파이썬 스크립트에서의 초기 설정이 요구된다.
1 2 3 4 5 6 | from pyfirmata import Arduino # pyfirmata 모듈 호출 import time board = Arduino('COM20') # Arduino UNO의 연결 포트 print("Communication Successfully started") | cs |
- Arduino 객체를 이용한 연결 보드에 대한 객체 생성
당연하게도, 포트 번호가 다르면
일반적인 Arduino Uno 보드에서 주로 쓰이는 핀은
- Analog pin : 0~5
- Digital pin : 0~13
이며 디지털 핀의 경우 0 또는 1, 아날로그 핀의 경우 0에서 1사이의 값을 범위로 갖는다.
표기에 있어 디지털의 경우 D[0~13], 또는 알파벳 생략이 가능,
아날로그의 경우 A[0~5]로 구분을 위해 알파벳은 생략하지 않는다.
List-indexing Pin control
더 정확한 명칭이 있겠지만, Arduino 객체 내부 멤버인 digital/analog 리스트 멤버와 write/read 메소드를 활용하는 방식이다.
digital 의 경우
- 내부 LED(13번 핀) 점등/점멸(digital)
1 2 3 4 5 6 7 8 9 10 | from pyfirmata import Arduino # pyfirmata 모듈 호출 import time board = Arduino('COM20') # Arduino UNO의 연결 포트 print("Communication Successfully started") while True : board.digital[13].write(1) # 내부 핀-13번 접근, 1(High) 값 입력 time.sleep(1) board.digital[13].write(0) # 내부 핀-13번 접근, 0(Low) 값 입력 time.sleep(1) | cs |
- A0 핀을 이용한 값 읽어 들이기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from pyfirmata import Arduino, util # pyfirmata 모듈 호출 import time board = Arduino('COM20') # Arduino UNO의 연결 포트 #아두이노 보드 통신과 입력 값 통신의 병렬 처리를 위한 #반복자-스레드 처리 it = util.Iterator(board) it.start() board.analog[0].enable_reporting() # A0 핀에 대한 입력 값 허용 print("Communication Successfully started") while True : print(board.analog[0].read()) # read로 읽어낸 값 출력 time.sleep(0.1) | cs |
- 반복자를 이용하여 아두이노 보드의 통신, 입력값(센서) 통신의 병렬 처리 수행
- A0 핀에 대한 아날로그 값 입력 허용 설정
댓글
댓글 쓰기