IT를 품은 기계공학도

아름돌이의 아두이노 강좌 (2) :: 아두이노 첫걸음 LED 켜기 본문

아름돌이의 아두이노 강좌

아름돌이의 아두이노 강좌 (2) :: 아두이노 첫걸음 LED 켜기

아름돌이 2020. 11. 9. 02:54

※ 본 포스팅은 아두이노를 처음 시작하는 분들을 위하여 작성되었습니다.

2020/11/09 - [아름돌이의 아두이노 강좌] - 아름돌이의 아두이노 강좌 (1) :: 아두이노 소개 및 IDE 다운로드

 

아름돌이의 아두이노 강좌 (1) :: 아두이노 소개 및 IDE 다운로드

※ 본 포스팅은 아두이노를 처음 시작하는 분들을 위하여 작성되었습니다. 아두이노란 무엇인가? 아두이노는 MCU(Micro Controller Unit)의 일종으로 입력을 받거나 내부적으로 연산하여 출력부로 나

ilovemecha.tistory.com

준비물

1. 아두이노

2. 점퍼케이블

3. 브레드보드

4. LED

준비물

아두이노에 코딩을 하기 전에

저번 포스팅 때 아두이노가 어떤 역할을 하는지 이해하고 IDE를 다운로드하는 것까지 이해하였습니다. 이번 시간에는 아두이노를 이용하여 LED를 켜보는 실습을 해보도록 하겠습니다.

 

우선 IDE는 C++라는 언어를 통해 프로그래밍을 해야 합니다. IDE에서 제공하는 명령어들과 기본적인 C++을 이용한 프로그래밍에 대해서 짚고 넘어가려고 합니다.

 

1) 변수

변수(Variable)는 정보를 저장하는 메모리를 말하며 쉽게 말하면 정보를 저장해두는 그릇이라고 생각하면 됩니다.

그릇에 담아놓은 데이터는 우리가 언제든지 불러 사용할 수 있습니다.

변수는 다음과 같이 만들어 주면 됩니다.

먼저 자료형을 선언해줍니다. 자료형이란 담을 데이터를 정수로 받을지 실수로 받을지 문자로 받을지 결정해줍니다.

  • 정수형(Int)
  • 실수형(float)
  • 문자형(char)

많은 자료형이 있지만 우선 처음 시작하는 여러분이 알아야 할 기본적인 자료형은 위와 같이 3가지로 충분합니다.

 

다음으로는 변수명을 설정해줍니다. 변수명은 되도록 그 변수가 무슨 역할을 하는지 알려주는 변수명이 좋습니다. 예를 들어 내가 만든 변수가 햄버거의 개수를 저장한다고 치면 변수명을 Number_Hamburger와 같이 지어준다. 변수명은 누가 와서 봐도 이해할 수 있도록 짓을 수록 좋습니다.

 

그다음 '=' 다음에 데이터를 넣어 변수에 들어갈 데이터를 지정해주면 변수 선언이 끝나게 됩니다.

2) 모든 명령 뒤에는 세미콜론(;)이 붙어야 한다.

여러분이 변수를 선언하던 명령어를 쓰던 모든 행동 하나하나마다 세미콜론(;)을 붙여주어야 합니다. 안 그러면 컴퓨터는 어디까지가 명령인지 인식하지 못합니다.

3) 아두이노가 제공하는 명령어들

●pinMode(Pin_Number, Mode) : 아두이노 입출력 핀을 센서(눈, 귀)의 정보를 받을 입력 핀으로 쓸지, 액추에이터(손, 발)를 움직이게 명령하는 출력 핀으로 쓸지 정하는 명령어입니다.

pin_Number에는 2 ~ 13번을 넣을 수 있습니다.

Mode에는 우선 INPUT, OUTPUT 둘 중에 하나만 넣는 걸로 생각합니다. 입력 핀으로 쓰고 싶으면 INPUT을 출력 핀으로 쓰고 싶다면 OUTPUT을 써주면 됩니다.

예를 들어 내가 3번 핀을 입력으로 쓰고 싶다면 아래와 같이 프로그래밍하면 됩니다.

●digitalWrite(Pin_Number, Mode): 아두이노의 출력 핀에 내리는 명령입니다. 해당 출력 핀을 통해 출력을 내보낼지 안 보낼지 결정할 수 있습니다. 예를 들어 내가 4번 핀을 통해 액추에이터에 신호를 출력, 정지하고 싶다면 아래와 같이 프로그래밍하면 됩니다.

