아두이노는 '오픈소스 하드웨어'로서 회로도와 디자인이 공개함. 따라서 누구나 제조, 판매할 수 있음
단, 아두이노 공식 로고와 상표는 저작권이 있음 Creative Commons Attribution-ShareAlike 3.0 License
정품: 이탈리아 아두이노팀이 제작한 제품
호환품: 아두이노팀 이외 회사에서 제작하여 판매하는 제품(품질, 가격 매우 다양)
마이크로 컨트롤러(MCU) 형태에 따라 삽입실장형(DIP)과 표면실장형(SMD)이 있음
호환품이 정품 로고나 유사 로고를 사용하는 경우가 있어서 구분하기 어려움. 가격으로 판단
SMD 타입 호환품은 USB 연결부에 직사각형 모양의CH340을 사용
*정품은 정사각형 모양의 ATmega 16U2 를 사용
CH340은 별도의 드라이버를 설치해야함
컴퓨터: 아두이노 IDE 사용 환경 제공
아두이노 IDE: 스케치 프로그램
아두이노 우노 보드: 물리 세계의 데이터 입력(센서), 출력(엑추에이터)
<보드 설정>
< 포트 설정 >
(1) Blink 예제 선택
(2) 아두이노에 업로드
(3) 결과 확인 - 보드 위의 노란색 LED가 1초마다 깜빡임
// 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); // 내장 'LED핀'을 '출력'으로 사용
}
// 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(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
pinMode(pin, mode); // 특정 핀을 입력 또는 출력으로 동작하도록 설정
pin : 모드를 설정하려는 핀 번호 (1~13번, A0~A5)
※ LED_BUILTIN : 보드에 내장된 LED가 연결된 핀번호. 아두이노 우노는 13번임
mode : INPUT, OUTPUT, INPUT_PULLUP
Reference > Language > Functions > Digital io > Pinmode
[Digital I/O]
특정 핀을 입력 또는 출력으로 동작하도록 설정합니다. (digital pins)의 설명을 보면 핀들의 기능이 자세히 나옵니다.
아두이노 1.0.1부터, INPUT_PULLUP 모드를 통해 내부 풀업 저항을 활성화할 수 있습니다. 덧붙여, INPUT 모드는 명시적으로 내부 풀업을 비활성화합니다.
pinMode(pin, mode)
pin: 모드를 설정하려는 핀 번호
mode: INPUT, OUTPUT, 또는 INPUT_PULLUP. ((digital pins) 페이지를 보면 더 자세한 기능 설명이 있습니다.)
없음
이 코드는 디지털 핀 13을 OUTPUT 으로 만들고 HIGH 와 LOW 를 전환합니다.
void setup() {
pinMode(13, OUTPUT); // 디지털 핀 13 을 출력으로 설정
}
void loop() {
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second
}
A0, A1 등으로 아날로그 입력 핀을 디지털 핀으로 사용할 수 있습니다.
digitalWrite(pin, value); // HIGH 또는 LOW 값을 디지털 핀에 출력
pin : 출력하려는 핀 번호 (1~13번, A0~A5)
value: HIGH, LOW
Reference > Language > Functions > Digital io > Digitalwrite
[Digital I/O]
HIGH 또는 LOW 값을 디지털 핀에 출력합니다.
핀이 pinMode() 를 통해 OUTPUT 으로 설정되면, 그 핀의 전압은 HIGH 일 때 5V(또는 3.3V 보드에서 3.3V), LOW 일 때 0V (ground)로 설정됩니다.
핀이 INPUT 으로 설정되면, digitalWrite() 는 입력 핀의 내부 풀업 저항을 활성화 (HIGH) 또는 비활성화 (LOW)할 것입니다. 내장 풀업 저항을 활성화하기 위해서는 pinMode() 를 INPUT_PULLUP 으로 설정하는 것을 권장합니다. 디지털 핀 튜토리얼을 보면 더 많은 정보가 있습니다.
pinMode() 를 OUTPUT 으로 설정하지 않고 LED를 핀에 연결하면, digitalWrite(HIGH) 가 불릴 때 LED 불빛이 흐리게 나타날 수 있습니다.
명시적으로 pinMode() 를 설정하지 않으면 digitalWrite() 는 내부 풀업 저항을 활성화시킬 것이고, 그것은 마치 전류를 제한하는 큰 저항처럼 동작할 것입니다.
digitalWrite(pin, value)
pin: 핀 번호
value: HIGH 또는 LOW
없음
이 코드는 디지털 핀 13을 OUTPUT 로 만들고 1초마다 HIGH 와 LOW 사이를 전환합니다.
void setup() {
pinMode(13, OUTPUT); // 디지털 핀 13 을 출력으로 설정
}
void loop() {
digitalWrite(13, HIGH); // 디지털 핀 13 켜기
delay(1000); // 1초 기다리기
digitalWrite(13, LOW); // 디지털 핀 13 끄기
delay(1000); // 1초 기다리기
}
A0, A1 등을 통해 아날로그 입력 핀을 디지털 핀으로 사용할 수 있습니다.
EXAMPLE Tutorial: Digital Pins
delay(ms); // ms 시간 만큼 프로그램 멈춤. 1초는 1000ms
ms : 멈출 시간(1/1000초, ms단위, unsigned long)
Reference > Language > Functions > Time > Delay
[Time]
매개변수에 정한 시간(밀리 초) 동안 프로그램 멈춤. (1초는 1000 밀리 초)
delay(ms)
ms: 멈출 밀리 초 (unsigned long)
없음
이 코드는 출력 핀을 토글하기 전에 프로그램을 1초 멈춤
int ledPin = 13; // LED 연결 디지털 핀 13
void setup() {
pinMode(ledPin, OUTPUT); // 디지털 핀을 출력으로
}
void loop() {
digitalWrite(ledPin, HIGH); // LED 켬
delay(1000); // 1초 기다림
digitalWrite(ledPin, LOW); // LED 끔
delay(1000); // 1초 기다림
}
delay() 함수로 깜빡이는 LED 를 만들기 쉽고, 많은 스케치가 짧은 delay를 써서 그런 작업을 switch debouncing로 하지만, 스케치에서 delay() 를 쓰는 것은 눈에 띄는 단점이 있다. delay 함수 동안 센서 읽기, 수학 계산, 핀 다루기가 중단되므로, 결과적으로, 거의 모든 다른 작업이 멈춘다. 시간을 제어하는 다른 접근으로 아래에 있는 millis() 함수와 스케치를 보세요. 좀더 똑똑한 프로그래머는 delay() 를 10 밀리초보다 긴 타이밍 이벤트를 아두이노 스케치가 아주 간단한 경우가 아니면 대개 사용하지 않는다.
그러나, 어떤 것은 delay() 함수가 Atmega 칩을 제어하는 동안에도 이루어지는데, 왜냐면 delay 함수가 인터럽트를 비활성화 하지 않기 때문이다. RX에서 나타나는 시리얼 통신은 기록되고, PWM (analogWrite) 값과 핀 상태가 유지되며, interrupts 은 정상으로 동작한다.
EXAMPLE Blink Without Delay