아두이노 개발환경
 


a. 컴파일 버튼 : 소스코드 편집기에 있는 내용을 컴파일한다.  소스코드에 문법적인, 구조적인 에러가 없는지 확인하여 메시지 영역에 표시된다.

b.업로드 버튼 : 컴파일 + 업로드를 일괄작업 실행한다. 소스를 컴파일해서 아두이노에   올려주는 과정까지 이 버튼 하나로 실핸된다. 소스코드에 문제가 있거나 아두이노와의 USB 연결에 문제가 있거나 업로드 과정에 문제가 있는 경우 메세지 영역에 표시된다.

c.시리얼 모니터 버튼 : 이버튼을 누르면 별도의 시리얼모니터 창이 표시된다.  USB로 PC 와 연결된 상태로 아두이노가 동작하면 아두이노에서 PC로 메시지를 보낼 수 있는데, 이 Serial Monitor를 통해 그 메시지를 확인할 수 있으므로 보통 디버깅 용도로 사용한다.

d.소스코드 편집기 : 아두이노 소스코드를 일력하고 편집하는 영역.

e.메시지 영역 : 아두이노 개발환경을 사용하면서 발생하는 알림 메시지나 컴파일, 업로드 결과 등등 메시지가 표시되는 영역.

 

아두이노 프로그래밍 언어

 

아두이노에서는 C 언어를 사용한다.  기본적으로 C언어 작성문법이 그대로 적용되므로 여기에서는 아두이노용으로 추가된 함수나 아두이노에서 다른 부분에 대한 설명만을 한다. 

따라서 C언어에 대해 기본지식이 없는 사람은 다른 책자나 다음 링크된 자료 등으로 C언어 기본문법에 대한 사전학습이 필요하다.  
http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf
 

1. 아두이노에서의 DATA TYPE 
 1) HIGH/LOW : 입출력핀을 통해 전류의 흐름을 제어할 때 가해지는 전압을 지정하기 위한  값으로서 HIGH는 5Volt를 의미하며 LOW는 0Volt를 의미한다.

 

2) int : 정수를 의미하는 것은 일반적인 C언어와 같으나,  아두이노에서는 -32,768 ~ 32767까지 범위의 숫자만 사용할 수 있고 더 큰 정수를 사용하고자 할 경우에는 long 타입을 사용 해야 한다는 것이 유의해야 한다. 예를 들어 int 타입 변수의 현재 값이 32,767인데 여기에 1을 더하면 -32,768이 되어버리므로 프로그램 작동이 엉망이 되어 버릴 수 있다.

 

3) TRUE/FALSE : 조건문 등에서 사용하기 위한 상수로서 TRUE는 1, FALSE는 0 값이 사용되는 것으로 되어 있으나 실제로는 0이면 FALSE, 기타 모든 값은 TRUE로 판정된다.
 

 2. 핀단자를 통해 연결되는 부속장치들을 제어하기 위한 함수. 

1) pinMode(pin,mode) :  pin에 지정하는 번호의 핀을 지정하는 mode(INPUT또는OUTPUT)로 사용하겠다고 선언한다. 예를 들어 pinMode(5,OUTPUT)하면 디지털 5번핀을 출력용으로 사용하겠다는 의미이다.

digitalRead(pin)  : pin에 지정된 디지털핀으로 입력되는 신호값을 읽어 들인다.  결과값은 HIGH (5V) 또는 LOW( 0V) 둘 중 하나의 값인데, 3V를 기준으로 이보다 크면 HIGH값으로, 낮으면 LOW값으로 판정된다.  
 
2) digitalWrite(pin,value) : pin에 지정된 번호의 핀에 value(HIGH 또는 LOW) 값을 출력하라는 함수이다. 즉 digitalWrite(3,HIGH) 를 실행시키면 디지털 3번핀에 5V 전압 전류가 흐르게  된다. 

 

3)analogRead(pin)  : pin에 지정된 아나로그핀으로 입력되는 신호값을 읽어 들인다. 디지털 신호값은 HIGH 또는 LOW 둘중 하나 이지만 아날로그핀에서는 이를 세분하여 0 ~ 1023까지의 숫자로 구분해 준다. 따라서 ON/OFF 등 단순한 구분이 아닌 스피커볼륨의 크기나  각종 센서들의 저항값을 세밀하게 구분할 때 등에 사용할 수 있다.  

 

4) analogWrite(pin,value) :  함수이름은 아날로그이지만 디지털핀에 출력하는 함수이다. 단  아날로그처럼 세분된 값을 출력하기 위해 PWM방식 (Pulse Width Modulation:  전압은  동일하되 출력되는 시간 간격을 조절하여 전체적인 출력량을 조절하는 방식)으로 출력한다. 출력량을 조절하여 출력할 수 있으므로  LED전구의 밝기를 조절하거나 모터의 동작을 제어하기 위한 용도로 활용할 수 있는데, 아두이노나노의 경우 3, 5, 6, 9, 10, 11번핀 총 6개 핀만 이런 용도로 사용할 수 있다.


