티스토리 뷰

반응형

안녕하세요. 09LABS입니다.

오랫동안 블로그를 관리 못했었는데 회사다니면서 석사 학위를 밟는중이라 그렇습니다 -_-;;
간만에 시간이 나서 이렇게 글을 써봅니다. 아두이노 기초 예제를 찾아보면 정~말 많은 글이 있습니다.
물론 좋은 글도 많고 좋지 않은 글도 많습니다. 부디 제 블로그에서 많은 것을 얻어가셨으면 좋겠네요.

자 그럼 시작합니다.

먼저 아두이노 하면 가장 먼저 떠오르는 예제는 Blink 예제일겁니다.
이 예제가 무엇이냐 하면 어떤 프로그래밍 언어를 배우든 먼저 배우는 예제는 Hello World! 일겁니다.

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void){
 
    printf("Hello World!");
 
    return 0;
}
cs

이 예제는 C언어의 아버지 데니스 리치가 쓴 책에 가장 기초 예제로 나오는데요,
프로그래머들 사이에서는 암묵적으로 행해지는 가장 기초 예제라고 볼 수 있습니다.
기초도 못하는데 응용을 할 순 없잖아요?

아두이노에도 기초중의 기초는 Blink입니다. 왜냐하면 아두이노에서 Hello World를 띄워볼 수
없기 때문이죠. 아두이노는 마이크로 컨트롤러이기 때문에 별도로 출력해주는 LCD는 존재하지 않습니다.
좀 나중에 예제로 Serial 예제를 들겠지만 아두이노의 기초 영역은 아니기 때문입니다.

<아두이노 우노>

아두이노를 처음 구매하시면 무엇을 해야할 지 가장 막막할겁니다. 뭘 어디서부터 시작해야할 지 모르겠고 
아두이노에 붙어있는 저 요상한 칩들은 무엇인지 궁금도 하실거구요. 우선 Blink 예제를 해보려면 LED가 필요한데요.
아두이노를 보시면 위의 사진과 같이 빨간색 사각형이 표시된 부분을 보시면 L이라고 적인 LED가 하나 있습니다.
이 LED는 아두이노 디지털핀 13번과 연결되어있습니다.

단순히 Blink 예제 뿐만 아니라 다른 예제에 활용을 하거나 간단한 테스트용으로 쉽게 사용할 수 있습니다.

우선 소스코드를 확인해볼까요?

1
2
3
4
5
6
7
8
9
10
11
12
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(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}
cs

위의 코드는 Blink예제의 소스코드입니다.

우선 아두이노 IDE에서 코드는 두 블록으로 나뉩니다.

void setup()과 void loop()인데요, 설명은 다음과 같습니다.

void setup()

한 번만 실행되는 함수로 주로 초기화 하는데 사용됩니다.

pinMode와 같이 아두이노의 아날로그 또는 디지털 핀을 입력(INPUT / INPUT_PULLUP)으로 사용할지, 출력(OUTPUT)으로 사용할 지

설정하는 것과 같은 함수나, 변수들을 초기화 하는데 사용합니다.

setup 블록은 아두이노에 전원이 인가되었을 때 한 번만 실행되므로, 연속적으로 실행해야 하는 코드는 loop()에 적으면 됩니다.

 

pinMode(핀 번호, 입/출력)

이 함수는 아날로그 또는 디지털 핀을 입/출력 모드로 설정하는 함수입니다.

위의 Blink 예제에서는 LED_BUILDIN 핀을 OUTPUT(출력) 모드로 설정하는 코드입니다.

LED_BUILTIN 은 아두이노에서 기본적으로 13번 핀을 LED_BUILTIN으로 선언되어있습니다.

이 값은 변경되지 않습니다.

 

digitalWrite(핀 번호, 1 or 0 (HIGH or LOW))

이 함수는 디지털 핀의 출력을 제어하는 함수로 HIGH (5V 출력) 또는 LOW(0V 출력)으로 설정합니다.

대부분의 아두이노 디지털 핀은 5V 출력이 나옵니다만 3.3V로 동작하는 아두이노는 3.3V 출력이 나옵니다.

이 함수를 활용해서 LED를 켜고 끄거나 릴레이를 제어하거나, 모터를 제어하거나 여러 IC 칩을 제어하는데 사용됩니다.

 

delay(milliseconds)

이 함수는 아두이노를 잠시 중단시키는 함수입니다. Blink 예제는 LED를 1초 단위로 켜고 끄는 예제입니다.

그리고 delay 함수 인자로는 milliseconds가 사용되기 때문에 1초를 멈추게 하고 싶으면 1000을 적어줍니다.

0.1초를 멈추고 싶으면 100, 0.01초를 멈추고 싶으면 10을 입력하면 됩니다.

그럼 전체 코드 설명을 해드리겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
  // LED_BUILTIN(13번) 디지털 핀을 출력으로 설정합니다.
  pinMode(LED_BUILTIN, OUTPUT);
}
 
// loop함수는 아두이노에 전원을 인가하면 영원히 반복됩니다.
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // 13번 핀 LED에 5V 출력을 내보냅니다.
  delay(1000);                       // 1초 대기합니다.
  digitalWrite(LED_BUILTIN, LOW);    // 13번 핀 LED에 0V 출력을 내보냅니다.
  delay(1000);                       // 1초 대기합니다.
}
cs

이 예제를 아두이노에 업로드하고 전원을 인가하면 L이라고 적힌 LED에 불빛이 1초 단위로 켜졌다가 꺼집니다.

아두이노의 가장 기본 예제인 Blink 예제에 대해 알아봤습니다.

간단한 숙제로 13번 LED가 아닌 5번 핀에 LED를 연결하여 LED를 0.5초 단위로 켜졌다 꺼졌다 하는 코드를 작성하고

아두이노에 업로드 해서 실행해보시기 바랍니다. 회로도는 아래 첨부합니다.

필요한 부품은 330옴 저항 1개, LED 1개, 아두이노 입니다. 저항이나 LED가 없으신 경우

https://www.tinkercad.com/circuits에서 아두이노 시뮬레이션을 할 수 있습니다.

다음 예제는 DigitalReadSerial 예제에 대해 알아보겠습니다.

반응형

'Arduino > Arduino 강좌' 카테고리의 다른 글

[아두이노] 2. 아두이노 구조와 종류  (4) 2017.05.05
[아두이노] 1. 아두이노란?  (0) 2017.04.29
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함