본문 바로가기
Arduino&RasberryPi/Arduino Uno

2. Arduino - Arduino 보드의 라이트 점멸

by Rosmary 2019. 10. 9.
728x90
반응형

 

Arduino를 컴퓨터와 연결하면, 오른쪽의 녹색 전원과 가운데 상단의 L 표시 옆의 라이트가 오랜지색으로 불이 들어온 것을 확인할 수 있다. 이는, Arduino에 업로드 된 코드 내용이 default(초기값)일 경우에 나타나는 현상이라고 보면 된다. 즉, void setup()과 void loop()의 중괄호 안에, 어떠한 코드도 없는 경우를 말한다. 이제 이 두 함수에 코드를 집어넣어, 보드의 특정 불이 반짝반짝 빛나도록 만들어 볼 예정이다.

 

 

* 참고:  Arduino 코드 언어는 C 기반의 언어다. 따라서 C를 어느 정도 알고 있다면 코딩 상에 발생하는 에러를 쉽게 해결할 수 있다. C를 잘 모르시는 분들이라면 기초 문법이라고 훑어보실 것을 추천한다. 

 

 

 

1. 보드 라이트와 핀

 

아두이노를 정면에서 바라보면, 상단에 1부터 13까지 숫자가 적힌 부분이 있다. 이를 Pin이라고 하는데, 이 pin을 통해 Arduino의 동작을 제어하게 된다. 

 

아두이노 좌측, L 라이트는 13번 핀에 의해 동작한다. 따라서, 13번 핀으로 전기 신호의 입출력을 조절할 수만 있다면, 보드의 L 라이트가 깜빡거리도록 만들 수 있다는 것이다.

 

L 라이트 밑에 TX와 RX라고 씌여진 라이트도 보이는데, TX는 1번 핀에 의해 작동된다(아마 Transmission의 약자가 아닐까 싶다). 따라서 핀 번호 1번으로 전기 신호의 입출력을 조절할 수 있다면 L 라이트가 아닌 TX 라이트가 깜빡거리게 된다.

 

* 필자는 메뉴얼이 따로 없어서 노가다로 이것저것 실험 중이다. RX 라이트는 어느 핀과 연결된 것인지는 아직 알아내지 못했고, 1번과 13번을 제외한 핀은 보드 라이트 출력을 직접적으로 조절해주는 것이 없는 듯 하다. 혹시나 다른 발견 정보가 있다면 추후 이 포스트에 추가할 예정이다.

 

 

2. 코딩 진행

 

(1) pinMode() 함수

 

void setup() 함수 안에는 pinMode()함수를 사용하여, 어떤 핀에서 입/출력을 조정할 것인지를 설정한다. 따라서 pinMode()함수에서 사용되는 인자는 '핀번호'와 '입/출력' 여부이다. 정리하자면 pinMode()함수는 아래와 같은 포맷을 가진다.

 

===========================

