이전 글에서 'Stepper.h'는 '.step()'이 동작하는 동안 다른 동작을 할 수 없다는 것을 이야기하였습니다.

(참고 : [Arduino] 'Stepper.h'는 두개의 모터를 제어할 수 없다.)

 

그래서 'Stepper.h'를 약간 개조하여 한번에 여러 개의 동작(스탭모터라던가 led같은 것들)을 할 수 있도록 수정하겠습니다.

 

 

 

1. 기존 라이브러리 분석하기

저번 글에서도 잠깐 이야기했습니다만 기존 라이브러리의 문제는 'while()'문이 끝나야 '.step()'가 끝난다는 것입니다.

 

그러니 기존 '.step()'에서 'while()'문 안의 내용을 따로 메소드로 빼서 호출해야 합니다.

 

 

2. 개조하기

이제 기존에 있는 라이브러리의 코드를 그대로 복사하여 이름을 'StepperMulti'로 바꿔 준다음 내용을 수정합니다.

2-2. 'StepperMulti.h' 수정하기

(1) '.step()'의 역할이 좀 달라졌으므로 'setStep()'로 이름을 바꾸고 'void moveStep();'를 추가합니다.

(2) '.step()'의 안에 지역변수가 있는데 이것을 꺼내서 클래스 지역변수로 만듭니다.

 

/*
  StepperMulti.h
  ( http://blog.danggun.net/2092 )

  이 라이브러리는 아두이노의 'Stepper.h'를 개조한 라이브러리입니다.
  (Stepper.h : http://arduino.cc/en/reference/stepper )
  모든 내용은 'Stepper.h'와 거의 동일합니다.
  (0.4버전 기준)
  
*/

// ensure this library description is only included once
#ifndef StepperMulti_h
#define StepperMulti_h

// library interface description
class StepperMulti 
{
  public:
    // constructors:
    StepperMulti(int number_of_steps, int motor_pin_1, int motor_pin_2);
    StepperMulti(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4);

    // speed setter method:
    void setSpeed(long whatSpeed);

    // mover method:
    void setStep(int number_of_steps);

	//'loop()'안에서 이 메소드를 호출해야 한다.
	void moveStep();

  private:
    void stepMotor(int this_step);
    
    int direction;        // Direction of rotation
    int speed;          // Speed in RPMs
    unsigned long step_delay;    // delay between steps, in ms, based on speed
    int number_of_steps;      // total number of steps this motor can take
    int pin_count;        // whether you're driving the motor with 2 or 4 pins
    int step_number;        // which step the motor is on
    
    // motor pin numbers:
    int motor_pin_1;
    int motor_pin_2;
    int motor_pin_3;
    int motor_pin_4;
    
    long last_step_time;      // time stamp in ms of when the last step was taken

	//스텝 저장
	int steps_left;
};

#endif

 

 

 

 

 

2-2. 'StepperMulti.cpp' 수정 하기

'StepperMulti.h'에서 수정한 'setStep()'과 'void moveStep();'을 만들어야 합니다.

 

(1) 기존에 있던 'step()'의 이름을 'setStep()'로 바꿉니다.

(2) 'void moveStep()'을 만듭니다.

(2) 'setStep()'의 내용 중 'while()'문의 내용을 'void moveStep()'으로 옮깁니다.

 

#include "Arduino.h"
#include "StepperMulti.h"

/*
 * two-wire constructor.
 * Sets which wires should control the motor.
 */
StepperMulti::StepperMulti(int number_of_steps, int motor_pin_1, int motor_pin_2)
{
  this->steps_left = 0;	//스탭초기화

  this->step_number = 0;      // which step the motor is on
  this->speed = 0;        // the motor speed, in revolutions per minute
  this->direction = 0;      // motor direction
  this->last_step_time = 0;    // time stamp in ms of the last step taken
  this->number_of_steps = number_of_steps;    // total number of steps for this motor
  
  // Arduino pins for the motor control connection:
  this->motor_pin_1 = motor_pin_1;
  this->motor_pin_2 = motor_pin_2;

  // setup the pins on the microcontroller:
  pinMode(this->motor_pin_1, OUTPUT);
  pinMode(this->motor_pin_2, OUTPUT);
  
  // When there are only 2 pins, set the other two to 0:
  this->motor_pin_3 = 0;
  this->motor_pin_4 = 0;
  
  // pin_count is used by the stepMotor() method:
  this->pin_count = 2;
}


