반응형

 

 

 

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그램 비전공자에게는 감조차 오지 않는 영역이지만... 그래도 자주 사용하는 명령어 정도는 정확히 알아두는 게 좋을 듯하여 이번 포스팅을 기획하였습니다.

 

오늘은 아두이노 프로그램 명령어에 대해서 기본적인 몇 가지를 처음 시작하는 입장에서 이해하기 쉽게 풀어보도록 하겠습니다.

 


  • 아두이노 프로그래밍 언어 (C/C++)

아두이노 프로그래밍 언어는 기본적으로 C/C++을 기반으로 구성되어 있으며 코딩부터 compile 및 upload를 스케치(sketch: 통합개발환경 소프트웨어)를 통해서 이루어집니다. 그렇기 때문에 우선 스케치부터 설치하셔야 합니다. 스케치 설치방법은 링크 걸어두어요~ 참고 부탁드립니다.

 

 

아두이노(Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로..

it-g-house.tistory.com

스케치를 실행하면 다음과 같은 첫 화면을 볼 수 있습니다. 여기서 '//' 이후에 글들은 프로그램에 영향을 주지 않습니다. 즉, 설명이나 주석을 달 때 '//' 이후 글자를 적으면 됩니다. 

 

아두이노 스케치 첫화면

 

  • 아두이노 void 명령어

모든 프로그램이 그렇듯 일반적으로 위에서 아래로 내려가면서 순차적으로 명령어를 실행합니다. 스케치 화면을 보면 'void setup()' 명령어가 있는데 주석에도 설명되어 있듯이 프로그램 초기 셋업 코드를 위한 부분입니다. 프로그램이 진행될 때 필요한 세팅을 먼저 실행한다고 생각하시면 됩니다. 하드웨어 설정, 변수 설정 데이터 초기화 등에 관한 코드를 대괄호{ } 안에 적으면 됩니다. 세팅 후에 실질적으로 아두이노가 어떻게 동작하라는 내용은 'void loop()' 명령어의 대괄호{ } 안에 코딩하면 되는데 'loop' 단어 뜻 그대로 { } 안의 명령어가 계속 반복됩니다.

 

  • 기본적인 아두이노 명령어

자주 사용되는 기본적인 아두이노 명령어를 알아보고 실질적으로 예제를 통해 어떻게 사용되는지 살펴보겠습니다.

 

명령어 기능 사용법
  include 외부 라이브러리를 스케치 안에 포함할 때 사용 #include <라이브러리 파일명>
define 매크로 상수와 함수를 정의할 때 사용 #define 변수 상수(함수)
serial.begin 아두이노의 시리얼 통신(Serial communication)을 시작할 때 사용 Serial.begin(통신속도);
serial.print 아두이노 시리얼 통신의 데이터 값을 출력할 때 사용  Serial.print("출력내용");
delay 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용 delay(msec.);

 

 

 

1. include 

 

include 명령어는 라이브러리(사전에 코딩된 프로그램)를 스케치에서 사용할 때 필요합니다. 아두이노에서 사용하는 라이브러리는 대부분 '*. h' (헤더 파일)과 '*. cpp' (소스파일)로 구성되어 있는데 include명령을 통해서 헤더 파일을 불러와서 우리가 사용할 함수와 변수를 정의를 합니다. 사용할 때는 예로 #include<dht.h> 같은 형태가 됩니다. 만약 코드는 제대로 작성하였는데 라이브러리 파일이 없는 경우 컴파일(compile)할 때 "No such file or directory#include<dth.h>"라고 에러 메시지가 뜹니다.

 

2. define

 

define은 매크로 상수와 함수를 정의할 때 사용하는 명령어입니다. 사용 예는 '#define value 0' 라고 코딩하면 value라는 변수는 0으로 정의됩니다. 이렇게 value값을 정의해놓으면 프로그램상에서 다양하게 적용할 수 있습니다. 숫자 '0' 처럼 상수로 정의할 수 도 있고 함수로도 정의할 수 있는데 이 부분은 추후 프로그램 코딩할 때 구체적 사례를 포스팅하겠습니다.

 

3. serial.begin

 

serial.begin은 아두이노의 시리얼 통신(Serial communication)을 시작하라는 명령어입니다. 아두이노는 다양한 기기와 통신을 할 수 있는데 시리얼 통신을 사용합니다. 앞서 알아보았듯이 USB 케이블을 통해 전원 공급뿐만 아니라 스케치로 코딩된 프로그램을 PC로부터 아두이노로 업로드하기 때문에 PC와 통신도 가능합니다. 사용 예로 Serial.begin(9600);라고 적어주면 됩니다. 여기서 괄호( )안의 숫자는 통신속도를 말하는데 보레이트(Baud Rate)라고 하며 단위는 bps (bit per second)로 1초간 전송되는 신호 수를 정할 수 있습니다. 보레이트 값이 높을수록 속도가 빠르지만 송수신 속도가 같아야 데이터를 수신하는데 문제가 없습니다.

 

4. serial.print (serial.println)

 

serial.print (serial.println)는 시리얼 통신의 데이터를 출력할 때 사용합니다. 스케치에서 지원하는 시리얼 모니터(Serial Monitor)에 출력 값을 확인할 수 있는데 데이터 값을 print 하라는 명령어입니다.

 

스케치(sketch) 시리얼 모니터(Serial Monitor)

사용 예로 아래와 같이 스케치에 코딩하여 아두이노로 업로드(Upload)하면 시리얼 모니터에 "hello world!!"라고 출력되는 것을 확인할 수 있습니다. 이 때 주의하실 점은 void loop() 명령어에 아무 내용이 없더라도 지우면 compile이 되지 않더라고요.. 뮤뮤 'void setup()'과 'void loop()' 명령어 형식은 기본적으로 유지되어야 프로그램이 정상적으로 작동합니다.

 

아두이노(Arduino) 시리얼 통신으로 "hellow world!!" 송신하기
아두이노(Arduino) 시리얼 모니터 "hello world!!" 출력하기

시리얼 모니터에서는 보레이트를 Serial.begin(9600);에서 설정한 속도와 같은 값을 설정해야 정상적으로 "hello world!!"가 출력됩니다.

 

이번에는 serial.print("hello world!!");를 'void loop()'에 넣어보겠습니다. 앞서 설명했듯이 void loop에서는 명령어가 반복되기 때문에 시리얼 모니터에 "hello world!!"가 무한히 출력되는 것을 볼 수 있습니다.

 

아두이노(Arduino) 시리얼 통신으로 "hellow world!!" 반복 송신하기
아두이노(Arduino) 시리얼 모니터 "hello world!!" 반복 출력하기

여기서 serial.print와 serial.println의 차이를 알 수 있습니다. 다시 'void loop()' serial.println("hello world!!");이라고 적고 아두이노에 업로드하면 시리얼 모니터에 아래와 같이 한칸 아랫줄에 "hello world!!"가 계속 출력 되는 것 볼 수 있습니다. 이처럼 serial.println은 출력 후 한칸 아랫 줄로 바꿔라는 명령어가 포함되어 있습니다. 참고로 serial.print("hello world!!\n")이라고 해도 같은 기능을 합니다. '\n'가 한 칸 아랫 줄로 이동하는 기능이기 때문입니다. (워드나 텍스트에서 글자치고 한줄 바꿀 때 엔터와 같은 기능이라고 생각하면 이해가 빠를 듯 하네요^^) 

 

아두이노(Arduino) 시리얼 모니터 "hello world!!" serial.println 출력하기

 

5. delay

 

delay명령어는 영어 뜻 그대로 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용합니다. 사용 예로 'delay(1000);'이라고 적어주면 1,000 ms 즉 1초 동안 delay 후 프로그램이 진행됩니다.

 


여기까지 아두이노(Arduino) 스케치를 통한 기본적인 프로그램 명령어에 대해 알아보았습니다. 오늘 알아본 명령어는 자주 사용되어서 금방 익숙해질 겁니다. 프로젝트를 진행하면서 새로운 명령어를 하나씩 배워보도록 하겠습니다. 

 

다음 포스팅에는 앞서 진행한 온습도 센서(Temperature and Humidity sensor) 사용법에서 코딩한 프로그램을 하나씩 파헤쳐보고 온습도 값을 시리얼 모니터에 출력하는 방법을 알아보겠습니다.

궁금하신거나 필요하신 내용 있으면 언제든지 댓글에 남겨주세요 ^^

 

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하..

it-g-house.tistory.com

void setup(){
Serial.begin(9600);
Serial.print("Hello World!!");
}

void loop(){
}
void setup() {
Serial.begin(9600);
}

void loop(){
Serial.println("hello world!!");
}
void setup() {
Serial.begin(9600);
}

void loop(){
Serial.print("hello world!!\n");
}

 

 

 

반응형

+ Recent posts