[pyfirmata] init set / Pin Control

init set
앞서 firmatastandard.c (firmata 제공 예제) 를 업로드 했고, 지원되는 파이썬 개발 환경을 구축했다면 스크립트 작성 시 파이썬 스크립트에서의 초기 설정이 요구된다.

- 장치 관리자 : 아두이노 우노 포트(COM20)

아두이노 보드를 연결 했다면, 장치 관리자에서 연결된 포트의 이름을 확인할 수 있다.

1
2
3
4
5
6
from pyfirmata import Arduino # pyfirmata 모듈 호출
import time
 
board = Arduino('COM20'# Arduino UNO의 연결 포트
print("Communication Successfully started")
 
cs
- pyfirmata 모듈 호출
- Arduino 객체를 이용한 연결 보드에 대한 객체 생성

당연하게도, 포트 번호가 다르면
-포트에 대한 파일을 찾을 수 없다는 오류 발생

위와 같은 오류가 발생한다.

Pin Control

일반적인 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 핀에 대한 아날로그 값 입력 허용 설정

- 입력 센서에 대한 통신 병렬 처리
util 라이브러리의 Iterator 객체를 이용하여 아두이노와 입력 핀과 센서 간의 통신을 병렬수행한다.

- 해당 구문이 없는 경우
해당 구문이 없는 경우 입력 핀으로부터의 값을 받을 수 없다.



댓글