/*
 *   constructor for four-pin version
 *   Sets which wires should control the motor.
 */

StepperMulti::StepperMulti(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4)
{
  this->steps_left = 0;	//스탭초기화

  this->step_number = 0;      // which step the motor is on
  this->speed = 0;        // the motor speed, in revolutions per minute
  this->direction = 0;      // motor direction
  this->last_step_time = 0;    // time stamp in ms of the last step taken
  this->number_of_steps = number_of_steps;    // total number of steps for this motor
  
  // Arduino pins for the motor control connection:
  this->motor_pin_1 = motor_pin_1;
  this->motor_pin_2 = motor_pin_2;
  this->motor_pin_3 = motor_pin_3;
  this->motor_pin_4 = motor_pin_4;

  // setup the pins on the microcontroller:
  pinMode(this->motor_pin_1, OUTPUT);
  pinMode(this->motor_pin_2, OUTPUT);
  pinMode(this->motor_pin_3, OUTPUT);
  pinMode(this->motor_pin_4, OUTPUT);

  // pin_count is used by the stepMotor() method:  
  this->pin_count = 4;  
}

/*
  Sets the speed in revs per minute

*/
void StepperMulti::setSpeed(long whatSpeed)
{
  this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed;
}

/*
  Moves the motor steps_to_move steps.  If the number is negative, 
   the motor moves in the reverse direction.
 */
void StepperMulti::setStep(int steps_to_move)
{  
  this->steps_left = abs(steps_to_move);  // how many steps to take
  
  // determine direction based on whether steps_to_mode is + or -:
  if (steps_to_move > 0) {this->direction = 1;}
  if (steps_to_move < 0) {this->direction = 0;}
  
  //스탭을 진행 한다.
  moveStep();
}

void StepperMulti::moveStep()
{
	//남은 스텝이 있는지?
	if(this->steps_left > 0)
	{
		// move only if the appropriate delay has passed:
		if (millis() - this->last_step_time >= this->step_delay) 
		{
			// get the timeStamp of when you stepped:
			this->last_step_time = millis();
			// increment or decrement the step number,
			// depending on direction:
			if (this->direction == 1) 
			{
				this->step_number++;
				if (this->step_number == this->number_of_steps) 
				{
					this->step_number = 0;
				}
			} 
			else 
			{ 
				if (this->step_number == 0) 
				{
					this->step_number = this->number_of_steps;
				}
				this->step_number--;
			}
			// decrement the steps left:
			this->steps_left--;
			// step the motor to step number 0, 1, 2, or 3:
			stepMotor(this->step_number % 4);
		}
	}
}


/*
 * Moves the motor forward or backwards.
 */
