이번 시간에는 프로그래밍에서 정말 중요한 개념인 함수(function)에 대해 배워볼 거예요. 아두이노에서는 이미 setup()
과 loop()
를 써봤죠? 사실 이것도 함수예요!
함수는 특정한 일을 처리하는 코드의 묶음이에요. 자주 반복되는 일을 함수로 만들어두면 코드가 훨씬 깔끔해지고 이해하기 쉬워져요.
왜 함수가 필요할까요?
예를 들어, LED를 3번 깜빡이는 코드를 여러 번 써야 한다면 어떻게 할까요? 매번 코드를 복사해서 붙여 넣는 것보다는, ‘LED 깜빡이기’라는 이름의 함수를 만들어두면 간단하게 해결돼요.
함수 만드는 방법
함수는 아래처럼 생겼어요:
void 함수이름() {
// 여기에 함수가 하는 일을 적어요
}
여기서 void
는 “돌려주는 값이 없다”는 뜻이고, 함수이름
은 내가 정하는 이름이에요.
예시: LED 켜기 함수
void turnOnLED() {
digitalWrite(13, HIGH);
}
이 함수는 13번 핀에 연결된 LED를 켜는 일을 해요. turnOnLED();
라고 쓰면 이 코드가 실행돼요.
함수를 사용하는 전체 예제
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
blinkLED(); // 함수를 호출해요
delay(2000); // 2초 쉬기
}
void blinkLED() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
blinkLED()라는 함수를 만들어 LED를 한 번 깜빡이게 하고, loop() 안에서 그 함수를 호출해서 계속 실행하게 만든 거예요.
함수의 장점
- 코드를 반복해서 쓰지 않아도 돼요.
- 코드를 읽기 쉽게 만들어요.
- 여러 부분에서 재사용 가능해요.
- 버그가 생겨도 함수 안만 고치면 돼요!
함수 이름 짓는 팁
- 동작을 설명하는 이름이 좋아요. 예:
blinkLED()
,readSensor()
- 띄어쓰기는 안 되니
camelCase
또는_
를 써요. 예:turnOnLed()
,turn_on_led()
매개변수가 있는 함수 (조금 심화)
조금 더 나아가면 함수에 값을 전달해서 더 유용하게 만들 수도 있어요. 이걸 매개변수(parameter)라고 해요.
void blinkNTimes(int count) {
for (int i = 0; i < count; i++) {
digitalWrite(13, HIGH);
delay(300);
digitalWrite(13, LOW);
delay(300);
}
}
이제 blinkNTimes(5);
라고 쓰면 LED가 5번 깜빡여요!
함수는 어떻게 실행되나요?
함수는 만들기만 해서는 실행되지 않아요. 함수를 '호출(calling)'해야 실제로 실행돼요. 호출은 함수 이름 뒤에 괄호 ()
를 붙여서 해요.
turnOnLED(); // 함수 실행!
실습 아이디어
- LED를 켜고 끄는 함수를 각각 만들어보기
- 버튼을 누르면 특정 함수가 실행되게 해 보기
- 센서값을 읽고 출력하는 함수를 만들어보기
마무리하며
이번 글에서는 함수를 만드는 방법과 사용하는 이유를 배웠어요. 앞으로는 복잡한 코드도 함수를 잘 활용하면 정리된 구조로 쉽게 작성할 수 있어요.
다음 시간에는 아두이노에서 아주 자주 쓰이는 delay() 함수의 정확한 의미와 활용법에 대해 자세히 배워볼 거예요!