최근 수정 시각 : 2024-08-22 10:12:24

Arduino/소프트웨어 개발 환경

파일:상위 문서 아이콘.svg   상위 문서: Arduino
1. 개요2. 설치3. 버전
3.1. 00xx3.2. 1.0.x3.3. 1.5.x 베타
3.3.1. 1.53.3.2. 1.5.8
3.4. 1.6.x
3.4.1. 1.6rc13.4.2. 1.63.4.3. 1.6.7
3.5. 1.8.x
3.5.1. 1.8.03.5.2. 1.8.13.5.3. 1.8.23.5.4. 1.8.3
3.6. 2.0.x
3.6.1. 2.0.0
4. 문법
4.1. 예제4.2. 무한 루프
5. 시리얼 통신
5.1. 통신 포트
6. 관련 문서

1. 개요

아두이노 개발환경(Arduino IDE) 또는 아두이노(이 경우 하드웨어가 아닌 소프트웨어를 가리킨다)의 경우, Processing에서 제공하는 IDE와 90% 이상 동일한 인터페이스를 하고 있다. [1]

2. 설치

운영체제 설치 지원[2]
MS윈도즈 Windows MSI installer 및 Windows ZIP file
리눅스 Linux AppImage 64 bits (X86-64) 및 Linux ZIP file 64 bits (X86-64)
맥OS macOS Intel(64 bits) 및 macOS Apple Silicon 지원
데비안 계열 및 우분투는 APT 자동설치를 지원한다.
sudo apt-get install arduino

3. 버전

3.1. 00xx

2005년 8월 25일 아두이노 IDE의 첫 버전인 0001이 릴리즈되었다. 특징이라면 Processing의 전처리기(Preprocessor)가 내장되어 있었으나 사용하지 않았다 카더라.

0013 릴리즈는 현재 구할 수 있는 가장 오래된 버전이다. delay() 함수의 전달인자가 밀리초로 바뀌었고, ATMega328에 대한 지원이 추가되었다.

2011년 11월 9일 0023 릴리즈를 마지막으로 아두이노 00xx는 지원이 끊기게 되었다. R3 보드들의 INF 파일들이 추가되었고, optiboot 버전이 4.4로 업데이트되었다.

3.2. 1.0.x

2011년 11월 30일에는 아두이노 1.x의 첫 번째 버전인 1.0이 릴리즈되었다. 변경점은 파일 확장자가 .pde에서 .ino로 변경되었고, IDE의 밑에 현재 선택된 보드와 시리얼 포트가 표시되게 바뀌었다. 또 컴파일과 업로드 중에 상태 진행바(progress bar)가 표시되고, 시리얼과 I2C의 문법이 전반적으로 바뀌었다. 아두이노 미니 328이 보드 목록에 포함되었고, 윈도우 드라이버가 추가되었다. r3 보드(Uno, Mega 2560, Mega ADK)를 위한 ATMega16U2 펌웨어가 내장되어 있다.
아두이노 API가 선언된 헤더 파일이 WProgram.h에서 Arduino.h로 바뀌었다. 이에 따라 라이브러리를 작성할 때 00xx와 1.x 모두 호환되게 하려면
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
이 구문을 추가해야 한다.
1.0.1 버전부터는 다국어가 지원된다. 그리고 이 중에는 한국어도 포함되어 있어 초심자들의 접근이 더욱 쉬워졌다. pinMode() 함수에 INPUT_PULLUP 옵션이 추가되었다.
1.0.6 버전은 1.0.x 릴리즈의 마지막 버전이다. 안정 버전이라 현재도 많이 쓰인다.

3.3. 1.5.x 베타

3.3.1. 1.5

아두이노 ARM과 AVR 기반 보드를 동시에 사용할 수 있는 첫 버전이다.

3.3.2. 1.5.8

아두이노 IDE 베타 버전의 마지막 릴리즈이다. 물론 현재는 지원되지 않는다.

3.4. 1.6.x

3.4.1. 1.6rc1

스케치를 업로드하거나 컴파일할 때 자동으로 저장되도록 바뀌었다.

3.4.2. 1.6

번역이 업데이트되었다.

3.4.3. 1.6.7

2015년 12월 17일 배포되었다. 새로운 번역과, 새로운 빌더를 사용한다.

3.5. 1.8.x

3.5.1. 1.8.0

