코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
아두이노 엔코더모터 각도제어(조언부탁드립니다!)
짱꾸 | 2020-07-22
|
|
---|---|
아두이노 서보모터와 초음파센서를 이용한 공균형잡는 로봇을 만들어보려고 합니다. 근데 서보모터가 없어서 엔코더모터를 이용해 각도제어를 하려고 하는데
엔코더값을 읽어오는데까지는 성공했지만, 그 값을 이용해 각도제어하는 부분에서 막혔습니다.
현재 IG32PGM 01TYPE 엔코더모터를 가지고 탐구하고 있습니다.
겨우 엔코더값 읽기에 성공했는데...그 다음단계인 각도제어로 넘어가기 힘드네요ㅠㅠ
조언 부탁드립니다.
현재 엔코더값 읽는 코드입니다.
// motor control pin
const int M1_F= 8; // L298 Input 1 // 엔코더 모터
const int M1_R= 9; // L298 Input 2
// encoder pin
const int encoderPinA=2;
const int encoderPinB=3;
long encoderPos1=0;
//
void M_STOP(){ digitalWrite(M1_F,0); digitalWrite(M1_R,0); } //정지
void M_FWD() { digitalWrite(M1_F,1); digitalWrite(M1_R,0); } //정회전
void M_BWD() { digitalWrite(M1_F,0); digitalWrite(M1_R,1); } //역회전
//
void doEncoderA(){ encoderPos1+=(digitalRead(encoderPinA)==digitalRead(encoderPinB))? 1:-1; }
void doEncoderB(){ encoderPos1+=(digitalRead(encoderPinA)==digitalRead(encoderPinB))?-1: 1; }
//
void setup(){
pinMode(M1_F,OUTPUT); pinMode(M1_R,OUTPUT);
pinMode(encoderPinA,INPUT_PULLUP); attachInterrupt(0,doEncoderA,CHANGE);
pinMode(encoderPinB,INPUT_PULLUP); attachInterrupt(1,doEncoderB,CHANGE);
Serial.begin(9600);
}
//
void loop(){
M_FWD();
Serial.print("encoderPos1 : "); Serial.print(encoderPos1);
}
|
|
이전글 | 초보자입니다. 서보모터를 푸쉬 버튼으로 제어하고 싶은데 방법을 모르겠습니다.... | 2020-07-22 |
다음글 | 아두이노 LCD 출력 오류 | 2020-07-25 |