아래의 아두이노 코딩-45: LED barGraph 예제에서 현재 빵판에 10개의 LED가 설치되어 있다.
https://steemit.com/kr/@codingart/45-led-bargraph
이 중에서 하나씩 움직여 나가는 순으로 각각의 LED를 ON OFF 할 수 있도록 코딩을 수정해보자. 하나의 LED ON OFF 후 delay를 10 ms 로 주면 파도 타는 느낌을 볼 수 있을 것이다. 좀 속도를 늦추어 시간 지연을 50 ms로 주기로 한다.
아울러 for loop 기법에 의해 LED ON OFF를 하나씩이 아나라 연이어 두 개를 추가하기로 하자. 그런 경우 시각적으로 3개의 LED 가 ON OFF 되면서 파도를 타는 것처럼 움직이는 것을 관찰할 수 있다.
barGraph 예제의 배선은 그대로 이용하기로 한다. 하지만 가변저항을 사용한 아날로그 입력 부분은 사용하지 않는다.
2번 디지털 핀부터 11번 핀까지는 배열 즉 어레이 pinLED[]를 사용하여 지정한다. 어레이를 사용하면 for loop 기법을 사용하여 코드를 컴팩트하게 짧게 할 수 있는 이점이 있다.
loop()문에서 for loop 기법을 사용하여 하나씩 i 번째 LED를 ON 후 delay 하고 OFF 후 delay 시킨다.
여기에 추가하여 if 제어문을 사용하여 i+1, i+2 번째 LED를 ON 시키게 되면 3개의 LED 가 움직여 나가는 것을 볼 수 있을 것이다.
다음의 동영상을 보도록 하자. 뭔가 다이나믹한 LED 디스플레이와 아두이노 음악 연주를 합하여 작품을 구상해 보자.
//bar_Graph_LED_01
int pinLED[] ={2,3,4,5,6,7,8,9,10,11};
int i;
void setup() {
for( i = 0; i<10; i++ ) {
pinMode(pinLED[i],OUTPUT);//10개의 LED 단체로 출력 모드 선언
}
}
void loop() {
for( i = 0; i<10; i++ ) {
digitalWrite(pinLED[i],HIGH);
if( i<8 ) {
digitalWrite(pinLED[i+1],HIGH);
digitalWrite(pinLED[i+2],HIGH);
}
delay(50);
digitalWrite(pinLED[i],LOW);
delay(50);
}
}//끝