1. pin mode
커멘트는 0xf4 입니다. 뒤로 핀번호와 핀의 모드가 차례로 옵니다.
input/output/analog/pwm/servo
0 / 1/ 2/ 3/ 4
13번핀을 입력모드로 세팅하는 예제입니다.
0x4f,13,0
2. digital write
명령어는 앞4비트의 값은 1001(0x9) 입니다. 뒤에 포트번호가 옵니다.(0~15)
총 16개의 포트가 존재합니다.
0~7핀 -> 0번포트
8~15 -> 1
..
120~127 -> 15번 포트
그래서 포트를 얻는 방법은 pin/8 의 몫이 포트가 됩니다.
0번 포트는 0x90, 1번 포트는 0x91 됩니다.
포트당8개의 io가존재합니다. 두개의 바이트로 7개 1개로 나누어서 표시합니다.
아래 표처럼 5번핀은 포트0번의 io 5번 입니다.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
|
|
|
|
|
|
|
|
그래서 5번핀에 HIGH를 넣어주려면 다음과 같은 코드가 됩니다.
0x90,0x20,0x00
13번핀은 1번 포트입니다. 1번포트는 최하위비트가 8이됩니다.(8번핀)
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
|
|
|
|
|
|
|
|
HIGH넣어 주려면 다음과 같습니다.
0x91,0x20,0x00
2. digital read
포트단위로스캔여부를 지정하는 방식입니다.
커멘드 바이트는 다음과 같이 구성됩니다.
7~4 |
3~0 |
1101,(0xD) |
0~15 포트번호 |
두번째바이트는 스캔여부를 묻는 바이트입니다. 0이면 스캔중지 1이면 스캔시작입니다.
10,13번핀을 읽고 싶다면 모두 1번포트이므로 다음과 같이 해줍니다.
0xf4,13,0
0xf4,10,0 --> 인풋모드 설정
0xD1,1 -->1번포트 스캔시작
3. analog
4. pwm
5. servo
6. 기타
0xf9 프로토콜버전 뒤에오는 두바이트가 마이너, 매이져 숫자
0xff 소프트웨어 리셋
참고자료
http://firmata.org/wiki/Protocol#I.2FOs_Supported
'컨버젼스' 카테고리의 다른 글
라즈베리파이 무선랜동글들에 대한 리뷰 (0) | 2015.11.15 |
---|---|
HC06 블루투스모듈 AT사용기 (0) | 2015.07.05 |
라즈베리파이에서 웹캠제어하기 (0) | 2015.01.15 |
node.js 로 라즈베리 i2c 사용해보기 (0) | 2015.01.12 |
neopixel 사용기 (0) | 2014.12.01 |