로터리 인코더

로터리 인코더 사용



Switch Sciences에서 구입 Sparkfun의 일루미네이션 로터리 인코더을 시도했습니다. 이에 관해서는 영어를 포함해 기사를 거의 보이지 않는 경우도 있어 여기에 기록하기로 했다.

데이터시트 등



로터리 엔코더의 데이터 시트는 여기에 있지만, 일루미네이션 부분에 대해서는 여기 치수도을 참조한다.

배선 등



위 자료에서 발췌.

로터리 엔코더의 회로도는 아래와 같습니다.


여기서는 10KΩ의 Pullup 저항만 사용하고, 핀 A나 B로 이어지는 10KΩ 저항이나 0.01μF의 콘덴서는 사용하지 않는다. 다만, 콘덴서를 사용하는 쪽이, 돌렸을 때의 움직임과 소프트웨어로 취득하는 값이 매끄러운(?), 등의 기재가 어딘가에 있었던 기억 있어.

일루미네이션의 회로도는 아래와 같습니다.


핀 1은 GND, 핀 2 및 3은 LED, 핀 4는 버튼입니다.

또한 핀의 배치는 다음과 같습니다.



실험



돌리면 가변 LED의 색이 변화한다는 것. 사용 된 가변 LED는 여기입니다.

소스 코드



코드는 Sparkfun 사이트여기에 있는 것을 거의 그대로 사용한다. 여기에서는 가변 LED의 추가 부분만 기재한다.
#define VAR_LED 9     // 可変LEDをつなげるGPIOポート番号
#define LED_INIT 127  // 可変LEDの初期値
setup() {
  // 他は上述ソースコードと全く同じ

  analogWrite(VAR_LED, LED_INIT);  // 可変LEDの初期値をセット
}

analogWrite의 두 번째 인수는 듀티 비이며 0에서 255까지의 값을 취합니다.
loop () {
  if (rotary_change)
  {
    Serial.print("rotary: ");
    Serial.println(rotary_counter, DEC);
    rotary_change = false; // Clear flag

    //blink for visual feedback
    setLED(OFF);
    delay(10); //try not to make this too long, otherwise the Arduino will miss ticks
    setLED(x);
    { // @@@
      analogWrite(VAR_LED, LED_INIT+rotary_counter*5);
    } // @@@
  }

  // 他は上述ソースコードと全く同じ
}

loop()에서는//@@@로 둘러싸인 부분만 추가하고 있다. 변수 rotary_counter는 int 형이며, 돌릴 때 얻어지는 값이다. 초기값은 0이며 -32768에서 32767 사이의 값을 가져야 합니다. . analogWrite()의 듀티비(0~255)의 값으로 무리하게 변환되게 된다.

다시 말하지만, 상기 이외의 설명은 원래 소스 코드를 참조 했다.

테스트









로터리 인코더를 돌리면 가변 LED의 밝기가 변화합니다. 또한, 로터리 인코더를 누르면 일루미네이션(색)이 바뀐다.

좋은 웹페이지 즐겨찾기