코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
아두이노 스텝모터
1Q2W3E4R | 2019-08-28
|
|
---|---|
1. 프로젝트 사용한 보드 종류
아두이노 UNO
2. 사용한 센서 모델명
스텝모터 35HSH24010A-30
드라이버 A4988 Stepper Motor Driver
3. 문제점 실행 컴파일, 업로드가 됬는데 작동을 하지않습니다 코드에 문제가 있는지 알고싶습니다 (커페시터 없이 했습니다
그리고 유튜브 영상에 커페시터가 필요하다는데 왜 필요한지 궁금합니다 https://www.youtube.com/watch?v=Iv3zjJ9VFws
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
#include
//핀 설정 const int EnablePin = 4; //모터 Enable 핀 const int StepPin = 3; //모터 PWM 핀 const int DirectionPin = 2; // 모터 방향 핀
//속도 const int FastMove = 200; const int SlowMove = 1000;
// 리모콘 관련 int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results;
uint16_t irCustomeCode; //커스텀 ID (2바이트) uint8_t irValue; // 실제 버튼 값 uint8_t irInvertValue; // 버튼값의 반전된 값
//사용하는 리모콘의 버튼값 const uint8_t IR_BACK_KEY = 0xE0; const uint8_t IR_GO_KEY = 0xA0; const uint8_t IR_REPEAT_KEY = 0xFF;
const uint8_t NOTHING_KEY = 0; const uint8_t BACK_KEY = 1; const uint8_t GO_KEY = 2;
void setup() { // 핀 설정 pinMode(EnablePin, OUTPUT); pinMode(StepPin, OUTPUT); pinMode(DirectionPin, OUTPUT);
// 모터 IC ON digitalWrite(EnablePin,LOW);
Serial.begin(9600);
//리모콘 시작 irrecv.enableIRIn(); }
//리모콘 키 입력 함수 uint8_t oldIrKey = NOTHING_KEY; uint8_t getIRKey() { uint8_t key=NOTHING_KEY; //리모콘 데이터가 있으면 if (irrecv.decode(&results)) { //커스텀 ID와 데이터 분리 irCustomeCode = (results.value>>16)&0xFFFF; irValue = (results.value>>8)&0xFF; irInvertValue = results.value&0xFF; irrecv.resume();
//리모콘 데이터가 정상인지 체크 if(~irValue != irInvertValue)
{
//키값 모니터에 출력
Serial.println(irValue,HEX);
//키가 GO 버튼이라면
if( irValue == IR_GO_KEY)
{
key = GO_KEY;
oldIrKey = key;
}
//키가 BACK 버튼이라면
else if(irValue == IR_BACK_KEY)
{
key = BACK_KEY;
oldIrKey = key;
}
//키가 계속 눌린 상태라면
else if(irValue == IR_REPEAT_KEY)
{
//이전 버튼 상태를 전달 함
key = oldIrKey;
}
else
{
//에러
oldIrKey = 0;
}
}
else
{
//에러
oldIrKey = 0;
}
}
return key;
}
void loop()
{
int i;
//리모컨 버튼값 얻어오기
uint8_t irKey = getIRKey();
//버튼이 GO라면
if(irKey == GO_KEY)
{
//High 상태는 시계방향 이동
digitalWrite(DirectionPin,HIGH);
for(i = 0; i < 50; i++)
{
//ON 1.8의 1/4 움직임
digitalWrite(StepPin,HIGH);
//1ms(1000us) 대기
delayMicroseconds(SlowMove);
//OFF 1.8의 1/4 움직임
digitalWrite(StepPin,LOW);
//1ms(1000us) 대기
delayMicroseconds(SlowMove);
}
}
//버튼이 Back이라면
else if(irKey == BACK_KEY)
{
//Low 상태는 반시계방향 이동
digitalWrite(DirectionPin,LOW);
for(i = 0; i < 500; i++)
{
digitalWrite(StepPin,HIGH);
//0.2ms(200us) 대기
delayMicroseconds(FastMove);
digitalWrite(StepPin,LOW);
//0.2ms(200us) 대기
delayMicroseconds(FastMove);
}
}
}
|
|
이전글 | 피에조부저 연주 | 2019-08-27 |
다음글 | 아두이노 팬 | 2019-08-28 |