본문 바로가기
아두이노

아두이노 LED 제어하기

by 이지이지(EGEasy) 2021. 8. 9.

안녕하세요. 이지이지입니다.

이번 포스팅에서는 거의 모든 아두이노 자료에서 처음 예제로 다루고 있는

LED를 제어하는 방법에 대해 알아보도록 하겠습니다.

 

이번 포스팅에서도 철저히 초보자의 관점에서 풀어나가도록 하겠습니다.

 

시작전에! LED에서 다리가 긴 것(휘어진 것)은 +(플러스), 다리가 짧은 것은 -(마이너스) 입니다.

 

LED의 극

 

    LED 1개 제어하기

먼저 LED 하나를 1초마다 깜빡이도록 회로를 구성해보도록 하겠습니다.

 

★ 필요 부품 ★

- LED: 1개

- 220Ω 저항: 1개

- 수수 점퍼선: 2개

 

※ 참고로 전 처음에 점퍼선 색깔에 무슨 의미가 있을까 싶었는데...

점퍼선의 색깔에는 의미가 있을 수도 있지만, 아무 색이나 써도 상관 없습니다.

 

LED 한 개 제어 회로도

 

★ 회로 구성 ★

1. LED를 적당한 위치에 꽂아줍니다.

2. 저항의 한 쪽 끝을 LED의 플러스(+)와 같은 라인에 꽂아줍니다.

3. 저항의 다른 한 쪽 끝과 아두이노 보드의 8번 핀을 수수 점퍼선으로 연결합니다.

※ 0~13번 핀을 사용할 수 있습니다. 원하는 번호에 연결하면 됩니다.

4. LED의 마이너스(-)와 아두이노 보드의 GND를 수수 점퍼선으로 연결합니다.

※ 아두이노 우노 R3 보드에는 GND가 세 곳 있습니다. 원하는 곳에 연결하면 됩니다.

 

★ 코딩 ★

※ 첫 번째 실습 예제라 코드를 조금 상세하게 설명드리겠습니다.

void setup() // 1.
{
  pinMode(8, OUTPUT);  // 2. 8번 핀을 출력으로 설정합니다.
}

void loop() // 3.
{
  digitalWrite(8, HIGH); // 4. HIGH: 전압이 5V(아두이노 보드 전압)로 설정됩니다.
  delay(1000); // 5. 1000ms동안 대기합니다. 1000ms=1초
  digitalWrite(8, LOW); // 6. LOW: 전압이 0V로 설정됩니다.
  delay(1000);
}

 

 

 

1. setup()

setup() 함수는 스케치가 시작될 때 호출됩니다. 

변수나 핀 모드 설정, 사용할 라이브러리를 설정합니다. 

setup() 함수는 전원이 공급될 때, 또는 아두이노 보드에서 리셋을 눌렀을 때, 한 번만 실행됩니다.

 

2. pinMode(8, OUTPUT): 8번 핀을 출력으로 설정합니다.

pinMode는 pinMode(pin 넘버, mode)로 설정합니다.

mode에는 INPUT(입력), OUTPUT(출력), INPUT_PULLUP(풀업 저항)이 있습니다.

 

3. void loop()

loop() 함수는 계속해서 반복되는 함수로 실제로 아두이노 보드가 명령을 처리하는 함수입니다.

 

4 & 6. digitalWrite(8, HIGH): 8번 핀의 전압을 아두이노 보드의 공급 전원(우노 R3의 경우 5V)으로 설정합니다.

LOW일 경우에는 전압을 0V(ground)로 설정합니다.

digitalWrite는 digital(pin 넘버, value)로 설정합니다.

value는 HIGH 또는 LOW로 설정합니다.

 

5. delay(1000)

delay는 프로그램을 지연시키는 명령입니다.

숫자는 밀리세컨드 단위이며, 1000ms = 1초입니다.

 

 

    LED 3개 제어하기

이번에는 세 개의 LED를 제어해 보도록 하겠습니다.

하나당 1초씩 번갈아가며 깜빡이도록 하겠습니다.

 

★ 필요 부품 ★

- LED: 3개 (색이 다르면 더 구별하기 쉽겠죠?)

- 220Ω 저항: 3개

- 수수 점퍼선: 7개

 

LED 세 개 제어 회로도

 

 

★ 회로 구성 ★

1. 3개의 LED를 적당한 위치에 꽂습니다.

2. (각 LED 별로) 저항의 한 쪽 끝을 LED의 플러스(+)와 같은 라인에 꽂습니다.

3. 수수 점퍼선을 이용해 LED의 다른 한 쪽 끝을 아두이노 보드의 디지털입출력 핀과 연결합니다.

   (빨간색: 10, 노란색: 9, 파란색: 8 / 여러분이 원하는 핀에 꽂으시면 됩니다.)

4. 각 LED의 마이너스(-)와 버스 띠의 마이너스(-)를 수수 점퍼선으로 연결합니다.

5. 버스 띠의 마이너스(-)와 아두이노 보드의 GND를 수수 점퍼선으로 연결합니다.

※ 버스 띠(+, - 부분)는 위의 이미지로 보자면 가로로 모두 연결되어 있습니다.

그래서 5에서 하나의 점퍼 선만 GND로 연결하면 각각의 LED와 모두 연결되는 효과가 있는 것입니다. 

 

 

 

 

★ 코딩 ★

 

void setup()
{
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop()
{
  digitalWrite(10, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(8, LOW);
  delay(1000);
  digitalWrite(10, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(8, LOW);
  delay(1000); 
  digitalWrite(10, LOW);
  digitalWrite(9, LOW);
  digitalWrite(8, HIGH);
  delay(1000);
}

 

 

    아두이노 전원(5V)을 통해 LED 1개 제어하기

제가 처음 아두이노를 공부하며 궁금했던 내용입니다.

'왜 아두이노 보드의 5V에 부품을 연결하지 않고, 디지털입출력 핀에 연결하는 거지?'

 

디지털입출력 핀은 외부로 0V 또는 5V를 내보내거나 받아오는 역할을 합니다.

외부로 5V를 내보내는 경우 LED가 켜지게 되는 것입니다.

 

그렇다면 LED를 5V에 연결하면?

LED를 출력으로 설정할 수 없어 HIGH또는 LOW 값을 내보낼 수 없기 때문에 그냥 항상 불빛이 들어오게 됩니다.

 

회로 구성만 보여드리도록 하겠습니다.

코딩 부분에는 아무것도 넣지 않아도 상시로 전원이 공급되기 때문에 LED가 계속 켜져있을 것입니다.

 

5V 전원 공급

 

 오늘 포스팅은 여기까지입니다.

여러분 스스로 다양하게 회로를 구성하고, 코딩해서 실습해보도록 하세요~~

댓글