Arduino

아두이노 LED 제어 (On/Off) 하는 방법

Crazy-M2M 2022. 7. 31. 19:22
300x250
반응형

안녕하세요. Crazy M2M입니다.

이제 본격적으로 아두이노를 가지고 노는 방법에 대해서 알아보도록 하겠습니다.
오늘은 LED 제어하는 방법에 대해서 알아볼게요.
소프트웨어 개발자에게 "Hello World"가 있다면 마이크로 컨트롤러를 이용한 하드웨어 개발자에게는 "LED On/Off"가 있습니다. 이것은 기본적인 환경이 갖춰졌을 때 동작이 정상적인지 아닌지를 확인하는 가장 기본이 되는 방법입니다.

아두이노의 디지털 입/출력 핀을 사용하면 LED를 켜고 끄는 것과 같은 디지털 출력을 사용하는 기능을 쉽게 만들 수 있고, 스위치나 On/Off 센서로부터 디지털 입력을 받아들여 다른 기기를 쉽게 제어할 수 있습니다.

그럼 아두이노 우노의 디지털 핀에 대해서 알아볼게요.
디지털 입/출력 핀은 총 14개까지 사용이 가능하네요. 그중에 6개는 PWM의 기능을 가지고 있습니다.
총 디지털 핀 14개를 Input/Output으로 설정을 가능하고 Input 일 때는 High/Low를 값을 읽을 수 있고, Output일 때는 High/Low를 줄 수 있습니다. 여기서 High = 5V이고 Low = 0V(Ground)라고 생각하시면 될 것 같습니다. 😄

300x250

아두이노 우노 스펙


이제 코드를 작성해 볼게요. 다시 말하면 예제를 보고 설명하도록 할게요.
먼저 아두이노 스케치를 실행해 주세요. 그리고 파일 - 예제 - 01.Basics - Blink를 클릭합니다.
Blink는 LED를 제어하기 위한 기초 코드를 만들어 줍니다. 아주 간단하쥬 ? 😁

아두이노 우노 예제 프로그램


그러면 자동으로 기본 코드가 생성이 됩니다. 위에서부터 자동 생성된 코드가 어떤 의미를 가지고 있으며, 어떤 핀을 사용해서 하는지에 대한 설명이 나와있고 그다음에 실제 코드가 나와있습니다.

아두이노 핀 설정


반응형

아두이노의 코드는 크게 2가지 코드 블록으로 나눠어져 있습니다.
첫 번째가 void setup() 함수입니다. 이 함수는 간단히 말해서 초기화 설정을 하는 부분이고, 이 함수는 단 한 번만 실행이 된다고 생각하시면 됩니다. 그러니 초반에 사용할 하드웨어를 설정할 것들을 한 번만 정의를 해주고 실행하는 부분이 이 함수 영역입니다.
두 번째는 void loop() 함수입니다. 이 함수는 반복적으로 계속 실행하는 부분이어서 여기에 코드를 작성하시면 계속 적으로 반복하여 동작합니다. 이렇게 간단하게만 알고 있으시면 되니, 이해가 되지 않는다고 해서 걱정하지는 마세요. 😊

아두이노의 보드의 핀 설정을 하는 부분입니다.
디지털 입/출력 핀 13번을 출력(OUTPUT) 모드로 설정합니다. (입력 모드이면 INPUT라고 쓰시면 돼요)
이렇게 핀에 대한 설정을 void setup() 함수에 한 번만 정의해서 사용을 할 수 있어요.

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(13, OUTPUT);
}


디지털 출력으로 핀을 설정했으니 이 핀은 HIGH(5V) 또는 LOW(0V)로 값을 쓸 수가 있는 상태가 되었습니다.
그럼 어떻게 HIGH/LOW를 쓰는지 방법을 알아야겠지요? 그것을 해주는 함수가 바로 digitalWrite(A, B)라는 함수입니다.
여기서 A는 핀 이름이고 B는 HIGH/LOW를 써주면 됩니다. 우리는 13핀을 사용할 예정이니까 A=13이 됩니다.
LED에 HIGH를 주어서 LED를 켜고 - digitalWrite(13, HIGH);
LED에 LOW를 주어서 LED를 끄고 - digitalWrite(13, LOW);
이제 우리는 LED를 켜고 끌 수가 있게 됐습니다. 🤔
근데 이렇게 하게 되면 LED가 너무 빨리 켜지고 꺼지기 때문에 LED의 상태를 정확히 확인할 수가 없어요.
그것은 마이컴이 아주 빠른 속도록 동작을 하기 때문이에요. 그래서 그 중간에 딜레이를 주어야 켜고 꺼진 상태를 명확히 알 수가 있습니다. 이럴 때 사용하는 함수가 바로 delay(1000);입니다. 현재 1000 값은 ms 단위로 1000ms = 1초가 되니까 1초마다 LED가 켜지고 꺼지는 것을 눈으로 확인을 할 수가 있어요.

void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}


자 이제 코드가 완성되었으니 실제 아두이노 우노 보드에서 실행시켜서 정상적으로 동작을 하는지 확인해 봅시다.
그러기 위해서는 먼저 보드 설정을 해줘야 해요. 아래처럼 툴 - 보드 : Arduino Uno - Arduino Uno를 클릭해서 보드를 설정해줍니다. 만약에 다른 보드를 사용하고 싶다면 다른 보드를 선택해야 해요.

아두이노 스케치 보드 설정


다음으로 포트를 설정해줘야 해요. 포트는 USB를 통해 보드와 컴퓨터가 연결되어 있어야 하고, 이 선을 통해서 프로그램 코드가 다운이 됩니다. 툴 - 포트 - COM5(Arduino Uno)를 선택합니다.

아두이노 스케치 포트 설정

이제는 보드와 포트 설정이 완료되었으므로 프로그램을 업로드해서 실행시켜 보겠습니다.
코드 창의 오른쪽 위에 보면 화살표가 되어 있는 버튼이 바로 업로드 버튼이에요.
이것을 누르면 코드가 보드로 업로드되고 바로 실행이 됩니다.

아두이노 스케치 컴파일 및 다운로드


LED에 불이 들어옵니다. 1초간 켜져 있고 1초가 꺼지는 코드를 만들었어요.😀
드디어 아두이노 장난감 만들기의 가장 큰 환경 설정을 하고 코드를 짜고 실행까지 해보았습니다.
오늘은 여기까지 하겠습니다.

728x90
반응형