2016 :: 아두이노 기초

기본기:: GPIO

GPIO(General Purpose Input/Output)

 GPIO란 General Purpose Input/Ouput 의 줄임말로, 마이크로 컨트롤러의 핀을 입력 또는 출력 용도로 사용할 수 있게 하는 기능입니다. 기본적으로 아두이노는 5V 기준의 마이크로프로세서이며, 따라서 핀 헤더 소켓을 통해 0V 혹은 5V의 입/출력만이 가능합니다. 따라서 아두이노의 핀을 출력 모드로 설정하면 이 핀을 통해서 우리는 자유자재로 0V 혹은 5V 출력을 낼 수 있으며,  입력 모드로 설정하면 이 핀으로 들어오는 전압이 0V인지 5V인지 판단을 할 수 있습니다.

 

digitalWrite

 아두이노는 digitalWrite()라는 함수를 통해서 GPIO output 기능을 수행합니다. digitalWrite(pin numberHIGH)는 해당되는 핀에 5V를 출력하게 되고, digitalWrite(pin numberLOW)는 해당되는 핀에 0V를 출력하게 됩니다. 이 기능을 이용하여 일정 시간을 주기로 깜빡거리는 LED를 구현해 봅시다.

blink.ino 
int ledPin = 13;                 // LED connected to digital pin 13
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}

 

digitalRead

 GPIO의 input 기능은 digitalRead() 함수로 구현할 수 있습니다. digitalRead(pin number) 함수는 해당되는 핀에 0V가 걸리면 정수값 0을, 5V가 걸리면 정수값 1을 반환합니다. 이 기능을 이용하여 버튼으로 제어할 수 있는 LED를 구현해 봅시다.

digitalread.ino 
int ledPin = 13; // LED connected to digital pin 13
int inPin = 11;   // pushbutton connected to digital pin 11
int val = 0;     // variable to store the read value
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
  pinMode(inPin, INPUT);      // sets the digital pin 11 as input
}
 
void loop()
{
  val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, val);    // sets the LED to the button's value
}

참고자료

댓글

댓글 본문
작성자
비밀번호
  1. JustStudy
    고맙습니다
  2. 네 그렇죠. 전류는 VCC 에서 GND로 흐르게 되는데 만약 GND가 연결되지 않으면 전류가 갈 곳이 없게 되니 흐르지 않게 됩니다!
    대화보기
    • 죠이
      답변 감사합니다.
      그러면 GND pin은 내부적으로 USB의 GND와 연결이 되어 있다는 말씀이시군요.
      GND를 연결하지 않으면 전류는 흐르지 않게 되는 건가요?
      대화보기
      • 이 led 예제에서 저항을 ground 쪽에 연결하는 것과 핀 쪽에 연결하는 것은 아무 차이가 없습니다! 다만 제가 습관상 그렇게 연결한 겁니다 ㅎㅎ. 그리고 현재 아두이노는 usb를 통해 컴퓨터로부터 전원공급을 받게 되는데, 이 경우 아두이노의 ground는 usb 단자를 통해 컴퓨터의 ground와 연결이 되어지게 되는 것입니다. 따라서 led로 흘러가는 전류는 결과적으로 연결된 컴퓨터로 흘러가게 됩니다. 만약 컴퓨터가 콘센트에 연결되어있다면 그 전류는 다시 콘센트를 타고 흘러갈 것이고, 배터리에 연결되어있다면 배터리로 흘러 들어가겠죠?
        대화보기
        • 죠이
          저항을 Ground 로 가는 쪽에 연결해야만 하나요?
          +로 들어오는 앞에 저항을 달아도 되는 거에요?
          그리고, GND pin은 내부적으로 어떻게 되어 있나요? 흘러가는 전류가 GND pin으로 들어가서 사라지는 원리가 뭐죠?

          너무 초보적인 질문이라 죄송합니다.
        버전 관리
        YJ
        현재 버전
        선택 버전
        graphittie 자세히 보기