라즈베리 파이 피코 보드로 신호등 만들어보기

라즈베리 파이 피코 보드로 신호등 만들어보기

앞의 글에서 마이크로 파이썬을 이용하여 라즈베리 파이 피코 보드를 사용하는 기본적인 방법을 소개하였고, 그 첫 사용 예제로 피코 보드에 내장되어 있는(헤더 핀 25번에 연결되어 있는) 자체 LED를 깜박이도록 하는 방법을 소개하였었다.

https://blog.naver.com/mythee1/223176363165

그런데 앞서 소개한 예제를 조금만 변형시키면, 교통 신호등을 만들어 볼 수 있어서, 다음과 같은 방법으로 신호등 예제를 만들어 보았다.

* 피코 보드에 내장된 기본 LED 대신 3개의 LED를 준비하여 사용한다.

적색과, 녹색, 파란색 LED를 각기 1개씩 구했다.

* 이들 각각의 LED에 신호를 주기 위해 3개의 헤더 핀을 선택한다.

내 경우에는 GP11, GP12, GP 13번 핀을 각각에 사용하기로 했다.

* 각각의 LED는 선택한 헤더 핀으로 + 신호를 받게 되므로, 이들 LED에 -를 연결해 주어야 하는데, 피코 보드의 접지(GND) 핀을 공통으로 연결해 주면 된다. 피코 보드에는 8개의 GNP 핀 이 있으며, 이들은 동등한데, 나는 GP17과 GP18 사이에 있는 GND 핀을 이용하기로 했다.

* 위에서 정한 대로 핀들을 연결해 주었다. 핀들을 연결할 때는 집에서 굴러다니던 오래된 브레드 보드를 이용했고, LED에 과전류가 흐르지 않도록 220옴의 저항을 연결해 주었다. (아두이노 보드들이 대개 5V를 출력하는데 반해 라즈베리파이 피코 보드는 3.2~3.3V의 전압으로 출력하기에, 내 경우에는 저항이 없어도 LED가 좀 더 밝게 빛날 뿐 별문제는 없었다. LED 종류에 따라 처음 전원이 들어올 때 LED가 과전압/과류로 못쓰게 되는 경우도 있기 때문에 주의가 필요하다. – 아두이노 보드에서는 저항 사용이 필수적이다 )

* 그리고 다음과 같이 이전 글에서 소개한 예제 코드를 약간 변경했다.

import machine
import time

ledpin=machine.Pin(25, machine.Pin.OUT)
redled=machine.Pin(11, machine.Pin.OUT)
greenled=machine.Pin(12, machine.Pin.OUT)
blueled=machine.Pin(13, machine.Pin.OUT)
while True:   
    ledpin.value(1)
    redled.value(1)
    time.sleep(5)
    ledpin.value(0) 
    redled.value(0)
    
    greenled.value(1)
    time.sleep(5)
    greenled.value(0)
    
    blueled.value(1)
    time.sleep(5)
    blueled.value(0)

그리고 이 코드를 실행하면 다음과 같이 5초 간격으로 3가지 색상의 LED가 번갈아 켜졌다 꺼진다.

켜지고 꺼지는 간격을 조정하고 싶으면 자신이 원하는 대로 코드 내 time.sleep() 안의 숫자를 초 단위 수정하면 된다.

만일 이렇게 만든 신호등 회로를 PC와의 연결 없이 단독으로 사용하려고 하는 경우에는, 해당 프로그램을 main.py라는 이름으로 피코 보드에 저장하면 된다.

그러면 전원만 연결된 상태에서 다음과 같이 동일한 동작을 자동으로 반복하게 된다. 즉, 크기와 모양만 다를뿐 길거리에 있는 신호등과 유사한 기능을 구현하게 된것이다.

(참고: 만일 LED 대신 릴레이 스위치를 통해 전열기구나, 모터 등이 연결된다면 라면을 자동으로 끓여주는 등의 기능도 구현할 수 있게 되는 셈이다.)