AB상 엔코더 입력을 통해 펄스를 카운트하며, 회전 방향에 따라 증가 또는 감소합니다.
최대 2채널의 엔코더 입력을 지원하며, 채널당 최대 50kHz의 고속 펄스 입력을 처리할 수 있습니다.
각 채널의 A상/B상 입력 포트는 아래와 같이 고정되어 있습니다.
| channel | A상 입력 포트 | B상 입력 포트 |
|---|---|---|
| 0 | 6 | 7 |
| 1 | 8 | 9 |
Encstart channel
| 파라미터 | 설명 |
|---|---|
| channel | 엔코더 채널 번호 (0 또는 1) |
지정한 채널의 엔코더 입력을 시작합니다. A상/B상 입력 포트는 채널 번호에 따라 자동으로 할당됩니다.
value = Encread(channel)
| 파라미터 | 설명 |
|---|---|
| value | 현재 카운트 값 |
| channel | 엔코더 채널 번호 (0 또는 1) |
현재 엔코더 카운트 값을 반환합니다.
Encclear channel
| 파라미터 | 설명 |
|---|---|
| channel | 엔코더 채널 번호 (0 또는 1) |
카운트 값을 0으로 초기화합니다.
Encstop channel
| 파라미터 | 설명 |
|---|---|
| channel | 엔코더 채널 번호 (0 또는 1) |
엔코더 입력을 정지합니다.
Dim A As Integer Encstart 1 Do A = Encread(1) Debug Dec A, Cr Wait 100 _DD(0) = A Loop
이 예제는 두 개의 출력 포트를 이용하여 A/B상 엔코더 신호를 생성하고,
Encread 명령으로 카운트 동작을 확인하는 테스트 프로그램입니다.
프로그램은 쿼드러처(Quadrature) 신호를 생성하여 엔코더 입력을 시뮬레이션합니다.
Encread(1)로 읽어 _DD(0)에 저장됩니다.Dim tm As Integer
Dim dir As Byte ' 0 = 정방향, 1 = 역방향
tm = 500
Freepin 16 To 17
Encstart 1
dir = 0 ' 초기: 정방향
Do
' 방향 입력 처리
If In(4) = 1 Then dir = 1 ' 역방향
If In(5) = 1 Then dir = 0 ' 정방향
If dir = 0 Then
' ===== 정방향 =====
High 16
Low 17
uDelay tm
High 17
uDelay tm
Low 16
uDelay tm
Low 17
uDelay tm
Else
' ===== 역방향 =====
Low 17
Low 16
uDelay tm
High 17
uDelay tm
High 16
uDelay tm
Low 17
uDelay tm
End If
_DD(0) = Encread(1)
Loop