아두이노 기본실습 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 실행한 모습입니다.
Topic: