2017년 6월 22일 목요일
배열이용 CW,CCW함수로 제어
int A = 8;
int preSW = 0;
int STATUS = 0;
int step_table[4][4] = {
{1, 0, 0, 1}, {1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}
};
void setup()
{
int i;
for (i = 0; i < 4; i++)
pinMode(A + i, OUTPUT);
pinMode(6, INPUT); //SW1
pinMode(7, INPUT); //SW2
pinMode(12, OUTPUT); //LED1
pinMode(13, OUTPUT); //LED2
}
void CW(int rota, int myDelay)
{
int i, j, k;
for (i = 0; i < 50 * rota; i++)
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
digitalWrite(A+k, step_table[j][k]);
delay(myDelay);
}
}
}
void CCW(int rota1, int myDelay1)
{
int i, j, k;
for (i = 0; i < 50 * rota1; i++)
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
digitalWrite(A+k, step_table[3-j][k]);
delay(myDelay1);
}
}
}
void loop()
{
int SW1 = digitalRead(6);
if (SW1 != preSW)
{
if (SW1 == 1)
{
STATUS++;
STATUS = STATUS % 2;
if (STATUS == 1)
{
digitalWrite(12, 1);
CW(3, 10);
digitalWrite(12, 0);
}
else if (STATUS == 0)
{
digitalWrite(13, 1);
CCW(2, 20);
digitalWrite(13, 0);
}
}
preSW = SW1;
}
}
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기