메뉴 건너뛰기

XEDITION

아두이노

 

 

 

 

C언어를 이용한 GPIO 입출력 제어

 

작성일: 2014년 10월 24일

 

 

 

C언어를 이용하여 라즈베리파이의 GPIO 입출력 단자를 제어하는 함수들을 알아보겠습니다. C언어를 이용하여 GPIO를 제어하기 위해서는 wiringPi라는 헤더파일을 추가하여야 합니다. wiringPi의 설치는 오로카의 강좌(링크)를 참고하세요.

 

 

 

라즈베리파이 GPIO 강좌 : 04. Output 테스트 (LED 출력, C언어)

http://cafe.naver.com/ArticleRead.nhn?clubid=25572101&page=8&menuid=43&boardtype=L&articleid=228&referrerAllArticles=false

 

 

 

 #include <stdio.h>
//1. wiringPi 헤더파일 포함
#include <wiringPi.h>

 

int main (void)
{
  //2. wiringPi 초기화
  if (wiringPiSetup() == -1)
    return 1 ;

 

  //3. pin mode 설정
  pinMode(6, INPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

 

  while(1){
 //4-1. 쓰기
    digitalWrite(4, 0);
    digitalWrite(5, 0);

 

 //4-2. 읽기
    if(digitalRead(6) == 0){

      digitalWrite(4, 1);
      digitalWrite(5, 1);

      delay(1000) ;
   }
  }

 

  return 0 ;
}

 

 

위의 예제코드는 위 강좌에서 사용되는 소스코드를 약간 수정한 것인데요. C언어를 이용한 GPIO의 입출력 제어는 크게 4단계로 나뉘는 것을 보실 수 있어요.

 

 

 

첫번째는 wiringPi 헤더파일을 포함하는 것입니다.

 

 #include <wiringPi.h>

 

 

 

 

두번째는 wiringPi를 초기화하는 작업인데, 대부분의 함수가 그러하듯 실패시 -1을 리턴하기 때문에 위와 같이 코드를 작성하였습니다.

 

 wiringPiSetup()

 

 

 

 

세번째는 pin mode를 설정해주는 것입니다. 해당 핀 번호와 합께 입력핀으로 사용할 지 출력핀으로 사용할 지를 결정해줍니다.

 

 pinMode(#PinNumber, INPUT or OUTPUT);

 

 

 

 

마지막으로 설정된 핀을 이용하여 읽거나 쓰는 작업을 하는 것입니다.

 

 digitalWrite(#PinNumber, 0 or 1);

 

 digitalRead(#PinNumber);

 

 

 

 

그리고 완성된 소스코드는 wiringPi를 포함해서 컴파일을 해주시면 됩니다.

 

 gcc -o test test.c -lwiringPi

 

 

 

 

GPIO핀의 wiringPi 번호는 다음 명령어를 이용하여 확인할 수 있습니다. 그림도 첨부합니다.

 

 gpio readall

 

 

 

라즈베리파이 B Type GPIO

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 IR 리모콘 코드 따기 [1] 묵묵이 2017.02.10 12
공지 rc 카 작업용 [1] 묵묵이 2017.02.07 11
공지 [sketch_mydust] 미세멘지 측정기 작업 용 [2] 묵묵이 2017.02.07 15
42 RFID 정보를 읽고 쓸 수 있는 Proxmark3 묵묵이 2024.09.13 1
41 [Android,Java] 안드로이드 - AES256 암호화 및 복호화 예제 소스 다운로드 file 묵묵이 2022.06.12 0
40 교류모터 속도제어킷 묵묵이 2021.05.02 7
39 WiFiHTTPSServer test 묵묵이 2020.03.02 7
38 8GLIB 유저매뉴얼 구글번역 묵묵이 2020.02.29 5
37 아두이노 2.4G 통신 모듈 사용하기 묵묵이 2019.04.04 9
36 전기가용량 계산 방법 - 전압, 전류와 전력량 측정에 대한 내용 묵묵이 2017.07.27 9
35 초저렴 iot 모듈 묵묵이 2017.06.04 8
34 적정 습도 / 미세먼지 값보정 묵묵이 2017.05.11 8
33 5V동작 20A 전류 센서 모듈 측정하기 ... [6] 묵묵이 2017.04.17 16
32 먼지 센서 구매 하는곳 ... 묵묵이 2017.04.15 7
31 라즈베리파이 프로그램 자동 실행 묵묵이 2017.03.12 8
30 라즈베리파일 설정 묵묵이 2017.03.11 6
» [라즈베리파이] C언어를 이용한 GPIO 입출력 제어 [3] 묵묵이 2017.03.07 5
28 와이파이 모듈(ESP8266) 공유기 연결 AT 명령어 [1] file 묵묵이 2017.02.26 6
27 아두이노 EEPROM 사용해보기 묵묵이 2017.02.20 6
26 [아두이노] 0.96인치 OLED LCD 모듈 텍스트 출력 [2] file 묵묵이 2017.02.20 9
25 HEX to DEC 묵묵이 2017.02.10 5
위로