안녕하세요.
오늘은 처음으로 라즈베리파이 GPIO에 무언가를 연결해서 실습해봅니다.
아두이노, AVR, 라즈베리파든 어떤 것이 되었든 처음은 LED로 시작해야겠지요??
우선 LED부터 준비하겠습니다.
일단 집에 굴러다니는 LED 하나 씩 주워옵니다.
무슨 색인지, 전압이 어떻게 되는지 아무도 모릅니다.
혹시 집에 측정기를 가지고 계시나요?
LED는 발광 다이오드로 순방향 전압을 가했을 때 발광하는 역할을 합니다.
한마디로 그냥 PN다이오드이고 순방향 전압이 흘렸을 때 빛이 난다는 것입니다.
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초씩 점멸할 것입니다.
'Embeded SW > Raspberry Pi' 카테고리의 다른 글
[라즈베리파이] 라즈베리파이 OpenCV 4.2 설치 (0) | 2020.08.24 |
---|---|
[라즈베리파이] 라즈베리파이 카메라 테스트! (0) | 2020.08.23 |
[라즈베리파이 준비] 라즈베리파이에 쿨러 장착하기 (0) | 2020.07.26 |
[라즈베리파이 준비] 라즈베리파이 개발환경(IDE) 준비 완료 (0) | 2020.07.25 |
[라즈베리파이 준비] 라즈베리파이 우분투 자동 시간 동기화 (0) | 2020.07.23 |