답변 : 아두이노 코딩해결해주실분..
페이지 정보
작성자 master 작성일18-06-07 10:18 조회7,874회 댓글2건본문
1.코딩에서 스텝모터 초기값 3Turns로설정하여 정회전 역회전을 반복한다
스텝모터의 속도를 60rpm으로 설정한다
2,3,4번 문제는 공부해서 직접 만들어보세요
댓글 : 2
조회수 : 7,874
닉네1257679님의 댓글
닉네1257679 작성일
#include <Stepper.h>
#include <MsTimer2.h>
// total number of steps this motor can take
#define STEPS 100
// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
byte LED[8]={22,24,26,28,30,32,34,36};
byte SWITCH[8]={23,25,27,29,31,33,35,37};
Stepper stepper(STEPS, 23,27,25,29);
byte vai= 0;
volatile int mystep = 1;
#define DIR_CHANHE_CNT 2 //방향전환카운트
volatile byte ecd_cnt = 0;
volatile boolean flag=false; //챕터링방지
volatile byte flag_cnt=0;
2)
void setup()
{
// set the speed of the motor to 30 RPMs
for(i=0;i<8;i++)
{
val=digitalRead(SWITCH[i]);
digitalwrite(LED[i],val);
}
stepper.setSpeed(60);
attachInterrupt(0, blink, FALLING); // Int0 => pin 2
MsTimer2::set(20, flash); // 20ms period
MsTimer2::start();
}
3)
void loop()
{
stepper.step(mystep*3);
stepper.step(-mystep*3); // step one step:
byte i;
for(i=0;i<8;i++)
{
val=digitalRead(SWITCH[i]);
digitalwrite(LED[i],val);
stepper.step(mystep*i);
stepper.step(-mystep*i);
}
}
}
4)
void blink()
{
flag = true;//자기장센서챕터링방지하기위함.
if(ecd_cnt == DIR_CHANHE_CNT)
{
mystep*=-1;
ecd_cnt = 0;
}
}
5)
void flash()
{
if(flag == true) //자기장센서챕터링방지가설정되면
flag_cnt++; //카운트시작 ,적어도자기장센서가반응하는범위를벗어날떄까지카운트
if(flag_cnt == 10){
flag = false;
flag_cnt = 0; //범위를벗어나면플래그해제
ecd_cnt++;
}
}
이런식으로 말씀하신 스탑모터 60설정 및 정회전 역회전 3회씩 넣어주고
2번쨰껀 제가 스위치값을 받아와서 스탑모터 *i를 넣어줘서 응용해봤는데 맞는지 확인해주실수있을까요?
master님의 댓글
master 작성일동작시켜보고 문제가 있을 때 상세하게 작성해주세요