[태그:] LOW

  • 아두이노 LED 켜기 핵심 5가지 — 표로 한 번에

    아두이노 LED 켜기 핵심 5가지 — 표로 한 번에

    아두이노 우노 R3에 LED 한 개를 달아 1초마다 깜빡이게 만듭니다. 부품은 네 가지, 코드는 열 줄 남짓입니다.

    다 만들고 나면 손에 남는 것은 깜빡이는 불빛이 아니라 디지털 핀 하나를 켜고 끄는 방법입니다. 앞으로 다룰 버튼·센서·모터가 전부 여기서 갈라져 나옵니다.

    이 글은 아두이노 우노 R3 기준입니다. 레오나르도도 헤더 배치가 같아 그대로 됩니다. 나노는 핀 모양이 달라서 브레드보드에 꽂는 방식이 다릅니다.

    준비물

    부품 수량 대략 가격대
    아두이노 우노 R3 1 만원대~
    브레드보드 400핀 1 2~3천원
    5mm LED (빨간색) 1 개당 100원 안팎
    저항 330Ω 1 개당 수십 원
    점퍼선 (수-수) 2 묶음 판매
    USB Type-B 케이블 1 보드에 딸려 오기도 합니다

    가격은 시기와 판매처에 따라 다릅니다. 감을 잡는 용도입니다.

    회로

    LED는 D8에 연결합니다. 우노 R3의 디지털 핀은 D0~D13이고, D8은 다른 기능이 겹치지 않은 평범한 입출력 핀입니다. D13에는 보드에 붙은 LED(공식 핀아웃의 LED_BUILTIN)가 이미 물려 있습니다. 뒤에서 쓸 데가 있으니 기억해 두십시오.

    브레드보드는 가운데 홈을 기준으로 같은 열의 다섯 구멍이 안쪽에서 이어져 있습니다. 홈을 넘어서는 이어지지 않습니다. 같은 줄에 꽂은 두 다리는 붙어 있는 것과 같습니다.

    연결은 5단계입니다.

    1. USB 케이블을 먼저 뽑습니다. 전원이 들어온 채로 선을 옮기면 그 순간 잘못된 연결이 만들어집니다.
    2. LED를 꽂습니다. 긴 다리와 짧은 다리가 서로 다른 줄에 들어가야 합니다. 같은 줄이면 LED를 건너뛰고 전선이 바로 이어집니다.
    3. 저항 330Ω의 한쪽 다리를 LED의 짧은 다리와 같은 줄에, 반대쪽은 비어 있는 다른 줄에 꽂습니다.
    4. 점퍼선으로 D8LED 긴 다리가 있는 줄을 잇습니다.
    5. 점퍼선으로 GND저항의 반대쪽 줄을 잇습니다.

    정리하면 D8 → LED 긴 다리 → 짧은 다리 → 저항 → GND 한 줄입니다.

    코드

    아두이노 IDE에 그대로 붙여 넣으십시오. 채워 넣을 곳은 없습니다.

    `cpp // 아두이노 우노 R3 — LED 깜빡이기 (만들기 시리즈 1편) // 바꿔 볼 값은 맨 위에 모아 두었습니다. 바꿔 보는 것이 배우는 것입니다.

    const int ledPin = 8; // 13 으로 바꾸면 부품 없이 보드에 붙은 LED 로 시험됩니다 const int onTime = 1000; // 켜져 있는 시간(밀리초). 1000 = 1초 const int offTime = 1000; // 두 값을 다르게 주면 깜빡임이 한쪽으로 치우칩니다

    void setup() { // 핀은 설정을 안 하면 ‘입력’입니다. 입력인 핀은 전압을 읽기만 할 뿐 // LED 를 켤 만한 전류를 내보내지 않습니다. 그래서 이 줄이 필요합니다. pinMode(ledPin, OUTPUT); }

    void loop() { digitalWrite(ledPin, HIGH); // 핀을 5V 쪽에 붙인다 → 전압 차가 생겨 전류가 흐른다 delay(onTime); // 이 줄이 없으면 너무 빨라 계속 켜진 것으로 보입니다 digitalWrite(ledPin, LOW); // 핀을 0V 쪽에 붙인다 → 양끝이 0V 라 전류가 안 흐른다 delay(offTime); } `

    도구 > 보드를 Arduino Uno로, 도구 > 포트를 보드가 잡힌 포트로 고른 뒤 업로드를 누릅니다.

    원리

    저항이 왜 필요한가. LED는 전구가 아니라 다이오드입니다. 전압을 올려도 처음엔 전류가 거의 안 흐르다가 순방향 전압(VF) 을 넘는 지점부터 가파르게 늘어납니다. 5V를 그대로 걸면 전류를 붙잡아 줄 것이 없어 LED도 핀도 위험합니다. 저항은 흐를 전류의 크기를 정하는 부품입니다.

    330Ω이 나오는 계산. 예로 든 부품은 킹브라이트 WP7113ID(5mm 빨간색)이고, 데이터시트에 순방향 전류 10mA에서 VF 표준값 1.9V로 적혀 있습니다.

    • 우노 R3는 로직 전압이 5V인 보드입니다. 핀이 HIGH면 약 5V가 나옵니다.
    • 저항이 감당할 전압 = 5V − 1.9V = 3.1V
    • 목표 전류 10mA = 0.01A
    • 옴의 법칙으로 R = 3.1V ÷ 0.01A = 310Ω

    310Ω짜리는 팔지 않습니다. 저항은 정해진 값으로만 나오므로 바로 위 값인 330Ω을 씁니다. 값을 올리면 전류가 줄어 안전한 쪽입니다. 이때 실제 전류는 3.1V ÷ 330Ω = 약 9.4mA입니다.

    220Ω도 됩니다. 3.1V ÷ 220Ω = 약 14mA로 더 밝습니다. 두 한계선 안쪽인지만 보면 됩니다. WP7113ID 데이터시트의 최대 정격은 DC 순방향 전류 30mA입니다. 우노에 올라간 ATmega328P 데이터시트의 최대 정격은 핀 하나당 DC 40mA인데, 이건 넘으면 망가질 수 있다는 한계치이고 DC 특성표가 보증하는 시험 조건은 5V에서 20mA입니다. 그래서 이 시리즈는 핀당 20mA를 넘기지 않는 선에서 설계합니다.

    다른 색 LED라면 계산을 다시 합니다. VF가 달라지면 저항이 감당할 전압이 달라집니다. VF는 색으로 짐작하지 말고 그 제품의 데이터시트에서 읽으십시오. 데이터시트가 없는 낱개라면 330Ω으로 시작해 어두울 때만 값을 낮추는 편이 안전합니다.

    저항은 앞에 두나 뒤에 두나 같습니다. 직렬 회로는 어디서 재도 전류가 같기 때문입니다.

    HIGH와 LOW가 하는 일. HIGH는 그 핀을 보드 안쪽에서 5V에, LOW는 GND(0V)에 연결합니다. LOW면 LED 양끝이 모두 0V라 전압 차가 없고, 전압 차가 없으면 전류가 흐르지 않습니다. 끄는 스위치가 따로 있는 게 아니라 양쪽 전압을 같게 만들어 끄는 것입니다.

    안 될 때

    아무것도 안 켜집니다. LED 다리 길이를 보십시오. 긴 쪽이 +(애노드), 짧은 쪽이 −(캐소드)입니다. 거꾸로 꽂으면 전류가 흐르지 않아 타지는 않지만 켜지지도 않습니다. 다리를 잘랐다면 몸통 테두리가 평평하게 깎인 쪽이 −입니다. 그래도 안 되면 ledPin을 13으로 바꿔 올려 보십시오. 보드 위 L 표시 LED가 깜빡이면 보드와 코드는 멀쩡하고 문제는 배선에 있습니다.

    업로드에서 오류가 납니다. 도구 > 포트에 보드가 잡혔는지 보십시오. 목록이 비었으면 케이블부터 의심합니다. 충전 전용 USB 케이블은 데이터선이 빠져 있어 전원은 들어오지만 컴퓨터가 보드를 못 찾습니다.

    희미하게만 켜집니다. 저항값이 너무 클 가능성이 큽니다. 저항은 색 띠로 값을 표시합니다. 330Ω은 주황·주황·갈색, 220Ω은 빨강·빨강·갈색입니다(끝의 금색 띠는 오차 표시라 값과 무관합니다). 10kΩ(갈색·검정·주황)을 잘못 꽂으면 거의 안 보입니다.

    깜빡이지 않고 계속 켜져 있습니다. pinMode(ledPin, OUTPUT); 과 delay가 살아 있는지 확인하고, 코드의 ledPin 숫자와 점퍼선을 꽂은 핀 번호가 같은지 보십시오. 여기서 가장 많이 막힙니다.

    다음 편

    2편은 버튼으로 켜고 끄기입니다. 이번이 아두이노가 내보내는 쪽(출력)이었다면 다음은 들어오는 쪽(입력)입니다. 아무것도 연결되지 않은 입력 핀이 왜 제멋대로 값을 뱉는지, 풀다운 저항이 왜 필요한지를 봅니다.

    참고한 자료

    • Arduino UNO R3 사용자 매뉴얼 (핀 배치, LED_BUILTIN, 5V 로직): docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf
    • ATmega328P 데이터시트 (최대 정격, DC 특성): ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
    • Kingbright WP7113ID 데이터시트 (VF, 최대 정격): kingbrightusa.com/images/catalog/SPEC/WP7113ID.pdf