Arduino.ccArduino.org 양사 합의 후 나온 첫 통합 IDE라는 것이 가장 큰 특징이다. 두 사이트 중 어느 곳에서 다운로드를 받더라도 동일한 소프트웨어를 받게 된다. 2016년 12월 20일에 배포[3], 2016년 12월 23일에 발표되었다.

3.5.2. 1.8.1

양사 합의 후 나온 두 번째 IDE이다. 2017년 1월 9일에 배포되었다.

3.5.3. 1.8.2

2017년 3월 22일에 배포되었다.

3.5.4. 1.8.3

2017년 5월 31일에 배포되었다.

3.6. 2.0.x

Visual Studio Code를 기반으로 한 프로젝트인 Theia IDE를 토대로 개발된 IDE이며 1.x대 버전과는 완전히 다른 프로그램이라고 보아도 무방하다.

3.6.1. 2.0.0

2022년 9월 14일에 배포되었다.
스케치 편집 중 자동 완성 기능을 지원하며 다크모드 등 UI테마를 변경할 수 있게 되었다.
Arduino Cloud 기능을 지원한다.

4. 문법

프로그래밍 언어는 C언어에 기반한 객체지향언어의 일종이다. 문자열(String)과 같은 경우에서처럼 객체 내부 프로퍼티에 접근하는 방법인 점(.) 표기법을 사용할 수 있다. 게다가 C++의 template까지 지원하니 사실상 C++와 동일하지만, C++의 최신 버전 문법까지 Arduino IDE에 반영되어있지는 않으며 C++에서 제공하는 std 헤더와는 다른 자신만의 헤더 Arduino.h를 사용한다. 사실 C++ 헤더를 include하여 완전히 C++표준에 따라 개발할 수도 있지만, 메모리 제한이 빡빡한 마이크로 컨트롤러에 고급 기능들이 필요하지 않기 때문에 최적화된 Arduino.h를 따로 설계한 것이다. 결론적으로 "C++언어 초기 버전, 다만 C++ 헤더를 쓰지 않는" 상태로 개발을 하는 것이다.
프로그램을 담은 소스코드는 setup()과 loop()의 2개의 함수를 기본 골격으로 가지고 있다.
void setup() {
ㅤ// put your setup code here, to run once:

}

void loop() {
ㅤ// put your main code here, to run repeatedly:

}

4.1. 예제

파일 > 예제 > 01. Basics > Blink
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(3000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
3초간 불이 켜지고 1초간 불이 커진다. LED깜빡임(Blink) 예제.

4.2. 무한 루프

setup 1회 실행, 그리고 loop 함수 무한 반복이다. 데스크탑 컴퓨터의 일반적인 C언어 프로그래밍 기준으로 이 구조를 main 함수에 집어넣으면 다음과 같다.
int main() {
ㅤsetup();
ㅤwhile(true) {
ㅤㅤloop();
ㅤ}
ㅤreturn 0;
}
영원히 실행되지 않는 return
웬만하면 업로드(실행)하지 마세요!

5. 시리얼 통신

아두이노는 장치의 입출력 데이터를 모니터링할수있는 시리얼 포트의 시리얼모니터를 제공한다. 일반적으로 9600bps,57600bps 등 다양한 속도를 지원한다.
한편 아두이노 포럼에서는 이러한 시리얼모니터에 출력되는 데이터를 파일로 저장하기 위해 putty를 사용하는것이 제안된바있다.[4]
하지만 특정문자의 글자 깨짐 문장이 들어있는 경우를 제외하고는 전체 복사(copy) 및 붙여넣기를 지원하고 있다.

5.1. 통신 포트

일부 아두이노 호환보드의 경우 특히 CH340칩을 사용하는 경우 리눅스환경에서 시리얼포트가 잘 안잡히는 경우가 있다. /dev/ttyS0가 아니라 /dev/ttyUSB0가 떠야 여기로 잘 작동한다.

6. 관련 문서


[1] 다만 현재 여기에서 배포 중인 Arduino studio는 다르다. 이는 Processing의 파생 프로젝트였던 Wiring의 영향을 받은 것이다.[2] \[공식\] Arduino software Downloads https://www.arduino.cc/en/software[3] 릴리즈노트 참조[4] HOW TO EXPORT DATA from ARDUINO SERIAL MONITOR to a CSV or TXT FILE https://forum.arduino.cc/t/how-to-export-data-from-arduino-serial-monitor-to-a-csv-or-txt-file/354651/5