pinMode( #pin, 작동상태 )

===========================

 

#pin은 1부터 13까지의 숫자가 입력되며, 작동상태는 INPUT 및 OUTPUT 중 하나를 입력하면 된다.

 

전기 신호가 L라이트로 전달되는 것은 물론, 이 신호로 인해 불이 반짝거려야 - 출력되어야 - 하기 때문에, void setup()함수의 내부에 다음과 같은 코드를 작성해준다.

 

대/소문자를 구분해서 작성해야한다. 잘못 작성된 경우, 글자 색이 바뀌지 않는다.

 

(2). digitalWrite() 함수

 

어떤 핀으로 신호를 보낼지 결정했으니, 이 신호를 어떻게 반복적으로 보낼 것인가를 생각해야한다. 이는 void loop() 함수에 코드를 작성함으로써 진행할 수 있다. 

 

라이트에 불이 들어오게 하는 방법은 digitalWrite()라는 함수를 사용하는 것이다. 이 함수 역시, 필수 인자를 두 개 가지며, 하나는 '핀 번호', 또 다른 하나는 '전기 신호의 강도'이다. digitalWrite()함수의 포맷은 다음과 같다.

 

=============================

digitalWrite( '핀번호', '전기 신호의 강도' );

=============================

 

핀 번호는 앞에서 설명한 pinMode()함수와 마찬가지로, 숫자를 사용해 표시한다. 반면에, '전기 신호의 강도'는 HIGH와 LOW로 나타낸다.(이것 말고도 더 있는 것 같지만 우선 2개만 설명한다) 전기 신호가 강할 경우, 라이트에 불이 들어오며, 신호가 약하면 반대로 불이 꺼지게 된다.

 

*  일반적으로는 신호가 없는 경우에 불이 꺼져야하지만, 전자제품이라는 것이 작동을 위한 최소의 전기는 필요하기 때문에 약한 신호를 "라이트 꺼!!"라는 신호로 받아들이게 된다. 

 

다음과 같이 코딩을 진행하고 코드를 Arduino에 업로드하면, 13번 핀과 연결된 L 라이트에 들어왔던 불이 꺼지게 된다.

(업로드 방법은 뒤에서 설명한다)

 

 

(3). delay() 함수

 

우리는 불을 깜빡거리도록 만들려고 한다. 하지만, 위의 코드를 Arduino에 업로드 시켜 실행할 경우, 불이 깜빡거리는 것이 아니라 영원히 꺼져있게 된다.

 

 

그럼, 위의 사진과 같이, "digitalWrite(13, HIGH);" 라는 코드를 void loop()함수의 가장 아래에 위치시켜주면, 불이 깜빡거리지 않을까? 그렇지 않다. 왜냐하면 Arduino는 "digitalWrite(13, LOW);" 코드를 얼마나 오랫동안 지속시켜야 하는지 명령을 받지 못했다. 따라서, 13번 핀과 연결된 L 라이트는 지속적으로 불이 꺼져있게 된다. 

 

그럼, 해당 동작을 얼마동안만 지속하라는 함수는 무엇인가? 바로 delay() 함수다. 

 

delay() 함수는 함수의 특성 상, 필수 인자를 딱 하나만 가지게 된다. 바로 지속 시간인데, 이 지속시간은 밀리세컨드(ms)단위로 표시한다. 따라서 delay(1)이라고 작성할 경우, 0.001초만 동작을 진행하게 된다. 

 

이제 delay()함수를 digitalWrite() 함수 아래에 작성해보자. 필자는 0.1초는 불이 들어오도록, 0.9초는 불이 꺼지도록 코딩하려한다.

 

 

이제, L 라이트를 깜빡거리게 만들 코드는 전부 완성되었다.

 

 

 

3. Arduino에 업로드

 

업로드 방법은 크게 어렵지 않다. 코드가 전부 작성이 되었다면, 이 코드를 저장한 뒤(필자는 first_test라는 이름으로 파일을 저장했다), IDE 좌측 상단의 '오른쪽 화살표' 모양의 아이콘을 눌러주면 된다. 

 

 

업로드 전에, 코드에 이상이 없는지 확인하고 싶다면, 가장 좌측의 '체크'모양의 아이콘을 눌러주면 된다. 이 아이콘은 여러분들이 작성한 코드가 문법에 맞게 작성되었는지 확인하는 아이콘이며, 문법에 이상이 있을 경우, IDE 하단에 어느 코드에 문제가 있는지를 알려준다. 

 

마지막 줄에 세미콜론을 제거하고 확인 작업을 진행하자, 오류가 있음을 IDE가 알려준다.

 

Arduino에 업로드가 완료되면, 코드 내용에 맞게 Arduino 보드의 L 라이트가 점멸되는지 확인해보자. 아래와 같이 작동한다면 성공이다.

 

 

 

FIN.

반응형

댓글