라즈베리

초보자를 위한 라즈베리파이 C 코드 편집 실행에 의한 LED ON OFF

coding art 2018. 3. 13. 17:31
728x90



터미널 창에서 LED on OFF를 위해 사용했던 gpio 명령처럼 LED를 일정한 시간 간격으로 on OFF 하는 예를 들자면 BLINK와 같은 제어 명령을 만들기 위해서는 결국 C언어 코딩에 의존 할 수밖에 없다. 특히 C 언어를 사용하여 인터페이스 핀에 설치된 LED 회로를 제어하기 위해서는 LED 회로가 설치되는 인터페이스 핀 번호를 C 언어에서 인식할 수 있는 넘버링 체계로 설정이 되어야 한다. 파이선과 gpio 명령에서 사용했던 BOARD 넘버링이나 BCM 넘버링과는 다른 wiringPi  라이브러리에 의해 지원되는 넙버링을 사용할 필요가 있다.


wiringPi 는 BCM2835 칩을 사용하는 라즈베리 파이 보드에서 C 언어 체계를 사용하는 GPIO를 지원하는 전용 라이브러리 모듈이다.  wiringPi 설치를 위해서는 아래와 같이 라즈베리의 OS 버전인 Jessie 또는 Stretch 에 대해서 update 작업에서 시작하여 최종적으로  build 작업까지 이루어져야 한다.



마지막의 ./build 의 의미는 build 라는 이름으로 준비한 명령어를 실행하는 방법이다. 즉 ./+명령어 인 셈이다.


wiringPi  디렉토리 내부에 포함된 examples 디렉토리를 열어보면 blink.c 예제가 들어 있음을 확인할 수 있다. blink.c를 wiringPi 라이브러리를 사용하여 컴파일과 동시에 실행파일 blink를 만들어 보도록 하자.
/home/pi/wiringPi/examples 디렉토리에서 blink.c 파일을 확인한 후에 이 파일을 더블 클릭하면 라즈베리 파이에서 기본적으로 제공되는 Text Editor 편집기에 의해 코드를 읽어보자. 이 편집기는 터미나 창에서의 nano  편집기에 비하면 아주 편하게 사용할 수 있는 편리한 편집기이다.

아래의 blink.c 코드는 코멘트 부분을 거의 다 지우고 제목만 남겨둔 상태이다.


헤더 위치에서 C 언어 의 표준 입출력 지원 모듈인 <stdio.h>와 새로운 넘버링을 지원하는 <wiringPi.h>를 설치한 다음 on OFF 할 LED 핀 번호를 설정해야 한다.

즉 BCM 이나 GPIO로는 17번이고 wiringPi 로는 0번에 해당한다. 핀 레이아웃 그림을 참조하기 바란다.






즉 LED 0 을 설정한다.

main 프로그램에서 pinMode()를 OUTPUT으로 설정한다.
for 루프 코딩에서 digitalWrite() 명령을 사용하여 HIGH 와 LOW를 반복하되 500 msec 의 시간지연을 주도록 한다.



이 코드를 컴파일하여 실행시켜 보자.

     gcc -o blink blink.c -lwiringPi

-o는 컴파일한 결과 즉 object 파일명을 직접 지정하는 옵션이며 여기서는 blink로 지정해둔다. -l 은 사용할 라이브러리를 직접 지정하는 옵션이다. 컴파일이 끝나고 blink.object 파일이 얻어지면 sudo ./blink 명령에 의해 실행 시킨다. 이 코드를 실행 시킨 후 중간에 멈추려면 Cntr+C 키를 누른다.
.