BCM 넘버링 또는 GPIO 넘버링 기준으로 17번, BOARD 넘버링으로는 11번에 LED가 전류 제한 저항과 함께 직렬로 배선되어 있는 LED 를 파이선이 아닌 LXTerminal 에서 gpio 인터프리터 명령으로 직접 제어해 보자.
라즈베리 파이는 마이크로콘트롤러가 아닌 엄연한 컴퓨터이므로 OS인 라즈비안이 있으며 이로 인해 여러 가지 언어로도 제어 실행이 가능하다.
아두이노에서의 LED on OFF 문제는 아두이노 편집기가 한 가지 언어 즉 C/C++ 만을 사용하기 때문에 이종 컴퓨터 언어에 의한 다양성 문제가 없어 상대적으로 라즈베리 파이에 비해서 간단할 수도 있을 듯하다.
하지만 라즈베리 파이의 경우 LXTermial의 인터프리터 명령 및 C 언어 뿐만 아니라 파이선도 워낙 폭넓게 사용되고 있기 때문에 이들에 대한 기본적인 경험 및 이해를 갖추어 둘 필요도 있으며 결국은 사용자의 선택의 문제일 것이다.
WiringPi는 BCM2835 칩을 사용하는 라즈베리 파이에서 C 언어 체계를 사용하는 GPIO를 지원하는 전용 라이브러리이다. 일차적으로 라즈베리 파이의 OS 인 라즈비안의 최신 버전 업데이트 여부를 확인하고 git를 설치 후 wiringPI를 다운로드하여 설치하도록 한다.
설치 완료 후 라즈베리 File Manager에서 wiringPi 디렉토리를 확인하도록 한다.
LXTerminal을 열어서 아래와 같이 인터프리터 방식으로 명령을 입력 실행하여 LED를 on OFF 해보도록 하자.
GPIO 에 의한 LED on OFF 제어 결과를 gpio readall 이라는 명령을 통해 확인하자. LED OFF 인 경우 BCM 17번 핀에서 V의 값이 0 임을 확인할 수 있다.
gpio –g write 17 1 명령에 의해 LED on 인 경우도 V 값 확인이 가능하다.
gpio 명령에 의해 LED on 또는 OFF가 가능하다는 점이 확인되었으나 BLINK와 같은 제어 명령은 없는듯하다. 결국 C언어 코딩에 의존 할 수밖에 없어 보인다.
wiringPi 디렉토리 내부에 포함된 examples 디렉토리를 열어보면 blink.c 예제가 들어 있음을 확인할 수 있다. blink.c를 wiringPi 라이브러리를 사용하여 컴파일과 동시에 실행파일 blink를 만들어 보도록 하자.
/home/pi/wiringPi/examples 디렉토리에 blink.c 파일을 확인한 후에 이 파일을 더블 클릭하여 라즈베리에서 제공하는 편집기에 의해 코드를 읽어보자.
자동으로 Leafpad 라는 편집기와 함께 아래의 코드를 볼 수 있을 것이다. Leafpad는 필자도 처음 보는데 라즈베리 파이의 nano 편집기에 비하면 아주 편하게 사용할 수 있는 편집기이다.
blink.c 코드의 코멘트 부분을 거의 다 지우고 제목만 남겨둔 상태이다.
아두이노 C/C++ 코드 구조와 유사함을 볼 수 있다. 두 개의 지원 라이브러리를 불러 설치한 다음 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는 컴파일한 결과를 직접 지정하는 옵션으로서 여기서는 blink로 지정해둔다. -l 은 사용할 라이브러리를 직접 지정하는 옵션이다. 컴파일이 끝난 후 sudo ./blink 명령에 의해 실행 시킨다. 이 코드를 실행 시킨 후 중간에 멈추려면 Cntr+C 키를 누른다.
라즈베리 파이에서는 아직까지는 파이선이 C언어에 비해 간단 명료해 보이는 것이 사실이다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
초보자를 위한 라즈베리 파이 블루투스로 스마트폰 연결 출입 체크 파이선 2 코딩 (0) | 2017.06.20 |
---|---|
아두이노 초보자를 위한 “시리얼 모니터를 이용하는 0.96 OLED 시계/타이머 초기 시간 세팅” (0) | 2017.06.19 |
아두이노 NodeMCU 또는 우노로 전해 캐패시터의 충전 전압을 모니터링 하자. (0) | 2017.06.10 |
아두이노 라즈베리 파이 IOT(사물인터넷) 센서 산업 구글트렌드 상관관계 (0) | 2017.06.10 |
아두이노 ESP8266 NodeMCU 와이파이 0.96 모노크롬 OLED IOT 시계 (0) | 2017.06.09 |