MIDI 스위치를 리팩토링 해 보았습니다.

Ableton Live 전송용 스위치.

버튼을 누르면 결정된 컨트롤 변경을 보냅니다. 그뿐입니다.
몇 가지 만들지만, 이것은 가장 오래된 유형. Arduino duemilanove가 말합니다.

특히 동작에 불만은 없습니다만, 새로운 같은 글쓰기를 시도해 보았습니다.

이런 프로그램으로 하고 싶



버튼이 4개 있으므로, 이것을 뭔가 객체의 배열로 해,

void loop() {
  // forループ。BUTTONSの要素 b について:
  for (auto&& b : BUTTONS ){
 // データによって何かする <- デバウンスする <- bのピンを読む 
    doByData( b     ,     debounce( b ,   digitalRead( b.PIN ) 
    ) );
  }
  delay( 1 );
}

또는:
void loop() {
  // forループ。BUTTONSの要素 b について:
  for (auto&& b : BUTTONS ){
 // データが上がったときに何かする <- データが下がったときに何かする <- デバウンスする <- bのピンを読む
    doWhenRaised( b      ,       doWhenDropped( b      ,      b.debounce(    digitalRead( b.PIN ) 
    ) ) );
  }
  delay( 1 );
}

같은 느낌을 갖고 싶다 ...

옵션...



함수를 람다 식으로 만들기



장점 : 쓰기 쉬운.
단점 : 개체의 구성원이 될 수 없습니다.

스케치의 전체는 이렇게 되었습니다.
클로저를 장미해 이력의 변수만 오브젝트에 갖게 하고 있기 때문에 조금 이상한 느낌입니다.

함수를 함수 객체로 만들기



장점 : 멤버가 될 수 있습니다.
단점 : 쓰기가 번거롭다.

스케치의 전체는 이렇게 되었습니다.

둘 다 제대로 움직였습니다.

최종 조정



이것에 사용하고 있는 스위치는 값싼 물건으로 상당히 채터링이 심하기 때문에, delay와 debounce의 RATE로 조정.
채터링은 억제하지만, 동작에 따라 오는 빠듯이를 노립니다.
delay( 2 ), RATE = 12로 좋은 느낌이 들었습니다.

좋은 웹페이지 즐겨찾기