아두이노 기본실습 2 - LED 6개 점등실험

여기서는 기본실습 1을 확장하여 6개의 LED를 이용한 실습을 해보겠습니다. LED를 점멸하는 방법 및 6개의 LED를 각각 어떻게 제어하는지 프로그램을 통해 알아봅니다.

아래는 LED 결선도 입니다. 6개의 LED를 브레드보드에 배열하고 LED의 +쪽(긴 리드선)에 220옴 저항을 직렬로 연결합니다. 각강의 200옴 저항 반대쪽은 아두이노 보드의 디지털 IO 1번에서 6번까지 순서대로 연결합니다.

LED의 -쪽은 브레드보드 -공통핀(브레드보드 내부적으로 가로로 길게 연결되어 있습니다)로 연결한 후 아두이노 보드의 GND에 연결합니다.

 

 

소스코드1

아래는 소스코드1번입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드해봅니다.

// 아두이노 6개 LED 점등실험1
// LED에 연결된 디지털IO핀 설정
int Led1 = 1;
int Led2 = 2;
int Led3 = 3;
int Led4 = 4;
int Led5 = 5;
int Led6 = 6;
//led 점등패턴1번 서브루틴
void style_1(void)
{
  unsigned char j;
  for(j=1;j<=6;j++)
    digitalWrite(j,HIGH);
    delay(200);

  for(j=6;j>=1;j--)
  {
    digitalWrite(j,LOW);
    delay(200);
  } 
}
void setup()
{ 
  unsigned char i;
  for(i=1;i<=6;i++)//디지털IO 1~6번까지 출력모드로 설정합니다.
    pinMode(i,OUTPUT);// i번째 핀을 출력모드로 설정합니다.
}
void loop()
{   
  style_1();//서브루틴 호출
  
}

 

소스코드2

아래는 소스코드2입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.

// 아두이노 6개 LED 점등실험2
// LED에 연결된 디지털IO핀 설정
int Led1 = 1;
int Led2 = 2;
int Led3 = 3;
int Led4 = 4;
int Led5 = 5;
int Led6 = 6;
//led 점등패턴1번 서브루틴
void style_1(void)
{
  unsigned char j;
  for(j=1;j<=6;j++)//200ms(0.2초) 마다 1번부터 6번까지의 LED를 점등합니다.
  {
    digitalWrite(j,HIGH);//j핀에 연결된 LED를 점등
    delay(200);//200ms 딜레이
  }
  for(j=6;j>=1;j--)//200ms(0.2초) 마다 6번부터 1번까지의 LED를 소등합니다.
  {
    digitalWrite(j,LOW);//j핀에 연결된 LED를 소등
    delay(200);//200ms 딜레이
  } 
}
//LED 점멸 서브루틴
void flash(void)
{   
  unsigned char j,k;
  for(k=0;k<=1;k++)//두번 점멸
  {
    for(j=1;j<=6;j++)//1번부터 6번까지의 LED를 점등합니다.
      digitalWrite(j,HIGH);//j핀에 연결된 LED를 점등
    delay(200);//200ms 딜레이
    for(j=1;j<=6;j++)//1번부터 6번까지의 LED를 소등합니다.
      digitalWrite(j,LOW);//j핀에 연결된 LED를 소등
    delay(200);//200ms 딜레이
  }
}
//led 점등패턴2번 서브루틴
void style_2(void)
{
  unsigned char j,k;
  k=1;//k변수를 1로 초기화합니다.
  for(j=3;j>=1;j--)
  {   
    digitalWrite(j,HIGH);//LED 점등
    digitalWrite(j+k,HIGH);//LED 점등
    delay(400);//400ms 딜레이
    k +=2;//k값에 2를 더합니다.
  }
  k=5;//k변수를 5로 초기화합니다.
  for(j=1;j<=3;j++)
  {
    digitalWrite(j,LOW);//LED 소등
    digitalWrite(j+k,LOW);//LED 소등
    delay(400);//400ms 딜레이
    k -=2;//k값에 2를 뺍니다.
  }
}
//led 점등패턴3번 서브루틴
void style_3(void)
{
  unsigned char j,k;// j와 k 변수를 선언합니다.
  k=5;//k변수를 5로 초기화합니다.
  for(j=1;j<=3;j++)
  {
    digitalWrite(j,HIGH);//LED 점등
    digitalWrite(j+k,HIGH);//LED 점등
    delay(400);//400ms 딜레이
    digitalWrite(j,LOW);//LED 소등
    digitalWrite(j+k,LOW);//LED 소등
    k -=2;//k값에 2를 더합니다.
  }
  k=3;//k변수를 3으로 초기화합니다.
  for(j=2;j>=1;j--)
  {   
    digitalWrite(j,HIGH);//LED 점등
    digitalWrite(j+k,HIGH);//LED 점등
    delay(400);//400ms 딜레이
    digitalWrite(j,LOW);//LED 소등
    digitalWrite(j+k,LOW);//LED 소등
    k +=2;//k값에 2를 뺍니다.
  } 
}
void setup()
{ 
  unsigned char i;
  for(i=1;i<=6;i++)//디지털IO 1~6번까지 출력모드로 설정합니다.
    pinMode(i,OUTPUT);//i번째 핀을 출력모드로 설정합니다.
}
void loop()
{   
  style_1();//led 점등패턴1번
  flash();//점멸
  style_2();//led 점등패턴2번
  flash();//점멸
  style_3();//led 점등패턴3번
  flash();//점멸
}

 

아래는 소스코드2 실행한 모습입니다.