아두이노 코딩 LED부터 켜보자.

 

요즘 사물인터넷에 대한 관심이 생기면서 뭐부터 어떻게 접해야 할지 몰라 알아보다가 아두이노라는 녀석을 알게 되었고 [아두이노 우노] 보드와 몇 가지 센서 및 모터 등을 구입했는데요. 어렸을 때 장난감을 갖고 놀던 게 취미였다면 이제는 그것들을 직접 만들어보고 더 나아가서는 우리 생활에 필요한 것들도 만들어보면서 사물인터넷에 한 발 다가가볼까 합니다.

 

아두이노 센서

 

당분간은 아두이노 코딩에 익숙해지기 위해서 기본적인 장치들 먼저 다루어야 하겠지만 멀게는 우리 생활에 꼭 필요한 새로운 발명품(?)도 만들어보고 싶은 게 시작하는 지금 단계에서 목적인데요. 일단은 취미로 아두이노를 갖고 놀면서 이 카테고리에 정리해볼까 하고 오늘은 그 첫 번째 과정으로 아두이노 코딩을 통해서 LED를 켜보는 예제를 만들어보려고 합니다.

 

 

이 예제를 만들기 위해서 필요한 준비물은...

 

준비물

 

대충 이 정도만 있으면 되지 않을까 싶네요. '아두이노 보드'와 '빵 판' 그리고 'LED' 및 '저항'과 '점퍼 케이블'입니다. 이것들을 연결해서 회로부터 만들어볼게요.

 

2. 회로 만들기

 

회로

 

회로는 LED의 짧은 다리 쪽은 음극에 해당하는 GND와 연결을 했고 긴 다리는 양극에 해당하며 디지털 신호를 보낼 핀 D8에 연결을 했는데 5V의 아두이노 기본 전압이 LED에 바로 들어가면 손상될 수 있기 때문에 저항을 그 사이에 연결했습니다.

 

3. 아두이노 코딩

 

이제 이 회로를 컨트롤할 아두이노 코딩을 해보겠습니다.

 

코딩

 

프로그램 언어를 조금이라도 접해보셨다면 그냥 딱 한눈에 들어오는 내용의 코딩일 겁니다. 그래도 그 내용을 대충 둘러보자면 일단 LED를 연결한 디지털 핀 8번을 int형 변수 led에 할당을 했습니다. 꼭 변수에 저장하지 않고 코드에서 직접 숫자를 입력해도 되겠지만... 나중에 복잡한 코드에서는 그 방법이 한계에 부딪칠 거 같으니 처음부터 습관을 들이기 위해서 변수에 할당을 했구요.

 

아두이노가 켜지면서 딱 한 번 실행되는 초기 설정 함수인 setup()에서는 핀 모드를 'OUTPUT'로 하고 있는데 아두이노 보드에서 디지털 신호를 밖으로 쏴주기 때문입니다. 만약 외부 센서에서 아두이노로 데이터를 읽어 올 때는 반대로 INPUT으로 설정을 해줘야겠죠? OUT과 IN은 데이터의 방향이라고 생각하면 쉬울 거 같네요.

 

 

다음은 loop() 함수인데요. 이건 아두이노가 켜져 있는 동안에는 계속 반복해서 실행이 되는 함수로 digitalWrite() 함수를 호출하면서 두 개의 인자를 던져주고 있는데 그 첫 번째는 LED가 연결된 8번 핀이구요. 두 번째는 전압을 보내라는 'HIGH' 상수입니다. 그리고 delay() 함수의 값으로 1000을 전달해서 1초 후에 다시 한 번 digitalWrite() 함수의 인자로 8번 핀과 이번에는 'LOW'를 전달하고 있는데요. HIGH는 전압을 보내도록 하고 LOW는 차단하는 역할을 합니다. 즉, 켜고 끄고를 이 녀석들이 담당하는 것이고 계속 반복해서 실행이 되기 때문에 우리가 아두이노 전원을 차단하기 전에는 LED가 1초 간격으로 켜졌다 꺼졌다를 반복하게 될 것입니다.

 

4. 아두이노 LED 결과 확인

 

이제 이 소스 코드를 아두이노 보드에 업로드 한 후 제가 원하는 대로 LED가 1초 간격으로 깜빡이는지 확인해보겠습니다.

 

 

이처럼 LED가 1초 간격으로 점등이 되는 걸 확인할 수 있네요. 영상에서 중간에 제가 아두이노의 전원을 차단했다가 다시 연결해도 같은 내용이 실행되는 걸 확인할 수 있죠? 이처럼 한 번 업로드한 프로그램은 다른 소스 코드를 올리기 전까지는 아두이노 장치 속에 계속 머물고 있으면서 전원만 들어오면 실행한다고 생각하면 될 것 같습니다.

 

이렇게 해서 처음 접하는 아두이노 코딩에서 가장 기본이라고 할 수 있는 LED를 켜봤는데요. 그동안 컴퓨터 모니터 안에서 실행되는 프로그램만 보다가 눈앞에서 뭔가 제어가 되니까 확실히 재미가 있네요. 암튼 앞으로 계속 다양한 녀석들을 활용해서 아두이노를 익혀보기로 하고 오늘은 여기서 마치겠습니다.


Leave a comment
Your name *
Your PassWord *
Comment *
COMMENT