아두이노 라이브러리

섬네일|300px|아두이노 통합 개발 환경에서 라이브러리 예. 위 부분은 개발도구 설치 시 초기설정된 것이고, DS1307RTC부터 아래는 'Add .ZIP Library'을 통해 외부의 공개 소스 라이브러리를 추가한 예이다.

**아두이노 라이브러리**는 오픈소스를 기반으로 한 아두이노 개발 환경의 한 부분으로, AVR Libs을 기반으로 한 C/C++의 표준함수 일부분과 AVR의 내장 모듈 및 외장의 각종 부가 장치를 제어하는 함수들로 구성되어 있다.

임베디드 시스템을 구성할 때, 마이크로컨트롤러 내부의 모듈 뿐만 아니라 다양한 외부의 부가 모듈 부품이 결합된다. 따라서 AVR 내부 모듈 함수와 외부의 부품을 제어하는 함수들이 섞여있다.
아두이노 통합 환경(IDE)을 설치하면 내장 된 몇가지 함수들이 존재한다. 그리고 개발도구에 자체 내장되지 않는 많은 라이브러리 들이 오픈소스 형태로 인터넷 상에 존재한다. 파일을 내려 받아 개발 도구에 등록하면 쉽게 이용할 수 있다.

외부의 공개소스로부터 받은 경우, 초기의 개발도구(버전 1.0.x)에서는 압축이 풀린 상태의 폴더를 기준으로 등록이 가능 했으나, 현재의 버전(버전 1.6.x 등)은 ZIP 파일 자체로 등록이 가능하다. 공개 소스의 예제가 있는 경우, 메뉴 '예제' 역시 동시에 사용할 수 있다.

## 아두이노 표준 라이브러리

아두이노 통합 개발 환경을 설치하면 자동으로 설치되는 라이브러리 함수들이다:

* EEPROM
::AVR 내부에 장착된 EEPROM에 데이터를 쓰거나 읽는다. 전원 인가없이도 데이터가 유지된다.
* Ethernet
::아두이노 이더넷 쉴드(Arduino Ethernet Shield)을 사용하여 인터넷에 접속한다.
* Firmata
::아두이노의 시리얼 통신을 통해, 다른 컴퓨터의 응용 프로그램과의 통신을 지원한다.
* GSM
::GSM 쉴드를 사용하여 GSM/GRPS 통신을 지원한다.
* LiquidCrystal
::문자 LCD을 위한 라이브러리이다.
* SD
::SD 카드에 데이터를 읽거나 쓴다.
* Servo
::서보 모터를 제어한다.
* SPI
::SPI(Serial Peripheral Interface)을 사용한 통신을 지원한다.
* SoftwareSerial
::AVR의 시리얼 통신 하드웨어 모듈을 사용하지 않고, 디지털 포트를 이용하여 소프트웨어 방법으로 시리얼을 지원한다. 아두이노의 버전1.0과 이후의 버전에서는 Mikal Hart에 의해 NewSoftSerial 라이브러리가 개선하여  별도로 존재한다.
* Stepper
::스텝핑 모터를 제어한다.
* TFT
::TFT 모니터에 글자, 이미지, 특정 모양을 그린다.
* WiFi
::아두이노 와이파이 쉴드를 사용하여 인터넷에 연결한다.
* Wire
::TWI/I2C(Two Wire Interface)을 사용한 데이터 전송 및 수신을 처리한다. 센서 등의 소자와 연결할 때 많이 사용한다.

### Due에서 사용하는 라이브러리
* Audio
* Scheduler

### Due와 Zero에서 사용하는 라이브러리
* USBHost

### Esplora에서 사용하는 라이브러리
* Esplora

### 아두이노 Robot 라이브러리
* Robot

### 아두이노 Yun 브릿지 라이브러리
* Bridge Library

### USB 라이브러리 (Leonardo, Micro, Due, Zero 그리고 Esplora)
* Keyboard 
* Mouse 

