반응형

안녕하세요.

 

오늘은 처음으로 라즈베리파이 GPIO에 무언가를 연결해서 실습해봅니다. 

 

아두이노, AVR, 라즈베리파든 어떤 것이 되었든 처음은 LED로 시작해야겠지요??

 

우선 LED부터 준비하겠습니다. 

 

일단 집에 굴러다니는 LED 하나 씩 주워옵니다. 

 

무슨 색인지, 전압이 어떻게 되는지 아무도 모릅니다. 

 

혹시 집에 측정기를 가지고 계시나요? 

 

LED는 발광 다이오드로 순방향 전압을 가했을 때 발광하는 역할을 합니다.

 

한마디로 그냥 PN다이오드이고 순방향 전압이 흘렸을 때 빛이 난다는 것입니다. 

 

light emitting diode

led는 다이오드이기 때문에 측정기를 다이오드에 두고 측정해보겠습니다. 

 

다이오드 버튼에 갖다두고

 

(+) : 긴다리 ; 빨간색 봉  => GPIO 선 (저 같은 경우는 2번에 연결함)

(-) : 짧은 다리 : 검은색 봉=> GND(접지) 

 

위 측정한 값을 통해 알 수 있는 것

1. blue led

2. led에 필요한 순방향으로 약 2.6V가 걸리면서 led가 켜진다. 

 

GPIO 2번 : 빨간색 봉

접지(GND) : 검은색 봉

 

현재 GPIO를 2초마다 HIGH LOW로 반전되는 상황 

 

3.3V -> 0V -> 3.3V -> 0V ->3.3V ....

 

약 3.3V 

위 측정한 값을 통해 알 수 있는 것

1. GPIO가 HIGH일 때 3.3V

2. GPIO가 LOW일 때 0V

 

(입력 전압 - LED 전압) / LED 전류 = 저항값

 

입력전압 : 약 3.3V

LED 전압 : 약 2.6V

LED 전류 : 약 20mA(기본적으로 LED의 전류는 20~30mA라고 한다.)

 

(3.3 - 2.6) / 0.02 = 35(ohm)

 

위 LED에 필요한 저항은 35이라는 것을 알 수 있다.

 

 

하지만 현재 가지고 있는 가장 작은 저항이 100옴이니, 그냥 100옴을 쓰겠습니다. 하하...

대략, 이런 느낌일까요... 피스파이스로 그리는걸 예전에 배웠는데 현재는 다 까먹었습니다.. 못그렸지만 잘봐주시길..

 

빵판에 꼽으면 이렇게 됩니다. 코드는 최대한 아두이노 느낌으로 한 번 가보겠습니다. 

 

import RPi.GPIO as GPIO
import time


def setup():
   GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme 
   GPIO.setup(2, GPIO.OUT) # output rf


def loop():
   GPIO.output(2, GPIO.HIGH)
   time.sleep(0.1)      
   GPIO.output(2, GPIO.LOW)
   time.sleep(0.1)


try:
   setup()
   
   while(True):
      loop()        
         
except KeyboardInterrupt: 
   print("Keyboard interrupt")

except:
   print("some error") 

finally:
   print("clean up") 
   GPIO.cleanup() # cleanup all GPIO 

 

아두이노처럼 setup 부분 loop 부분으로 함수화 시켰습니다. 

 

KeyboardInterrupt는 CTRL C 를 치면 인터럽트 걸립니다. 

 

finally로 동작을 마치면 GPIO 핀을 clean 시킵니다. 

 

동작은 0.1초씩 점멸할 것입니다. 

 

 

 

 

 

728x90
반응형

+ Recent posts