아두이노 엔코더 예제

    다음은 두 개의 인코더가 연결된 예제입니다. 인코더 A는 핀 2와 3에 연결되어, b는 5와 6에 연결 : 로터리 인코더와 함께 우리는 서로 위상 90도 두 개의 사각형 파 출력 (A와 B)가 있습니다. 전체 회전당 생성된 펄스 또는 단계 수는 다양합니다. 스파크펀 로타리 인코더는 12단계로 구성되어 있지만, 다른 인코더는 다소 다를 수 있습니다. 아래 다이어그램은 인코더가 시계 방향 또는 시계 반대 방향으로 회전할 때 단계 A와 B가 서로 어떻게 관련되는지 보여줍니다. 여기에 인코더와 함께 작업하기위한 완전한 라이브러리 코드입니다 : 나는 또한 인코더 신호를 읽는 문제에 직면했다, 많은 시험 후, 나는 당신이 이전의 모든 제안에서 영감을, 그들을 다루는 새로운 방법을 알려 드리겠습니다. 나는 AMT 인코더에 그것을 시도하고 정말 좋은 작동합니다. 다른 방법이 실패했을 가능성은 거의 없었지만 계산 속도가 너무 빨랐습니다. Arduino의 포트 프로그래밍을 읽는 것을 피하기 위해 인터럽트 핀을 사용하면 더 빠를 수 있다고 생각했습니다. 여기에 코드입니다 : 안녕하세요 나는 아르헨티나에서 왔어요. 좋은 프로젝트! 나는 당신의 단계를 따라 그것은 작동합니다.

    나는 문제가 있지만! 느리게 돌리면 카운터가 잘 되지만, 빠른 회전을 하면 제어되지 않고 단계를 반복합니다! 엡손 프린터에서 인코더를 사용했습니다. 인코더의 해상도가 많기 때문일까요? 이 인코더로 작업할 수 있습니까? 이미 대단히 감사합니다! 아르헨티나에서 인사말!! 나는 AVRLib의 일환으로 아두 이노 배포에 포함 된 파일 encoder.h에서 인코더를 읽는 방법에 대해 배웠습니다. 저자, 파스칼 Stang 덕분에, 거기에 인코더의 기능에 대한 친절하고 초보자 방지 설명. 그리고 스케치의 소스 코드는 다음과 같습니다. 그것은 우리가 우리에게 타이밍 간격을 제공하기 위해 밀리 () 함수를 사용하는 이전 튜토리얼에 구축. 우리는 여기에 동일한 아이디어를 사용하지만 경과 시간 검사 (5ms = 200Hz)로 5ms를 사용합니다. 바라건대, 코드는 이해하기 쉽고 쉽게 수정할 수 있어야 로타리 인코더를 다른 용도로 사용할 수 있기를 바랍니다. 나는 아두 이노 칩에서 만 만든 신디사이저에 „모드 선택기“로 인코더를 사용했다.

    인코더가 펄스를 놓친 경우 는 중요하지 않기 때문에 이것은 매우 캐주얼 한 응용 프로그램입니다. 인터럽트 방법이 빛을 발할 곳은 서보 나 로봇 휠과 같은 모터에 대한 피드백에 사용되는 인코더입니다. 이러한 응용 분야에서 마이크로 컨트롤러는 펄스를 놓칠 여유가 없거나 움직임의 해상도가 저하될 수 있습니다. 내 프로젝트는 회전 인코더 펄스가 시계 방향으로 단계 마다 세 가지 아날로그 입력을 샘플링하는 데이터 로거입니다. Arduino에서 이 데이터를 샘플링하고 어딘가에 저장하는 데 시간이 중요합니다 (아직이 프로젝트의 `어딘가에 저장`부분을 포함하지 않았습니다.) 일부 프로세서 주기를 저장하기 위해, 나는 약간 인터럽트 루프 외부 부울 상태의 쌍을 유지하기 위해 인터럽트 시스템을 재 설계했다. 나는 많은 경험을 가진 은퇴 한 EE 및 아마추어 라디오 운영자 (N1ABE라고 부름)입니다. 그러나, 그 경험의 일환으로 나는 바퀴를 재발견하지 배웠습니다. 즉, 나는 아마존을 통해 얻은 DDS9850 모듈을 사용하여 아두 이노 우노 기반의 직접 디지털 신디사이저를 설계하고 있다. 지금까지 직렬 포트를 통해 사용할 수 있었습니다. 원래 컴파일 된 로봇 기본 응용 프로그램을 사용하려고했지만 독립 실행 형 설정, 바람직하게는 배터리 전원을 원했습니다.

    떠오르는 것은 회전 인코더를 사용하여 주파수를 설정하는 것이었습니다. 불행하게도 그들에 대해 Arduino 웹 사이트에 많이 없었다 그래서 나는 검색을했고 웹 사이트를 발견했다. 건배! 당신은 내가 찾고 있던 코드를 정확히 가지고, 감사합니다. 인터럽트를 사용하는 다른 코드 예제가 있었지만 사용하지 않는 버전을 원했습니다. 나는 당신의 복사하고 오류없이 컴파일. 인코더를 받으면 코드를 내 코드에 통합합니다.