정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

모터 제어를 하려고 하는데 질문 드려도 될까요
건설로봇 | 2018-01-10

제가 하고자 하는 제어가

 

1바퀴 정회전 하고 나서

 

다시 1바퀴 역회전 하는 제어를 하려고 합니다

 

제어하고자 하는 것은 12볼트 엔코더 DC모터구요

 

코드를 다음과 같이 작성하였습니다

(아두이노와 코드가 호환되는, 2번 3번 핀이 모터 드라이버로써 작용하는 보드입니다)

 

----------------------------------------------

 

 int encoder0PinA = 10;
 int encoder0PinB = 9;
 int encoder0Pos = 0;
 int encoder0PinALast = LOW;
 int n = LOW;
 int deg = 0;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   Serial.begin (115200);
   pinMode (2,OUTPUT);
   pinMode (3,OUTPUT);
 } 

 void loop() { 
   n = digitalRead(encoder0PinA);
   if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
     } else {
       encoder0Pos++;
     }
     Serial.println (encoder0Pos);
   } 
   encoder0PinALast = n;
   control();
 } 

 void control(){
  int deg = 360*encoder0Pos/13; /*13 pulse encoder, 1 time spinning*/
  if(0 >= deg){
    for (deg; deg = 360; deg++){
      digitalWrite(2,1);
      delay(1000);
    }
  }
  if(deg >= 360){
    for (deg; deg = 0; deg--){
      digitalWrite(2,0);
      delay(1000);
    }    
  }
  analogWrite(3,80);
 }

 

--------------------------

 

저렇게 코드 작성을 하면 제가 원하는대로 모터가 돌아갈지 궁금합니다

(기술적 문제로 인하여 아직 해당 보드에서 모터가 작동하는 것을 확인하지 못하고 있습니다)

이전글   |    아두이노에서 mysql 웹 서버에 db값 저장 2018-01-10
다음글   |    Fritzing.exe에서 "모터 드라이버 모듈" 부품 추가하기... 2018-01-11