### 안드로이드 개발
* USB Host shield
* ProcessingArduinoAdkUsb

## 부가 라이브러리(인터넷 공개 소스)

현재 사용하는 기능 부품의 핵심 칩을 제어하기 위한 라이브러리 들이 많이 존재한다. 그리고 기타 여러 가지 기능적 함수들도 존재하므로 검색을 통해 찾아 사용하면 된다.  사이트 GitHub가 대표적으로 여러 가지 프로젝트가 존재한다.

### 통신 (네트워킹, 프로토콜)

* Messenger
::다른 컴퓨터와 문자 기반 메시지 처리를 지원한다.
* NewSoftSerial 
::SoftwareSerial 라이브러리 개선판이다.
* OneWire
::1-Wire 통신 프로토콜을 지원한다.
* PS2Keyboard
::PS2 키보드롤부터 문자를 읽는다.
* Simple Message System
::아두이노와 컴퓨터 사이에 간단한 메시지를 주고 받는다.
* SSerial2Mobile
::휴대폰을 사용하여 문자 메시지나 이메일을 보낸다. (소프트웨어 시리얼 상에 AT 커멘트를 사용)
* Webduino
::확장 웹 서버 라이브러리이다. (아두이노 이더넷 쉴드 이용)
* X10
::전기 AC 전원선을 이용하여 X10 신호를 보낸다.
* XBee
::XBees 통신을 지원한다. (API 모드)
* SerialControl
::다른 아두이노와 시리얼 통신을 통해 원격 제어를 지원한다.

### 센서

* Capacitive Sensing
:: 2개 이상의 핀의 센서를 사용한다. ADC 모듈이 하나이기 때문에 적절히 분배하여 동작하도록 조절한다.
* Debounce
::키 버튼 등의 디지털 입력에서 바운싱을 제거하여 입력한다.

### 표시장치 및 LED

* GFX
::표준 그래픽 루틴을 제공하는 기본 클래스 라이브러리이다. (Adafruit Industries에 의해)
* GLCD
::KS0108을 기반으로 하는 LCD의 그래픽 처리 루틴을 지원한다.
* LedControl
::MAX7221나 MAX7219을 사용한 7-세그먼트 LED 드라이버를 제어한다.
* LedControl
::맥심 칩을 사용한 매트릭스 LED을 제어한다. Matrix 라이브러 수정본이다.
* LedDisplay
:: HCMS-29xx  스코롤 LED를 제어한다.
* Matrix
::기초적인 매트릭스 LED을 제어한다.
* PCD8544
::Nokia 55100 기반 LCD 컨트롤러를 제어한다.  (Adafruit Industries에 의해)
* Sprite
::매트릭스 LED의 기초적인 요정(sprite) 이미지를 처리한다.
* Adafruit ST7735
::1.8", 128x160 TFT LCD 제어한다. (Adafruit Industries에 의해)

#### 오디오 신호 처리

* FFT
::오디오나 다른 아날로그 신호의 주파수 분석 함수이다.
* Tone
::오디오 발생을 위한 방형파 신호를 만든다. 특정 핀에 출력된다.

#### 모터와 PWM

* TLC5940
::16채널, 12비트 PWM 제어 출력.

#### 시간 제어

* DateTime
::소프트웨어에서 현재 날짜와 시간의 트랙을 유지하기 위한 라이브러리이다.
* Metro
::주기적 시간 처리를 위한 라이브러리이다.
* MsTimer2
::매 N 미리초(milliseconds) 마다 인터럽트를 발생한다. 타이머 2을 사용한다.

#### 유틸리티

* PString 
::스트링 버퍼를 출력하는 가벼운 클래스이다.
* Streaming
::간단한 출력을 스트림 처리로 대처할 수 있다.

## 같이 보기
* 아두이노
* 아두이노 보드
* 아두이노 프로그래밍

## 각주


분류:아두이노
분류:마이크로컨트롤러

분류:컴퓨터 시스템
분류:마이크로프로세서