반복문은 주어진 조건이 참일 때 for문 안의 코드를 반복해서 실행시켜주는 방법입니다. 주로 똑같은 동작을 반복하거나 여러 동작을 순차적으로 동작시키기위해 사용합니다.
아두이노에서 사용되는 void loop도 무한 반복문입니다. setup문을 한번 동작한 다음에 loop문을 무한으로 동작시키는 방식인데 for문 같은 경우는 동작하기 위한 조건을 제시하며 사용합니다.
for문 사용 방법입니다.
for ( 초기 처리 부문; 조건 부문; 변화 처리 부문)
실제로 코드를 작성하고 동작을 확이하며 학습해보겠습니다.
저번시간에 실습했던 예제를 for문을 사용하는 코드로 변환하며 실습해보겠습니다.
const int sw = 7;
const int led_1 = 11;
const int led_2 = 12;
const int led_3 = 13;
void setup()
{
Serial.begin(9600);
pinMode(sw, INPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
}
void loop()
{
int value = digitalRead(sw);
// Serial.println(value); // 화면을 가려서 주석
if ( value == 1){ // 버튼을 누르면 if문 입장
Serial.println("Press Button");
for (int count=0;count<6;count++){
Serial.print(count);
Serial.println(" Second...");
if ( count < 2 ) { // count가 2 미만이면 실행
digitalWrite(led_1, HIGH);
//Serial.print("RED LED ON");
}
else if ( count < 4 ){ // count가 2 미만이 아니고 4미만이면 실행
digitalWrite(led_2, HIGH);
//Serial.print("GREEN LED ON");
}
else{
digitalWrite(led_3, HIGH); // count가 2 미만이 아니고 4미만도 아니면 실행
//Serial.print("BLUE LED ON");
}
delay(1000); // for문 마지막에 1초 딜레이
}
Serial.print("OUT for"); // for문을 나옴
}
delay(100);
}
구분별로 설명 해드리겠습니다.
for (int count=0;count<6;count++){
Serial.print(count);
Serial.println(" Second...");
int count=0 : 초기 for문을 제어하기위한 정수형 count 변수를 정의하고 0을 입력합니다. count<6 : count값이 6미만이라면 이 for문을 계속 동작시킵니다. count++ : for문이 한번 실행될 때마다 count값을 1증가시킵니다. 즉 이 반복문은 count값이 6미만이 아닐 때까지 0, 1, 2, 3, 4, 5일 때 동작하므로 총 6번 동작합니다.
if ( count < 2 ) { // count가 2 미만이면 실행
digitalWrite(led_1, HIGH);
//Serial.print("RED LED ON");
}
else if ( count < 4 ){ // count가 2 미만이 아니고 4미만이면 실행
digitalWrite(led_2, HIGH);
//Serial.print("GREEN LED ON");
}
else{
digitalWrite(led_3, HIGH); // count가 2 미만이 아니고 4미만도 아니면 실행
//Serial.print("BLUE LED ON");
}
저번 시간에 학습했던 if문을 숫자만 바꿔서 조건을 변경했습니다. 이처럼 조건 제어문은 어떻게 사용하느냐에따라 다양한 결과 초래할 수 있습니다.
반복문도 제어문과 마찬가지로 프로그램 개발시 필수적으로 등장하는 코딩 방법입니다. 더 좋은 프로그램을 만들기 위해서 제어문과 반복문을 잘 사용하는 능력이 요구됩니다.