검색
홈으로 마이페이지 주문조회 장바구니
로그인
회원정보 게시판
회사소개 이메일
도서(BOOK)
키트(KIT)
특판 상품
졸업작품&전자기초
응용모듈
전자부품
모터
기구
엔클로져
고객센터 게시판
자유게시판
MCU 통합 게시판
강좌-RaspberryPi
강좌-드론(쿼드콥터)
강좌-아두이노(기초)
강좌-아두이노(응용)
신제품/신기술 소개
DIY 공작 게시판
윤교수의 연구실 칼럼
 ☎ : 02-776-4868

 F: 02-779-6757

☞ 평일 : 09~18시
☞ 주말 : 10~13시


국민822401-04-027758
☞ 예금주 : Ohm사
국민822401-04-027761
☞ 예금주 : R&C사
 
 
1 (주)알트소프트 사이트
 
2 LabVIEW 강좌 사이트
 
3 윤교수의 마이크로프로세서 월드
 
4 전자 엔지니어
 

 
강좌-RaspberryPi
 
[RaspberryPi]16. GPIO-출력 실험
 
 
2014/02/03 (15:31)
작성자 : ohmsa 조회수 : 3396
 
16. GPIO-출력 실험 1

이번 강좌에서는 C 언어를 이용한 GPIO 실험에서 출력 실험에 대해서 알아 보도록 한다

C 언어 작성은 직접 라즈베리 파이에서 하도록 하며, 이전 강좌에서 사용한 적이 있던 nano를 사용하도록 한다

우선, 작업 폴더를 만든 후에 프로그램을 작성하도록 한다.

$ mkdir gpio

$ cd gpio
$ nano led.c

이런 후에 nano를 이용하여 아래와 같은 코드를 입력 후에 저장하고, 종료한다.

#include

#include

#include

 

int main (int argc, char*argv[])

{

             int pinNumber;

 

             if(argv < 2){

                           printf(“Usage: ./led port”);

                           return 1;

             }

 

             int pinNumber = atoi(argv[1]);

 

             if(wiringPiSetup() == -1){ // wiringPi Setup

                           printf(“Please Setup wiringPi library”);

                           return 1;

             }

 

             pinMode(pinNumber, OUTPUT);  // 입력된 포트를 출력으로 설정

            

             while(1){

                           digitalWrite(pinNumber, 0); // 포트 출력 Low

                           delay(1000);

                           digitalWrite(pinNumber, 1); // 포트 출력 High

                           delay(1000);

             }

 

             return 0;

} 


위 코드는 입력 받은 포트에 대해서 출력을 Low, High를 반복하여 출력하여 연결된 Led가 점멸하는 프로그램이다

wiringPiSetup()는 wiringPi 시스템을 초기화하는 함수이며, wiringPi 핀 할당을 사용하게 된다. 아래 표의 빨간색 박스를 참고하기 바란다.

참고로 Broadcom(BCM) GPIO 핀 할당을 위해서는 wiringPiSetupGpio()를 사용한다

pinMode(pin, mode)는 핀의 모드를 설정하는 함수로, mode는 INPUT, OUTPUT, PWM_OUTPUT 중의 하나로 설정할 수 있다. wiringPi 1번 핀만이 PWM 출력을 지원한다.

digitalWrite(pin, value)는 해당 핀에 value 값으로 HIGH, LOW(1, 0)으로 출력 값을 정해 줄 수 있다

delay(value)는 지간 지연 함수로, value 값은 milisecond 단위로 값을 줄 수 있다.

wiringPi에 대한 API 함수는 다음 기회에 별도로 설명을 하도록 하자.

WiringPi 라이브러리를 사용하기 위해서는 반드시 헤더 파일을 추가하도록 하자.

#include

위와 같이 소스 코드 입력이 완료된 후에 프로그램 빌드를 한다.

$ gcc led.c ?o led ?lwiringPi

이 빌드 명령을 실행하면 led라는 실행 파일이 생성된다. 여기서, -o는 출력 파일명을 지정하고, -l은 사용할 라이브러리를 지정하는 것이다.

만약, 위 빌드 명령이 에러가 나면 다음과 같이 실행해 본다.

$ gcc ?o led led.c ?I/usr/local/include ?L/usr/local/lib ?lwiringPi

실행 파일이 생성되고, 이를 실행하기 위해서는 루트 권한으로 해줘야 하며, Ctrl+C로 종료한다.

$ sudo ./led 0

위와 같이 실행을 하면 GPIO 0에 연결된 LED가 delay(1000) 즉, 1초 간격으로 ON, OFF를 반복하는 것을 볼 수 있을 것이다.

이번 강좌에서는 C언어를 이용한 GPIO 출력 실험에 대해서 간단하게 알아 보았다. 다음 강좌에서는 입력 실험에 대해서 알아 보도록 한다.

[테스트 동영상]

                     
비밀번호 확인 닫기
 
 
 
 
 
 
[RaspberryPi]16. GPIO-출력 실험 ohmsa 2014/02/03 3396
 
상호명 : R&C사 사업자등록번호 : 106-02-43112 통신판매업신고번호 : 용산 03564
대표 : 곽민수 사업장소재지 : 서울시 용산구 갈월동 17-1번지 세기빌딩 101호
전화 : ☎ : 02-776-4868 ,F: 02-779-6757 개인정보담당자 : 곽민수
[회사소개] [이용안내] [이용약관] [개인정보취급방침]
Copyright ⓒ 도서출판 OHM사와 학습기기 R&C사 All Rights Reserved.