void StepperMulti::stepMotor(int thisStep)
{
  if (this->pin_count == 2) {
    switch (thisStep) {
      case 0: /* 01 */
      digitalWrite(motor_pin_1, LOW);
      digitalWrite(motor_pin_2, HIGH);
      break;
      case 1: /* 11 */
      digitalWrite(motor_pin_1, HIGH);
      digitalWrite(motor_pin_2, HIGH);
      break;
      case 2: /* 10 */
      digitalWrite(motor_pin_1, HIGH);
      digitalWrite(motor_pin_2, LOW);
      break;
      case 3: /* 00 */
      digitalWrite(motor_pin_1, LOW);
      digitalWrite(motor_pin_2, LOW);
      break;
    } 
  }
  if (this->pin_count == 4) {
    switch (thisStep) {
      case 0:    // 1010
      digitalWrite(motor_pin_1, HIGH);
      digitalWrite(motor_pin_2, LOW);
      digitalWrite(motor_pin_3, HIGH);
      digitalWrite(motor_pin_4, LOW);
      break;
      case 1:    // 0110
      digitalWrite(motor_pin_1, LOW);
      digitalWrite(motor_pin_2, HIGH);
      digitalWrite(motor_pin_3, HIGH);
      digitalWrite(motor_pin_4, LOW);
      break;
      case 2:    //0101
      digitalWrite(motor_pin_1, LOW);
      digitalWrite(motor_pin_2, HIGH);
      digitalWrite(motor_pin_3, LOW);
      digitalWrite(motor_pin_4, HIGH);
      break;
      case 3:    //1001
      digitalWrite(motor_pin_1, HIGH);
      digitalWrite(motor_pin_2, LOW);
      digitalWrite(motor_pin_3, LOW);
      digitalWrite(motor_pin_4, HIGH);
      break;
    } 
  }
}

 

 

 

 

3. 테스트하기

설마 여기까지 왔는데 라이브러리에 추가하는 것을 모르시는 건 아니겠죠?

모르시면 이전 글을 참고하시면 됩니다.

(참고 : [Arduino] 라이브러리 작성하기)

 

테스트용 프로그램을 만듭니다.

여기서 중요한 것은 'loop()'안에서 '.moveStep()'를 호출해야 합니다.

 

그 외에는 기존 'Stepper.h'와 비슷합니다.

 

#include <StepperMulti.h>

StepperMulti stepper(200, 8, 9, 10, 11);
StepperMulti stepper2(200, 4, 5, 6, 7);
 
 
void setup()
{
  Serial.begin(9600);
  stepper.setSpeed(30);
  stepper2.setSpeed(60);
}
 
void loop()
{
  if (Serial.available())
  {
    Serial.read();
    stepper.setStep(200);
    stepper2.setStep(200);
  }
  
  stepper.moveStep();
  stepper2.moveStep();
}

 

 

 

이제 시리얼 모니터를 열고 데이터를 날려 봅시다.

 

 

잘 보시면 각각 모터가 속도가 다른걸 알 수 있습니다.

기존의 'Stepper.h'를 이용했다면 모터 한 개가 동작을 끝내야 다음 모터가 동작할 수 있죠.

하지만 우리가 개조한 'StepperMulti.h'는 그렇지 않습니다.

 

이전 글에서처럼 led를 연결해도 마치 안켜진 것 처럼 켜졌다 꺼집니다.

 

 

마무리

이렇게 만든 라이브러리를 다운 받으세요 ㅎㅎㅎ

 

StepperMulti.zip

 

아두이노 폴더 밑에 'libraries'에 압축 푸시거나 '라이브러리 추가(Add Library...)'로 추가하시면 됩니다.

 

 

여전히 왜 이런 자료를 못 찾은 것인지는 의문이지만 원하는 데로 작동하니 기분은 좋네요.

저번에도 말했다싶이 이렇게 수정한 코드는 'loop()'의 딜레이에 의해 잘못된 동작을 할 여지가 있습니다.

그건 각자 알아서 처리하셔야 합니다 ㅎㅎㅎ

 

