라즈베리

초보자를 위한 라즈베리 파이선3 LED ON OFF 코딩

coding art 2018. 3. 13. 15:20
728x90





라즈베리파이에서 LED를 코딩에 의해 on OFF 해보자. 사진에서 빵판에 설치된 LED+저항(220옴) 회로가 인터페이스 핀 번호 11(GPIO17번)번과 6(Ground)번에 설치되어 있다.

라즈베리 파이는 리눅스 운영체계를 가지고 있으므로 전원과 함께 on 되면 바탕화면에서 필요한 코딩 작업 후 실행시켜야 한다.

라즈베리에서 중용한 코딩 언어로는 파이선과 C 2종류가 있으며 이들은 라즈베리 파이 보드에 OS 인 Jessie 나 Stretch를 설치하면 자동으로 설치가 이루어진다.


그림에서처럼 메뉴를 펼쳐 보면 Python2 와 Python3 이 있음을 알 수 있으며 2는 2.7 버전 3은 3.4 버전을 뜻한다. 2종류의 Python 버전은 서로 공통점은 있으나 코딩 문법에 있어서 명령 체계가 달라 자신이 어느 버전을 사용하는지 항상 확인을 해야 한다.

예를 들자면 Python2 버전에서 작성한 코드는 버전3에서 실행이 되지 않는다는 사실이다.


물론 C 코딩도 가능하다. 하지만 Python 에서처럼 별도의 전용 편집기(IDLE)를 제공하지 않는다. C 코드 편집을 위해서는 보조 프로그램의 Text Editor를 사용하여 확장자 c를 부여하여 파일명을 부여해야 컴파일이 가능하다는 점을 참조하자.

한펴 사용 빈도 차원에서 보면 아무래도 C 보다는 Python 이 폭 넓게 사용되고 있음에 유의한다.

라즈베리 파이 보드의 측면에 제공되는 40개에 달하는 인터페이스 핀들을 사용하여 LED를 on OFF 할 수 있는 코드를 작성해 보도롣 하자. LED on OFF 라는 작업이 대단히 간단한 작업이긴하나 라즈베리에서 이러한 목적을 달성하기 위해서는 Python에서 40개의 인터페이스 핀 제어를 지원하는 라이브러리 모듈 즉 RPI.GPIO 모듈이 설치되어야 한다. 아래에 제시된 RPI.GPIO 모듈을 설치하는 과정은 Python3.4 버전용임에 유의한다. 즉 Python2.7 버전에서는 코드 실행이 되지 않는다.


sudo apt-get update
sudo apt-get install rpi.gpio
wget 
https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
tar –xvf RPi.GPIO-0.5.11.tar.gz
cd RPi.GPIO-0.5.11
sudo python setup.py install



라즈베리 파이 보드에서 총 40개에 달하는 인터페이스 핀을 통해 입력이나 출력을 위해서는 RPI.GPIO 라이브러리 지원이 필수적이다. 

RPI 는 라즈베리 파이의 약어이며 GPIO는 General Purpose In & Out 의 약어이다.

라즈베리 파이 보드에서 핀 배치 번호 부여 방식은  GPIO, BCM 및 WiringPi 세 가지 방식이 있음에 ㅇ유의하여 자신이 사용하는 Numbering을 확인하여야 한다.

파이선 코딩에서 흔히 사용되는 Numbering은 BOARD 번호로 설정된다. 즉 40개의 인터페이스 핀들이 배치되는 순번을 따른 Numbering이다.
한편 BCM 넘버링은 브로드컴 칩 BCM2835 칩 사용에서 유래된 듯하며 C언어 또는 php 언어 사용 시에는 WiringPi 방식의 넘버링과  WiringPi 라이브러리 설치 및 지원이 반드시 필요하므로 별도로 다루어 보기로 하자.





최신 버전인 파이선 3을 클릭하면 다음과 같이 편집기 화면이 나타난다. 현재 파이선 3.5 버전임을 알 수 있다.







파이선 코드를 편집하기 전에 인터페이스 핀에 설치된 LED 회로 관해 알아보자.

블로그 처음 부분의 사진에서는 Circuit I 과 같이 배선이 되었다. 하지만 위 배선도 그림에서는 Circuit II처럼 배선이 되었음에 주의하자. 하지만 여기서 작성하는 코드를 실행할 경우 결과적으로 LED가 깜빡이는 현상은 동일하다.






File에서 New File을 클릭하여 아래와 같이 LED를 on OFF 하도록 코딩 해보자.


코딩 첫 부분은 라이브러리 즉 모듈을 불러들이는 구조이다. 대문자 RPI.GPIO는 라즈베리 파이 보드의 인터페이스 핀 GPIO를 지원하는 라이브러리이고 time은 일종의 타이머를 지원하는 라이브러리이다.
time은 아두이노의 delay() 명령과 유사한 sleep() 명령을 지원한다.

GPIO.setmode(GPIO,BOARD)는 GPIO 번호를 BOARD 방식으로 지정하며 핀 배치도를 참조하기 바란다. 예제에서는 11번을 지정하였다.

# to use Raspberry ⚫⚫⚫는 아두이노의 // 즉 코드 실행과 무관하게 내용을 설명하는 부분에 해당한다.

GPIO.setup()은 아두이노의 setup() 문 내에서 흔히 사용되는 pinMode() 명령에 해당되며, GPIO.OUT은 지정된 디지털 핀을 출력 모드로 설정한다.

라즈베리의 파이선 코딩에서는 마이크로 콘트롤러인 아두이노의 코딩과는 달리 loop() 처럼 무한 반복되는 것은 아니므로 일단 for loop 문을 사용하여 깜빡이는횟수를 지정해 주도록 한다.

아두이노 for loop 와 문법 상 다른 점은 괄호를 사용하지 않고 명령 코드들을 indent 시켜 즉 탭만큼 안으로 들어가도록 코드를 배치하여 for loop 문의 범위를 정해 준다.

Run 탭을 눌러 메뉴에서 Run Module을 클릭하면 코드가 실행된다. 작업 수행이 끝나면 GPIO 설정했던 부분을 원상회복 하도록 클린업 시킨다.

코드 자체는 대단히 짧으므로 직접 입력해 보기 바란다.