아두이노 루프 제어 관련 질문

조회수 550회

이미지

특정 조도값이상이면 반시계방향으로 1440도 회전, 작으면 시계방향으로 1440도 회전하는 프로그램을 만들고 있는데 이렇게 코드를 작성하면 만약에 특정 조도값이 이상이기에 회전을 했는데 또 조도값이 이상이면 회전하면서 총 반시계방향으로 2880도를 회전하는데 제 의도는 반시계 방향으로 1440도 회전했으면 조도값이 작아질때까지 가만히 있다가 조도값이 작아질때 까지 기다리고 시계방향으로 회전하는 이런 프로그램을 작성하려면 코드를 어떤식으로 수정해야 할까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 아래 코드 참고하세요.

    • 코드
    #include <Stepper.h>
    
    #define LIGHT A0
    
    const int steps_rotation=2048; // 한바퀴
    const int rotation_number=4;
    int light=0;
    bool clock_mode=true;
    Stepper stepper(steps_rotation, 8, 10, 9, 11);
    
    void setup() {
      stepper.setSpeed(5); // rpm
      Serial.begin(9600);
    }
    
    void loop() {
      light=analogRead(LIGHT);
      if(clock_mode && light>600)
      {
        stepper.step(steps_rotation*rotation_number);
        clock_mode=false;
        Serial.println(light);
      }
      else if(!clock_mode && light<500)
      {
        stepper.step(-steps_rotation*rotation_number);
        clock_mode=true;
        Serial.println(light);
      }
    }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)