신고
  1. 이전 댓글 더보기
  2. 2016.03.06 03:14  Address  Edit/Delete  Reply

    비밀댓글입니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.03.06 05:13 신고  Address  Edit/Delete

      기존 코드로 모터가 돌아가는지는 확인하셨나요?

    • 2016.03.06 07:53  Address  Edit/Delete

      비밀댓글입니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.03.06 16:29 신고  Address  Edit/Delete

      '3.테스트하기' 코드 그대로 올려도 같은 현상인가요?
      제가 지금 아두이노가 없어서 테스트를 못하네요.
      기억이 나지 않는데 이 라이브러리 사용할때 계속 셋스탭 호출하면 동작하지 않습니다.
      샛업에다 올리면 되는지 않되는지 기억이 나질 않네요 ㅡ.-;;

    • star lee 2016.03.06 17:35 신고  Address  Edit/Delete

      작동은 합니다만, 두개의 신호가 꼬인듯한 느낌을 받습니다.
      예를들어 예제 코드를
      StepperMulti stepper(900, 1, 3, 2, 4);
      StepperMulti stepper2(200, 4, 5, 6, 7);


      void setup()
      {
      Serial.begin(9600);
      stepper.setSpeed(30);
      stepper2.setSpeed(60);

      이런식으로 설정할 경우

      초반 절반은 돌아가나 나머지 절반은 양쪽으로 동시에? 움직이는 느낌으로 더이상 회전하지 않고 진동합니다.
      400, 200의 경우에는 회전하지만 중간에 약하게 느린 느낌이 있고

      제가 짠 코드 설정인 2048의 경우에는 0.5초간 진동할뿐 돌아가지 않습니다...

      영상으로 업로드 하였으면 편할듯 합니다만, 이게 여의치가 않네요

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.03.06 21:44 신고  Address  Edit/Delete

      '3.'코드에서 둘다 세팅을 64로 하시고
      (예> StepperMulti stepper(64, 1, 3, 2, 4);)
      셋스탭을 64로 세팅하고 어떻게 돌아가는지 확인해 주세요.

  3. star lee 2016.03.06 21:59 신고  Address  Edit/Delete  Reply

    3초 정도의 속도로 1회당 약 15도 회전합니다

    https://youtu.be/cqdGIf1XarU

    돌다 중간부터는 멈춥니다.

    http://pastebin.com/XT1Mzmwp

    사용된 소스입니다.

    운없게도 방금 모터 하나를 박살내서 하나의 모터로 테스트해봤습니다.

  4. star lee 2016.03.06 22:34 신고  Address  Edit/Delete  Reply

    기존 코드는 2048스탭이 1바퀴입니다.
    64로 적으면 32도 회전합니다.

    64로 적으면 예제코드처럼 작동합니다만, 2048은 stepper.h에서는 잘됩니다만,
    StepperMulti.h 에서는 안됩니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.03.06 23:17 신고  Address  Edit/Delete

      제가 가지고있는 데이터시트에는 64스탭이 한바퀴로 나와있는데 이거 아닌가요?
      http://robocraft.ru/files/datasheet/28BYJ-48.pdf
      제가 잘못된 데이터시트를 가지고 있을 수 있으니 다른 데이터시스있으시면 주세요.

      지금 아두이노 라이브러리를 까보니 오리지널 스텝모터 라이브러리가 업데이 됐네요.
      제가 만든 라이브러리가 0.4 기준이라 그런건지는 제가 아두이노를 가지고 직접 테스트 해봐야 알듯합니다.
      지금 당장 계획이 없어서 어떻게 될지모르겠네요.

      급하시면 본문내용보시고 '1.1.0'버전 라이브러리를 개조해서 쓰시면됩니다.
      (업데이트된 소스도 별반 차이가 없어서 될지 모르겠네요.)
      모터와 코드를 하나만 세팅했을때도 1바퀴 안도나요?

    • star lee 2016.03.07 00:10 신고  Address  Edit/Delete

      아, 한 스탭이 8이고 총 8스탭이라 64는 맞는데, 여기서 한 스탭을 다시 64로 쪼갤수 있어 총 4096(실제로는 4076) 단계로 제어됩니다.

      물론 이게 왜 2048이 한바퀴인지는 모르겠습니다....

      모터와 코드를 하나만 셋팅해도 동일한데, 서보 하나 부숴먹고 여러가지 보다가 계획이 바뀌어서 어찌어찌 이번엔 물건너가게 되었습니다. 바쁘실텐데 도와주셔서 감사합니다.

  5. 2016.08.29 19:47  Address  Edit/Delete  Reply

    비밀댓글입니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.08.30 09:40 신고  Address  Edit/Delete

      제 블로그에 하드웨어 카테고리보시면 스탭모터에 대한 글 여러개 있습니다.
      외부전원 구성하는 방법도 같이 나와있으니 참고 하시면 됩니다.
      http://blog.danggun.net/1765

  6. YGREEN 2016.11.03 17:41 신고  Address  Edit/Delete  Reply

    질문드리고 싶은게 있습니다.
    2상 바이폴라 스텝각 1.8도인 스텝모터를 구동하고싶습니다.
    구동은 확인되나, 고속회전을 하고싶어 rpm을 올렸을때 진동만하고 회전을 안합니다.
    어떤 문제인가요..?
    모터드라이버는 L298N을 사용중에 있습니다.
    전원은 외부전원을 안쓰고 아두이노에서 뽑아썼습니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.11.04 11:57 신고  Address  Edit/Delete

      모터는 속도가 올라갈 수록 전류를 많이 먹습니다.
      아두이노에서 직접 연결하는걸 권장하지 않는 이유는 전류가 부족해서 입니다.

      저도 이걸 계산할줄 몰라서 공부를 좀 해야 하는데....
      데이터시트를 보면 전기에 관한 스팩이 나와 있습니다.(V, A, mH 등등)
      스탭모터는 1스탭에 사용하는 전류가 일정합니다.
      1스탭 = 1펄스 = 1스탭당 각도(여기서는 1.8도를 기준으로 말하겠습니다.)
      입니다.
      1스탭에 0.1mA를 사용하는 모터가 한바퀴를 돌았으면
      200 * 0.1mA =20mA
      를 소모한겁니다.

      이런 내용을 기반해서 사용 전류를 계산해보고 그에 맞게 넉넉하게 공급해야 합니다.

  7. 2016.11.07 21:34  Address  Edit/Delete  Reply

    비밀댓글입니다

  8. 이상혁 2016.11.11 13:32 신고  Address  Edit/Delete  Reply

    안녕하세요 유튜브 검색중 스텝모터관련 자료를 찾아보다가 이렇게 좋은자료를 만나게되어
    송구스럽지만 질문좀 드리겠습니다!!

    다름이 아니라 스텝모터 24개를 각각 제어를 하고 싶은데요.
    아두이노로는 무리일거 같고..
    atmega128로는 가능할까요??
    아니면 다른방도가 있을까요??

    스텝모터 24개가 각각 제어가 가능해야합니다.
    아직 많이 모르고 부족해서 어디서부터 손을대야할지 모르겠네요..

    미리 감사드립니다!

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.11.13 01:45 신고  Address  Edit/Delete

      가능은 합니다.
      확장보드를 이용해 256개인가 까지 포트 확장이 가능합니다.
      근데 꼭 아두이노를 사용할 필요는 없으니 좀더 알아보시고 공부하시면 됩니다 ㅎㅎㅎ

  9. 이서호 2016.12.03 00:43 신고  Address  Edit/Delete  Reply

    안녕하세요~!
    제가 스탭모터 돌리려고 하는데 ic를 l297 이랑 sla7024 를 이용해서 돌리는데
    이코드를 넣으면 돌릴수 있을까요?
    회로를 잘몰라서요 ㅠㅠ 가능할지 궁급합니다

  10. 이서호 2016.12.04 21:04 신고  Address  Edit/Delete  Reply

    회로도에 따라 다르다는게 무슨말인지 알수있을까요?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.12.05 11:20 신고  Address  Edit/Delete

      회로도는 부품에 따라서 다를 수 있지만 아두이노 코드는 동일합니다.
      이 블로그에 하드웨어 카테고리에서 사용한 부품이 아닌 다른 부품을 사용한다면 부품구성에 따라서 회로도가 다를 수 있다는 것이죠.

  11. 이서호 2016.12.05 22:40 신고  Address  Edit/Delete  Reply

    아하 감사합니다
    근데 sla7024 만 으로 돌리는 사람도 있더라고요
    근데 저는 l297 sla7024 둘다 같이 해서 회로를 꾸미는데 잘돌아가겠죠? ㅠㅠ

  12. 한스 2017.03.06 22:21 신고  Address  Edit/Delete  Reply

    #include <StepperMulti.h>

    StepperMulti stepper(200, 8, 9, 10, 11);
    StepperMulti stepper2(200, 4, 5, 6, 7);
    int startButton = 13;
    unsigned long step_delay;

    void setup()
    {
    Serial.begin(9600);
    stepper.setSpeed(500);
    stepper2.setSpeed(1000);
    pinMode(startButton, INPUT_PULLUP);
    }

    void loop()
    {
    if (digitalRead(startButton) == HIGH)
    {
    stepper.setStep(5000);
    stepper2.setStep(20000);
    delay(2000);
    stepper.setStep(-5000);
    stepper2.setStep(-20000);
    }
    stepper.moveStep();
    stepper2.moveStep();
    }

    반대방향 회전이 안 되네요.
    코드가 어떻게 잘못 된 건가요?

  13. 이준 2017.03.27 12:32 신고  Address  Edit/Delete  Reply

    스텝모터 사용해서 평면 내에 원하는 위치나 좌표로 제어하고 싶은데 생각보다 어렵네요ㅠㅠ

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.03.28 20:05 신고  Address  Edit/Delete

      그러면서 배우는 거죠 ㅎㅎㅎㅎ
      3d 프린터 만들때 스탭모터 두개로 좌표찍는거 많이 하니까 그런 자료 보면 쉽게 하실 수 있을듯 합니다.

  14. 박상진 2017.04.04 18:24 신고  Address  Edit/Delete  Reply

    안녕하세요 ! 글 잘보고있습니다. 재가 초음파센싱을 통한 스텝모터 제어를 하는도중 초음파센서가 스텝모터의 클럭을 잡아먹는 현상때문에 글을 찾는데 이글이 보이네요! 그런데 여전히 초음파센서의 pulsein함수가 스텝모터의 클럭을 잡아먹내요.. 본 문에서 함수를 타이머쪽으로 돌려두 그런데 라이브러리쪽에서 수정을 어떻게하면될지 조금이나마 조언을 구하고 싶습니다! 모터 드라이버는 am-ms2입니다!

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.04.05 04:31 신고  Address  Edit/Delete

      초음파센서의 값을 읽는 기본코드는 반복문을 별도로 돌리지 않는데 코드자체가 문제인듯 하네요.
      for문이나 딜레이가 있는지 확인해 보세요.

  15. 박상훈 2017.05.09 17:17 신고  Address  Edit/Delete  Reply

    게시하신 게시물 정말 도움이 많이 되었습니다. 그런데 아두이노 코딩에서는 오류가 나타나지 않는데 정작 두 스텝모터가 작동하지 않습니다. 회로상의 문제가 없음은 다른 코딩으로 확인하였습니다. 현재 12V어답터와 아두이노 자체의 전력공급을 동시에 하고있습니다. 그 외에 혹시 다른 미작동의 문제가 있는지 알려주실 수 있으신가요. 왜 구동이 안되는지 모르겠어서 답답합니다...

  16. 박상훈 2017.05.10 13:51 신고  Address  Edit/Delete  Reply

    기존 소스가 무엇인지 잘 모르겠습니다만 예제파일로 아무거나 실행해봤을때는 잘 돌아갔구요 당근님이 포스팅하신 코딩으로 했을때는 미세한 진동조차 없어서요. 보통 안되더라도 코딩에서 오류가 뜨거나 진동은 느껴졌었는데 말입니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.05.10 14:17 신고  Address  Edit/Delete

      기존 라이브럴리에서 동작한다면 '3. 테스트하기' 의 코드만 넣고도(핀번호만 맞추고) 동작해야 정상입니다.
      먼저 '3번' 예제를 모터 1개만 붙여서 테스트 해보세요.

      이 코드가 예전 버전 기준이라 현제 버전과 맞지 않을 수 있습니다.
      본문내용대로 최신버전을 수정해보시길 바랍니다.

  17. 아두이노초보 2017.07.24 09:05 신고  Address  Edit/Delete  Reply

    저기 라이브러리 다운받고 알집으로 추가했는데 테스트 구동이 안되네요ㅠㅠ 모터 종류가 달라서 그럴까요?? 현재 사용하고있는 모터는 ULN2003 스테핑 모터를 사용하고 있습니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.07.24 09:26 신고  Address  Edit/Delete

      알집으로 풀었다는게 압축을 풀었다는 의미인가요? 아니면 그냥 압축파일을 복사해서 넣었다는 건가요?

    • 아두이노초보 2017.07.24 10:06 신고  Address  Edit/Delete

      위에 올려주신 라이브러리 알집을 스케치 -라이브러리 포함하기- zip 라이브러리추가 했었습니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.07.25 23:00 신고  Address  Edit/Delete

      아두이노의 기능으로 불러오는 경우 라이브러리 자체가 잘 불러와지지 않는 현상이 있습니다.

      http://danggun.tistory.com/2055
      이글의 2-1을 참고하셔서 수동으로 넣어보시길 바랍니다.

    • 아두이노초보 2017.07.26 16:33 신고  Address  Edit/Delete

      답변 감사드립니다. 저기 위에 테스트용
      코드 적어놓으신거에 stepper(200, 8, 9, 10, 11); 200 이랑 setstep(200) 이 의미하는게 뭔지 알려주실 수 있나요? 초보라 이해가안되네요ㅠ

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2017.07.28 03:38 신고  Address  Edit/Delete

      흠...
      이건 기본 스탭모터 라이브러리와 동일합니다.
      사용할 핀번호와 1바퀴 스탭수를 설정하는 것입니다.

  18. Favicon of http://naver.com BlogIcon 민경훈 2017.07.24 19:24 신고  Address  Edit/Delete  Reply

    <StepperMulti.h> 이 라이브러리를 사용하면 여러개의 스텝모터를 동시에 제어가능하고 따로 제어가 가능하나요?

    <StepperMulti.h> 이 라이브러리를 사용하면서 스텝모터를 따로 제어가 가능하다면 어떻게 하면 될까요?

    <StepperMulti.h> 이 라이브러리를 사용하면서 스텝모터를 따로 제어가 불가능할 시
    <StepperMulti.h> <Stepper.h> 을 한번에 사용하면 동시제어와 따로 제어가 가능하나요?



  19. Favicon of http://naver.com BlogIcon gg 2017.07.31 09:50 신고  Address  Edit/Delete  Reply

    https://www.youtube.com/watch?v=ntlI-pDUxPE
    <참고로 이 로봇을 만들고 있습니다>

    스텝모터 2개를 동시에 작동시키고 나서 바로 다른 스텝모터 2개를 작동시키려 면 코드를 어떻게 짜야 하는지 궁금합니다.

    여러개의 스텝모터를 동시에 작동시키고 나서 1개의 모터를 따로 작동시킬 때,
    stepper.step();라고 하면되나요?

    이 모든 동작을 <StepperMulti.h> 이것만으로 다 할 수 있죠?

    많은 질문이라 죄송합니다. ㅠ

  20. 아두이노배우자 2017.08.28 17:55 신고  Address  Edit/Delete  Reply

    stepper multi 라이브러리를 사용하면 처음에 라이브러리 불러올떄 #include <StepperMulti.h> 여기서 stepperMulti.h가 색깔이 변해야지 인식이 된건가요?

  21. 이거 정말 좋네요! 2017.09.23 08:11 신고  Address  Edit/Delete  Reply

    와 이건 정말 좋네요 최신버전에서 잘됩니다. (1.8.4 기준)
    stepperMulti.h은 변하지 않습니다.

    서보모터3개로 해봤는데 3개로 동시에 제어되는게 정말 마음에드네요.

    그런데 제가 너무 초보라 3개를 제어를 동시제어하면서 정,역 회전하고 싶은데 생각보다 어렵네요 ㅠㅠ

    공부가 답인 것 같습니다.

    이 정보 공유해 주셔서 정말 감사합니다. 많이 배우고 갑니다!!

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바