HIGH를 하면 출력이 나가게 되고 LOW를 하면 출력이 멈추게 됩니다.

 

●delay(ms) : delay 명령어는 해당 명령을 동작을 멈추고 기다리게 하는 함수입니다. 함수 안에는 ms(미리 세컨드) 단위의 시간을 입력해주어야 합니다. 예를 들어 내가 1초(1000미리 세컨드)를 멈추고 싶다면 아래와 같이 프로그래밍하면 됩니다.

4) 배선을 하자

아두이노(뇌)의 명령을 받아 움직이는 액추에이터가 이번 시간에는 LED에 해당됩니다. 여기서 주의할 점이 2가지 있습니다.

첫 번째, 우리가 사용하는 LED는 다리가 2개 있습니다. 한쪽이 나머지보다 긴 형태를 갖고 있습니다.

위 그림에서 보듯 긴 쪽이 +입니다. 전원부(5V)에 +를 연결하고 접지(GND)에 -를 연결해주면 됩니다.

 

두 번째, LED가 타지 않도록 저항도 같이 배선해 주어야 합니다. 우리가 흔히 학창 시절에 배우던 옴의 법칙을 기억하고 계시나요? 

우리가 출력 핀에서 내보내는 신호는 5V 전압을 내보냅니다. 하지만 우리의 LED는 2V전압에 20mA 정도의 전류에서 가장 안전하게 사용할 수 있습니다. LED에 출력을 그대로 주면 5V 전압이 걸리게 되고 LED는 과전류가 흘러 타버리게 됩니다. 그래서 LED에는 2V가 흐르고 저항을 통해 3V가 흐르도록 하되 이때 전류는 20mA가 흐르도록 하는 저항을 고르면 됩니다.

계산 결과 150옴 이상 써야 안전하다는 결과가 나왔네요. 안전하게 220옴짜리 저항을 사용하도록 하겠습니다.

 

다음은 브레드보드입니다. 브레드보드는 내부적으로 다음과 같이 구성되어있습니다.

한 선으로 이어진 구멍들은 서로 연결이 돼있습니다. 따라서 빨간 선에 있는 구멍 하나에 5V를 꽂으면 나머지 구멍도 5V가 흐르게 됩니다.

 

이제 본격적으로 배선을 해봅시다. 저는 11번 핀을 출력 핀으로 사용하여 LED를 켜보도록 하겠습니다.

배선도

이걸로 배선은 끝이 났습니다.

본격적인 코딩을 해보자!

이제 본격적으로 코딩을 하도록 하겠습니다. 우선 IDE를 보면 void Setup() 부분과 void Loop() 부분이 존재하는 것을 보실 수가 있습니다.

 

void Setup()에 넣은 명령어는 처음에 딱 한 번만 실행되고 이후에는 실행되지 않는 부분입니다. 그래서 이 부분에는 보통 핀을 출력 핀으로 설정할지 입력 핀으로 설정할지를 결정하게 됩니다

 

void Loop()에 넣은 명령어들은 계속 반복되게 됩니다. 따라서 우리가 아두이노에게 넣어줄 생각 부분들을 이쪽에 넣으면 됩니다.

 

이번 실습에서는 LED를 1초 동안 켰다가 1초동안 꺼지고 이 동작을 계속 반복하는 코드를 아두이노에게 넘겨보도록 합니다. 다음과 같이 코드를 넣어줍니다. 

1
2
3
4
5
6
7
8
9
10
11
12
void setup()
{
  pinMode(11, OUTPUT);
}
 
void loop()
{
  digitalWrite(11, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(11, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}
cs

그다음 아래 사진과 같이 보드를 본인이 사용하고 있는 보드로 맞춰줍니다. 
컴파일 버튼을 먼저 눌러 에러가 있는지 먼저 확인하고 업로드를 눌러 코드를 아두이노에게 넘겨줍니다.

결과

LED가 1초마다 깜빡거리는 것을 확인할 수 있습니다.

 

이번 시간에 아두이노를 이용하여 출력을 내보내는 실습을 해보았습니다. 아두이노 세상에 무사히 입문하신 것을 축하드립니다. 다음 포스팅 때 찾아뵙겠습니다.

Comments