BASIC4MCU | 질문게시판 | 아두이노 적외선센서 스텝모터 코딩 질문합니다. (급해요ㅠㅠ)
페이지 정보
작성자 크핫 작성일2019-05-14 18:12 조회5,486회 댓글1건본문
현재 적외선센서를 이용한 자동개폐창문을 만들려고 합니다.
거리값이 40cm 이하일 때, 창문이 닫히도록 설정하고 싶은데
적외선센서의 소스와 스텝모터 소스를 합치는데 어려움을 겪고 있습니다.
모터는 42BYGHN1641A-05-C/2상 스테핑모터/바이폴라, 모터 드라이버는 A3967을 사용하고 있습니다.
답변주시면 감사하겠습니다.
아래대로 코딩을 했는데 모터에 진동만 오고 움직이질 않습니다 ㅜㅜ 도와주세요 ,,.
#define DIR_PIN 2
#define STEP_PIN 3
int distance = 0;void setup() {
Serial.begin(9600);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}
void loop(){
//rotate a specific number of degrees
rotateDeg(360, 1);
delay(1000);
rotateDeg(-360, .1); //reverse
delay(1000);
//rotate a specific number of microsteps (8 microsteps per step)
//a 200 step stepper would take 1600 micro steps for one full revolution
rotate(1600, .5);
delay(1000);
rotate(-1600, .25); //reverse
delay(1000);
int volt = map(analogRead(A0), 0, 1023, 0, 5000);
distance = (27.61 / (volt - 0.1696)) * 1000;
Serial.print(distance);
Serial.print(" cm");
Serial.println(" ");
}
void rotate(int steps, float speed){
//rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (steps > 0)? HIGH:LOW;
steps = abs(steps);
digitalWrite(DIR_PIN,dir);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
void rotateDeg(float deg, float speed){
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0)? HIGH:LOW;
digitalWrite(DIR_PIN,dir);
int steps = abs(deg)*(1/0.225);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
if(distance<40)
{ rotateDeg(360, 1);
delay(1000);
}
else
{ rotateDeg(-360, 1);
delay(1000);
}
}
댓글 1
조회수 5,486master님의 댓글
master 작성일
http://blog.daum.net/_blog/BlogTypeView.do?blogid=0ZPt7&articleno=2593
웹검색하면 예제가 많을텐데요
예제와 동일하게 동작시켜서 돌아가는 것을 확인 한 후에
다른 기능을 추가하세요