3. 개발과정에서 디버깅용으로 활용가능한 함수. 

Serial.begin( rate)  : rate로 지정하는 속도로 통신을 시작하겠다는 의미이다. 기본적으로 디지털핀 0번으로 수신, 1번으로 송신하는 방식인데 아누이노가 USB를 통해 PC에 열결되어 있으면 PC와의 통신을 의미하며 앞페이지의 시리얼통신 모니터를 통해 송수신내용을 확인할 수 있다. 단 통신하는 양측은 속도가 동일해야 하므로 이 함수로 지정하는 속도와 동일한  값을 PC의 시리얼모니터의 속도로 지정해 주어야 한다.

 

Serial.print( data ) 시리얼통신으로 data값을 전송하는 명령이다. 전송된 값은 PC의 시리얼모니터 영역에 표시므로 이 함수를 이용하여 프로그램의 작동 상황을 모니터링하는 용도로 사용할 수 있다. 즉 아두이노 프로그램이 동작중 어떤 변수의 현재값을 알고 싶을때 이 함수를 이용하여 보내면 PC의 시리얼모니터에 표시되므로 보고 확인할 수 있다.  print문 대신 println문을 사용하면 화면표시 후 줄바꿈까지 실행되어 보기 편하게 표시된다

 

첫 프로그램 실행해 보기
 


1. 위 그림처럼 [파일 - 예제 - 01.Basics - Blink] 를 선택한다. 그러면 소소코드 편집기에 새로운 프로그램 소스코드가 불려져 온다.

 

 

2. USB케이블로 아두이노 나노를 연결하고 [툴 - 포트] 영역에 새로 표시되는 포트를 선택한다.

 

3. [업로드] 버튼을 클릭하면 컴파일 및 업로드 과정이 진행되고 잠시후에 메세지영역에 완료되었다는 메세지가 표시되고 작동이 시작된다.  

즉, 아두이노나노 보드에 있는 붉은색 LED가 1초간격으로 깜박이기 시작한다.

 

 

"avrdude:stk500_... "Error가 발생될 경우

 

사용하고 있는 아두이노 IDE와 아두이노 나노의 Bootloader 버전이 맞지 않아 발생되는 경우가 많다. 즉 아두이노IDE 는 최신 버전(1.8.X)을 다운 받아 사용하는데 아두이노 나노 모듈은 이전 버전용으로 출시된 것을 사용하는 경우에 프로그램 로드가 되지 않고 위와 같은 에러가 발샌된다. 이때에는 다음과 같이 프로세서 메뉴에서 ATmega329P 대신에 ATmega328P(Old Bootloader)를 선택하고 업로드 작업을 다시 해보도록 한다.

 

 

 

첫 프로그램에 대한 설명
 


아두이노 프로그램은 기본적으로 setup함수(1~4 line), loop 함수(6~12line) 두개의 함수로 구성된다.

- setup 함수 : 아두이노에 전원이 들어오거나 reset 되었을 때 처음 1회만 실행되는 함수.  따라서 아두이노가 가진 pin 들을 초기화하거나 소스코드내에서 사용되는 변수 및 각종 하드웨어를 초기화 하는 코드를 작성한다.
- loop 함수: setup이 실행된 후 무한반복해서 호출되는 함수이다. 즉, 아두이노가 작동되는 동안 계속해서 반복 수행할 일의 내용을 지정하는 동작코드를 작성한다.
- 전역변수나 라이브러리 헤더include문 등 선언사항은 setup함수 윗부분에 작성한다.

 

2 line : 디지털 13번핀을 OUTPUT모드로 선언한다. (13번핀은 보드상의 LED와 연결되어 있다. 즉 별도의 하드웨어 연결없이 즉석에서 예제를 실행해보기 위해 보드상의 LED를 출력용으로 사용하겠다는 의미이다.)

8 line : 13번핀으로 HIGH신호 즉 5V 전압을 출력하라는 명령. 실행되면 보드상의 붉은색 LED가 켜진다.

9 line :  1000밀리세컨드 즉 1초 동안 대기하라는 명령. 윗줄에서 LED가 켜진 상태로 1초간 대기하게 된다.

10~11 line : 13번 핀에 LOW신호(0V)출력, 즉 LED를 끄고 1초간 대기하라는 명령이다.

-loop()함수 안에 있는 8~11 line명령이 반복 실행되므로 LED는 1초간격으로 켜졌다가 꺼지는 동작을 계속 반복하게 된다.     

+ Recent posts