도서(BOOK)
키트(KIT)
특판 상품
졸업작품&전자기초
응용모듈
전자부품
모터
기구
엔클로져
개인결제용
 
고객센터 게시판
자유게시판
MCU 통합 게시판
강좌-RaspberryPi
강좌-드론(쿼드콥터)
강좌-아두이노(기초)
강좌-아두이노(응용)
신제품/신기술 소개
DIY 공작 게시판
윤교수의 연구실 칼럼
 
 
 
1 python_iot 제어 & 통신 프..
 
 
2 자료실이용시 참고사항
 
 
3 2024년 갑진년 (甲辰年) 새..
 
 
4 사무실 이전 안내
 
 
5 2023 계묘년 새해 복 많이..
 
 
 
 
 
 
 ☎ : 02-776-4868

 F: 02-779-6757
이메일문의
 
☞ 평일(월~금) : 10~17시
☞ 주말, 공휴일 휴무
 
국민822437-04-008415
☞ 예금주 : 이민희(옴사(OHM사))
 
 
1 윤교수의 마이크로프로세서 월드
 
2 (주)석영브라이스톤
 

 
강좌-RaspberryPi
 
[RaspberryPi]16. GPIO-출력 실험
 
 
2014/02/03 (15:31)
작성자 : ohmsa 조회수 : 8355
 
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 8355
 


Copyright ⓒ 도서출판 옴사 All Rights Reserved. ☎ : 02-776-4868 ,F: 02-779-6757
상호명 : 옴사(OHM사) 사업장소재지 : 서울특별시 성북구 아리랑로 7길11,206호
사업자등록번호 : 416-18-31168 [사업자정보확인] 통신판매업신고번호 : 제2025-서울 성북-0591 호
대표 : 이민희 개인정보 보호 책임자 : 이민희