Raspberry Pi_Kor_25.7.1 Digital 출력 – LED On/Off


Published Book on Amazon


All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents


25.7   digital /출력

 

25.7.1  Digital 출력 – LED On/Off

 

여기서는 LED Raspberry Pi에 연결하고, 프로그램을 이용하여 LED를 깜박이게 하는 사례를 구현해 보도록 한다.

 

25.7.1.1    LED의 설치

 

회로를 만들 때는 breadboard를 이용하여 아래의 그림과 같이 LED, 저항, Raspberry Pi를 연결한다.

 

먼저 LED breadboard에서 양쪽 다리가 다른 행에 있도록 설치한다. 그런 다음 LED를 아래와 같이 Raspberry Pi GPIO connector에 연결한다. LED 긴 다리(+) physical 번호 11 pin(wiringPi 기준 0 pin)에 연결하고, LED 짧은 다리(-) physical 번호 6 pin(ground)에 연결되도록 한다.  회로에 사용되는 LED에는 가장 일반적인 5mm diameter LED를 사용하고, 저항에는 330Ω을 사용한다.

blink1

그림 25‑18 Digital 출력 – LED On/Off

 


 

25.7.1.2    <WiringPi> library를 이용한 사례

 

여기서는 <WiringPi> library를 이용한 프로그램으로 Raspberry Pi에 연결된 LED를 깜박이게 하는 GPIO interface를 보여 준다. 여기서 프로그램을 작성할 때는 C 언어를 사용한다.   

 

다음과 같은 프로그램을 작성해서 "ledtest.c" 파일에 저장한다.

 

#include <wiringPi.h>

int main (void)

{

  wiringPiSetup () ;

  pinMode (0, OUTPUT) ;

  for (;;)

  {

    digitalWrite (0, HIGH) ;

delay (500) ;

    digitalWrite (0,  LOW) ;

delay (500) ;

  }

  return 0 ;

}

 

위의 프로그램의 내용을 좀 살펴보면 다음과 같다.

    프로그램에서 <WiringPi> library 기능을 사용할 수 있도록 "wiringPi.h" header include하고 있다.

    "wiringPiSetup( )" 함수로 GPIO를 초기화한다

    "pinMode( )" 함수를 사용하여 wiringPi 기준 0 pin output으로 설정하고 있다.

    "digitalWrite( )" 함수를 사용하여 일정한 시간 간격으로 HIGH 신호와 LOW 신호를 출력하고 있다.   여기서 HIGH 신호는 전류가 흐르는 상태를, LOW 신호는 전류가 흐르지 않는 상태를 의미한다.


 

작성된 프로그램을 compile하여 실행 파일을 만든다. compile을 할 때는 compiler  <WiringPi> library를 참조할 수 있도록 아래와 같이 반드시 <wiringPi> library를 지정하도록 한다.

 

gcc -Wall -o ledtest  ledtest.c -l wiringPi

 

아래와 같이 compile에서 만들어진 실행 파일을 실행하여 제대로 작동하는지 확인한다. 모든 것이 잘되면 LED 1초에 한번씩 깜박일 것이다.

 

./ ledtest

 

 

 


 

25.7.1.3    <RPi.GPIO> library를 이용한 사례

 

여기서는 <RPi.GPIO> library를 이용한 프로그램으로 Raspberry Pi에 연결된 LED를 깜박이게 하는 GPIO interface를 보여 준다. 여기서 프로그램을 작성할 때는 Python 3 언어를 사용한다.  

 

Python 3 IDLE를 시작하고, 아래와 같은 간단한 Python 프로그램을 작성하여 "ledtest.py"에 저장한다.

 

import RPi.GPIO as GPIO

import time

 

GPIO.setmode( GPIO.BOARD)

GPIO.setup(11, GPIO.OUT)

 

blink_count = int(raw_input("Enter LED Blink Count ->"))

 

for i in range(0, blink_count):

           GPIO.output(11, True)

           time.sleep(2)

           GPIO.output(11, False)

           time.sleep(2)

           print ("LED blink count ->%d" %(i+1) )

 

GPIO.cleanup()

print ("LED blink Ended")

 

위의 프로그램의 내용을 좀 살펴보면 다음과 같다.

    프로그램에서 <RPi.GPIO> library 기능을 사용할 수 있도록 "RPi.GPIO" import한다..

    프로그램에서 시간에 대한 처리를 하기 위해서 "time" import한다. .

    "setmode( )" 함수를 이용해서 pin 번호체계를 BOARD 체계로 설정한다

    "setup( )" 함수를 사용하여 11 pin output으로 설정한다.

    "raw_input( )" 함수로 LED 깜박이는 회수를 입력 받는다.


 

    "output( )" 함수를 사용하여 일정한 시간 간격으로 "True" 신호와 "False" 신호를 출력하고 있다.   여기서 "True" 신호는 전류가 흐르는 상태를, "False" 신호는 전류가 흐르지 않는 상태를 의미한다.

    모든 처리가 완료되면, "cleanup( )"를 사용하여 GPIO 상태를 처음 상태로 초기화한다.

 

Terminal 화면에서 "sudo" 명령으로 다음과 같이 프로그램을 실행한다. 그러면 LED를 깜박이는 회수를 입력하게 되고, 다음에는 LED가 주기적인 간격으로 깜빡일 것이다.

  

sudo  python  ledtest.py


 

Leave a Reply