[Arduino] Stepper Async 5 - 비동기 스탭 모터 라이브러리
Stepper Async 5 (Library for Arduino)
아두이노 'Stepper' 라이브러리를 수정하여 스텝 모터를 비동기식으로 구동할 수 있게 해주는 라이브러입니다.
소스 코드 : github - dang-gun/Arduino_StepperAsync5
기존의 'Stepper' 라이브러리는 동기식으로 동작하기 때문에 스테퍼 모터가 동작하는 동안에는 다른 동작을 할 수 없습니다.
이 라이브러리는 이러한 단점을 수정하고 스텝 모터가 실행되는 동안 다른 작업을 할 수 있게 해줍니다.
Index
주요 기능
- 'Stepper' 라이브러리와 동일한 선언 구조
- 'Stepper' 라이브러리와 동일한 사용 방법
- 메인 'loop'를 멈추지 않고 동작하여 비동기로 동작
- 여러 개의 스텝모터나 다른 동작을 동시에 할 수 있음
시작 하기
- Releases 에서 다운로드 하거나
- 'StepperAsync5.h' 및 'StepperAsync5.cpp' 파일을 생성하고 소스 코드를 복사합니다.
- (Arduino IDE 2.x 이상) 'Arduino IDE'에서 'Sketch > Include Library > Manage Libraries...'를 선택하여 'Library Manager'를 열어 'Stepper Async 5'를 설치해 줍니다.
아래 지침에 따라 설치해 주세요.
필요 조건
Arduino IDE 1.8.19에서 테스트 됩
설치
('Library Manager'로 설치하였으면 이 과정은 필요 없습니다.)
- 'Arduino IDE'의 'libraries'폴더에 'StepperAsync5'폴더를 생성합니다.
- 'StepperAsync5.h', 'StepperAsync5.cpp'를 넣어줍니다.
'Arduino IDE'를 실행하고 다음 코드를 추가하여 'StepperAsync5'를 사용할 수 있습니다.
#include <StepperAsync5.h>
테스트 해보기
아래 코드를 스케치에 넣어 테스트하십시오.
#include <StepperAsync5.h>
int LED1 = A0;
StepperAsync5 stepper(200, 12, 11, 10, 9);
StepperAsync5 stepper2(200, 7, 6, 5, 4);
void setup()
{
Serial.begin(9600);
pinMode(LED1, OUTPUT);
stepper.setSpeed(30);
stepper2.setSpeed(60);
}
void loop()
{
if (Serial.available())
{
int steps = Serial.parseInt();
if(steps != 0)
{
digitalWrite(LED1, HIGH);
stepper.setStep(steps);
digitalWrite(LED1, LOW);
stepper2.setStep(steps);
digitalWrite(LED1, HIGH);
//stepper.setStep(200);
//stepper2.setStep(200);
Serial.print("steps : ");
Serial.println(steps);
delay(100);
digitalWrite(LED1, LOW);
}
}
stepper.moveStep();
stepper2.moveStep();
//Serial.print("Is Move - stepper : ");
//Serial.print(stepper.MoveOnIs);
//Serial.print(", stepper2 : ");
//Serial.println(stepper2.MoveOnIs);
}
문서
Name | Description |
---|---|
StepperAsync5(int number_of_steps, int motor_pin_1, int motor_pin_2) | 2선식 스텝모터에 사용하는 생성자 @param number_of_steps 모터가 1회전 하는데 필요한 스탭 숫자 @param motor_pin_1 모터에 연결된 핀 번호1 @param motor_pin_2 모터에 연결된 핀 번호2 |
StepperAsync5(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4) | 4선, 6선식 스텝모터에 사용하는 생성자 @param number_of_steps 모터가 1회전 하는데 필요한 스탭 숫자 @param motor_pin_1 모터에 연결된 핀 번호1 @param motor_pin_2 모터에 연결된 핀 번호2 @param motor_pin_3 모터에 연결된 핀 번호3 @param motor_pin_4 모터에 연결된 핀 번호4 |
StepperAsync5(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int motor_pin_5) | 8선식 스텝모터에 사용하는 생성자 @param number_of_steps 모터가 1회전 하는데 필요한 스탭 숫자 @param motor_pin_1 모터에 연결된 핀 번호1 @param motor_pin_2 모터에 연결된 핀 번호2 @param motor_pin_3 모터에 연결된 핀 번호3 @param motor_pin_4 모터에 연결된 핀 번호4 @param motor_pin_5 모터에 연결된 핀 번호5 |
void setSpeed(long whatSpeed) | 모터의 분당 회전수(RPM)을 설정함. @param whatSpeed 모터가 분당 회전해야 하는 속도 |
void setStep(int number_of_steps) | 모터를 설정된 단계 수(steps) 만큼 돌리라고 명령한다. 'Stepper'라이브러리의 'stop()'에 대응하는 함수지만 직접 회전시키진 안습니다. 'moveStep()'가 호출되어야 회전합니다. @param number_of_steps 모터를 돌리는 단계 수. 정반향으로 돌리려면 양수, 반대방향으로 돌리려면 음수를 넣는다. |
void moveStep() | 설정된 단계 수(steps)만큼 회전시킨다. 반듯이 'loop()'안에서 이 메소드를 호출해야 한다. |
void version() | 이 라이브러리의 기준 버전을 출력한다. 기준버전에 따라 라이브러리를 분리하고 있어서 이 라이브러리는 '5'고정입니다. |
MoveOnIs | 지금 모터가 진행 중인지 여부 동작 중=true, 동작 중이 아니면=false |
수정 이력
2023-06-07 :
- MoveOnIs 기능 추가
2023-06-04 :
- 이름을 'StepperMulti5'에서 'StepperAsync5'로 변경함
== 이전 내역 ==
기여 방법
프로젝트를 '포크(Fork)'하여 '새로운 벤치(new branch)'를 만든 후 '풀 리퀘스트(pull request)'해주세요.
저자 및 기여자
갱신되지 않는 기여자 목록은 기여자에서 확인할 수 있습니다.
라이선스
GNU LESSER GENERAL PUBLIC LICENSE
== 'Stepper' library ==
Copyright (c) Arduino LLC. All right reserved.
Copyright (c) Sebastian Gassner. All right reserved.
Copyright (c) Noah Shibley. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA