아하
학문

기계공학

갈수록환영받는해물탕
갈수록환영받는해물탕

아두이노 코드에서 delay 값을 줄였을때 문제가 해결된 이유는 무엇인가요?

아두이노와 티처블 머신을 결합하여 거리 조건(특정 거리 이내)와 카메라 조건(특정 사물)이 모두 성립할때 작동하는 시스템을 p5.js Web Editor 를 통해 구성하였습니다. 그런데 사물을 1초 동안 두었음에도 시스템이 멈추지 않았습니다. p5.js Web Editor 화면을 보니 티처블머신을 통한 판단이 매우 빠르게 많이 찍혀서 적외선센서를 때더라도 이미 찍힌 횟수가 매우 많기에 오랫동안 끊기지 않고 계속 작동을 하게 되었다는 것을 알게 되었습니다. 그러던 중 아두이노 코드의 delay값을 줄였더니 끊기지 않는 문제가 해결되었습니다. 왜 그런건지 delay의 의미와 함께 자세히 알려주실 수 있나요?

55글자 더 채워주세요.
2개의 답변이 있어요!
전문가 답변 평가답변의 별점을 선택하여 평가를 해주세요. 전문가들에게 도움이 됩니다.
  • 안녕하세요. 서종현 전문가입니다.

    아두이노 코드에서 딜레이 값을 줄였을때 문제가 해결된 이유는, 딜레이가 프로그램의 실행을 일시적으로 중단시키기 때문입니다. 기본적으로 delay(ms)함수는 지정된 시간(ms)동안 코드 실행을 멈추고, 이시간 동안 다른 입력이나 이벤트를 처리하지 못하게 됩니다.

    시스템에서 딜레이가 길면, 카메라로부터 입력을 받아들이는 과정이 느려져서 특정 조건이 여러번 충족되더라도 그에 대한 반응이 지연될수있습니다. 이로 인해 적외선 센서가 감지된 후에도 이전의 판단 결과가 남아있어, 시스템이 계속 작동하게 됩니다. 딜레이 값을 줄이면 프로그램이 더 자주 실행되어 입력을 더 빠르게 처리할수 있게 되며, 이로 인해 적외선 센서의 상태 변화와 티처블 머신의 판단을 실시간으로 반영할수있습니다. 즉, 입력 조건이 변경되었을때 즉시 반응할수있으므로, 불필요한 반복작동을 방지할수있습니다. 결론적으로 딜레ㅇ를 줄여주면 프로그램의 반응성이 향상되어 실시간으로 조건을 체크하고, 시스템이 불필요하게 멈추지 않도록 도와줍니다.

  • 안녕하세요. 안다람 전문가입니다.

    아두이노와 티처블 머신을 결합한 시스템에서 발생한 문제와 해결책을 설명해 드리겠습니다.

    문제원인

    • 긴 딜레이 함수로 인해 아두이노가 티처블 머신의 빠른 판단을 적시에 처리하지 못함

    • 딜레이 동안 아두이노가 다른 작업을 수행하지 못해 실시간 처리가 불가능

    딜레이 함수의 영향

    • 프로그램 실행을 일시 정지시켜 센서 읽기, 데이터 처리 등 모든 작업 중단

    해결책

    • 딜레이 값을 줄여 아두이노가 더 자주 센서를 확인하고 티처블 머신 결과를 처리

    • 시스템 반응 속도가 향상되어 조건 변화를 빠르게 감지

    개선방안

    • millis 함수 사용으로 비차단 방식 시간 측정

    • 상태 기반 프로그래밍으로 지속적인 조건 확인

    • 데이터 버퍼링을 통한 안정적인 판단

    • 중요 이벤트에 인터럽트 사용