로터리 인코더
로터리 인코더 사용
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의 밝기가 변화합니다. 또한, 로터리 인코더를 누르면 일루미네이션(색)이 바뀐다.
Reference
이 문제에 관하여(로터리 인코더), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/infinite1oop/items/0a0d6469cb4393c7b1ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#define VAR_LED 9 // 可変LEDをつなげるGPIOポート番号
#define LED_INIT 127 // 可変LEDの初期値
setup() {
// 他は上述ソースコードと全く同じ
analogWrite(VAR_LED, LED_INIT); // 可変LEDの初期値をセット
}
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);
} // @@@
}
// 他は上述ソースコードと全く同じ
}
Reference
이 문제에 관하여(로터리 인코더), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/infinite1oop/items/0a0d6469cb4393c7b1ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)