임베디드 시스템/라즈베리파이

라즈베리파이 (4) - GPIO는 무엇인가?

달서비 2022. 7. 2. 10:45

이전 편에서는 GPIO를 다운로드하였습니다. 이제 GPIO를 이용하여 LED를 사용해보도록 하겠습니다.

GPIO는 무엇인가?

라즈베리파이 4 핀맵

GPIO는 Gereral Purpose input/output의 약자로 다용도 입출력을 의미합니다. 임베디드 시스템에서 CPU에서 외부에 있는 핀을 사용하기 위하여 통하는 IO 신호입니다. 개발자가 어떻게 제품을 만드는가에 대하여 Input/ Output이 될 수 있습니다. 

 

라즈베리파이에서 GPIO 사용방법

※저는 C언어를 기준으로 해당 설명을 구성하였습니다.

 

1) Pin의 Mode를 GPIO로 설정하여야 합니다.

wiringPiSetupGpio();

wiringPiSetupGpio()라는 함수를 통하여 GPIO로 사용할 것이다라는 것을 나타냅니다.

 

2) GPIO로 설정한 경우에는 이제 해당 핀을 Input, Output으로 사용하여야 합니다.

pinMode(pin,INPUT);
pinMode(pin,OUTPUT);

pinMode() 함수를 통하여 특정 pin을 Input, Output으로 사용할 것인지를 정할 수 있습니다.

 

3) Input, Output으로 설정하고 이제 값을 읽거나 쓸 수 있습니다.

//pin을 OUTPUT으로 설정하였을때
digitalWrite(pin,0); //off
digitalWrite(pin,1); //on

//pin을 INPUT으로 설정하였을때
digitalRead(pin);

위의 함수들을 이용하여 GPIO를 다룰 수 있습니다. 또한 위의 함수 뿐만이 아니라 다양한 함수들이 있습니다.

 

회로 / 소스코드

#include <stdio.h>
#include <wiringPi.h> 
#define LED 21                  // BCM 기준의 - GPIO 21

int main()
{
 if(wiringPiSetupGpio()==-1)	// GPIO설정
	return 1;

 pinMode(LED, OUTPUT);          // 출력으로 설정
 
 while(1)
  {
    digitalWrite(LED, 0);       // LED off
    delay(1000);
    digitalWrite(LED, 1);       // LED on
    delay(1000);
  }
}

위의 과정을 적용하자면 LED를 제어하기 위해서는 먼저 GPIO를 켜야 합니다.  GPIO를 켰으면 LED는 input을 받는 것이 아니므로 Output으로 제어를 하여야 합니다. 마지막으로 0,1을 이용하면서 LED를 깜빡깜빡하면 됩니다.

 

 

해당 예제는 (3)편에서 사용했던 예제를 다시 적어보았습니다.

https://dalseobi.tistory.com/76

 

라즈베리파이 (3) - 라즈베리파이에 GPIO 설치하기 (WiringPi)

라즈베리파이의 진정한 기능은 GPIO 핀을 통하여 다른 모듈들을 제어할 수 있는 점입니다. 이번에는 wiringPi를 통하여 GPIO를 제어하는 방법을 알아보겠습니다. WiringPi라이브러리의 사이트는 아래

dalseobi.tistory.com