BASIC4MCU | 질문게시판 | 답변 : 엑셀스태퍼 라이브러리 사용에 관한 질문드립니다.
페이지 정보
작성자 master 작성일2022-12-04 10:09 조회96회 댓글0건본문
#include <AccelStepper.h>
#include <MultiStepper.h>
#define DIR1 22
#define STEP1 23
#define DIR2 24
#define STEP2 25
AccelStepper stepper1 = AccelStepper(1,STEP1,DIR1);
AccelStepper stepper2 = AccelStepper(1,STEP2,DIR2);
MultiStepper steppers;
//
long positions1[]={100,100},positions2[]={200,200},positions3[]={300,300};
int speed = 180;
//
void setup() {
Serial.begin(9600);
stepper1.setMaxSpeed(speed);
stepper2.setMaxSpeed(speed);
stepper1.setCurrentPosition(0);
stepper2.setCurrentPosition(0);
steppers.addStepper(stepper1);
steppers.addStepper(stepper2);
}
//
void loop() {
if(Serial.available()){
char c=Serial.read();
if(c=='1'){
steppers.moveTo(positions1[0]); steppers.runSpeedToPosition(); delay(500);
}
if(c=='2'){
steppers.moveTo(positions2[0]); steppers.runSpeedToPosition(); delay(2000);
steppers.moveTo(positions3[0]); steppers.runSpeedToPosition(); delay(2000);
}
}
}
변수 선언은 코드 중간에서 하는 것보다 상단에서 하는 것이 바람직한 방법이며전역변수와 로컬변수의 차이점을 아셔야 합니다.void moveTo(long absolute);인수가 long 타입이므로배열의 포인터를 넘기면 안되고positions1[0], positions1[1] 중에서 하나를 지정하셔야 합니다.steppers.moveTo(positions1); steppers.runSpeedToPosition(); delay(500);
이렇게 사용하고 싶다면long positions1=100;배열로 선언하지 말고 일반 변수로 선언하면 되겠죠
댓글 0
조회수 96등록된 댓글이 없습니다.