
소스코드
아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.
//스텝모터 구동실험
int IN1 = 7; //IN1
int IN2 = 6; //IN2
int IN3 = 5; // IN3
int IN4 = 4; // IN4
int beep= 3; // 액티브부저 -극에 연결
char time = 0, i = 0, count = 0;
void setup()
{
//출력 모드로 모터 드라이브 IO 초기화
pinMode(IN1, OUTPUT); // PIN 7
pinMode(IN2, OUTPUT); // PIN 6
pinMode(IN3, OUTPUT); // PIN 5
pinMode(IN4, OUTPUT); // PIN 4
pinMode(beep, OUTPUT); //PIN 3
digitalWrite(beep, HIGH);
Serial.begin(9600);//시리얼 전송속도 9600bps
}
/*******************************4상8스텝***********************************/
void Coil_A()
{
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH);
}
void Coil_AB()
{
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH);
}
void Coil_B()
{
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH);
}
void Coil_BC()
{
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
void Coil_C()
{
digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
void Coil_CD()
{
digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
}
void Coil_D()
{
digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
void Coil_DA()
{
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
/*******************************************************************/
void beep_once()//부저를 한 번 울린다.
{
digitalWrite(beep, LOW);
delay(100);
digitalWrite(beep, HIGH);
}
void loop()
{
unsigned long now_time = micros(); //현재 시스템 런타임을 불러옵니다.
while ((micros() - now_time) < 14648); // 60 000 000us/4096
switch (i)
{
case 0: Coil_A(); i++; break;
case 1: Coil_AB(); i++; break;
case 2: Coil_B(); i++; break;
case 3: Coil_BC(); i++; break;
case 4: Coil_C(); i++; break;
case 5: Coil_CD(); i++; break;
case 6: Coil_D(); i++; break;
case 7: Coil_DA(); i = 0; break;
default: break;
}
count++;
if (count == 68)//1초이면 시간을 표시하고 부저를 한번 울립니다.
{
count = 0;
time++;
if (time == 60)
time = 0;
Serial.print("second: " ) ;
Serial.print(time, DEC) ;
Serial.println("s" ) ;
beep_once();
}
}

