본문으로 바로가기

오늘은 푸시버튼을 누르면 LED가 켜지는 겁~~나게 간단한 예제를 라즈베리파이에서 Python을 이용해서 테스트해 보도록 하겠습니다. 뭐 언제나 그렇듯 항상~~ 기초적인 거지요.. 푸쉬버튼과 LED를 살짝 구해야하고, 또 연결선등등을 구해야합니다만... 저는 이걸 엘레파츠의 라즈베리파이2 입출력 키트로 해결했습니다. 요즘은 엘레파츠가 마음에 들더군요^^ 배송도 빠르고~~ 대응도 괜찮고^^... 뭐 아무튼 그렇게 키트를 구했으니 이제 시작해볼까요... 

일단 LED에 대해 아셔야합니다. 뭐냐구요?? +-를 알아야죠^^. 위 그림처럼 구분하면 됩니다. 내부를 보고 짧은쪽이 +, 혹은 다리가 긴 쪽이 +, 위에서 보았을때 동그스름한 부분이 +... 이렇습니다.^^

출처 : DIY Hacking http://diyhacking.com/raspberry-pi-robot/

그리고 라즈베리파이의 GPIO 핀맵을 알아야죠.. 저는 라즈베리파이 B+라서 위 그림 왼쪽의 40핀짜리를 읽으면 됩니다.^^ 그리고 [바로가기]에서 소개한 Fritzing이라는 툴로 그린 브레드보드 그림은

이렇습니다. 회로도로는 

이렇구요... 푸쉬버튼은 GND로 한쪽을 연결하고, 다른쪽은 풀업저항을 이용해서 GPIO 21번에 연결했습니다. 그리고, LED는 330옴 저항으로 GPIO 6번에 연결했습니다. 위 그림으로 나머지는 다 설명되겠지요.. 원체 간결한 예제니까요^^

아까 이야기한 키트를 사면 케이스가 따라옵니다. 그러나 한가지 에러가 있는게 뚜껑을 닫으면 저 케이블이 연결되지 않더군요ㅠㅠ.

저렇게 케이블을 연장하고... GPIO를 확장하는

GPIO 확장 보드를 미니 브레드보드에 연결해서 사용했습니다. Fritzing에는 확장보드까지는 그리지 않았습니다.^^

그리고.. 저렇게 푸쉬버튼과 LED가 배치되었네요^^

이제 버튼을 누르면 LED가 켜져야죠^^

이렇게 말이죠.. ㅎㅎ 이제 가장 중요한 Python 코드를 보도록 하겠습니다.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(6, GPIO.OUT)
GPIO.setup(21, GPIO.IN)

try:
    while True:
        inputIO = GPIO.input(21)

        if inputIO == False:
            GPIO.output(6, GPIO.HIGH)
            #time.sleep(1)

        else:
            GPIO.output(6, GPIO.LOW)
            #time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()

먼저 라즈베리파이의 GPIO를 import하고 GPIO.setmode로 BCM을 설정해둡니다. 그리고, GPIO.setup으로 6번과 21번을 각각 GPIO.out과 in으로 설정해서 푸쉬버튼 값을 받고(in) LED를 켜기 위해 출력(out)하도록 설정합니다. 여기서 try/except 구문으로 구분한것은 키보드로 CTRL+C로 멈출때, GPIO 출력 설정을 지우기(GPIO.cleanup)위해서 입니다. 그렇지 않으면 다시 실행하면 GPIO가 열려있다는 에러 메세지를 받을 수도 있습니다. 그리고, 주석처리된 time.sleep(1)은 버튼을 누르거나 땔때, 1초를 기다리는 것으로 구미에 맞게 사용하시면 됩니다.^^ 코드야 원체 간단하니.. 이정도면 되죠^^ 오늘은 아가 미바뤼의 겨울방학으로 저는 하루 쉬면서 이렇게 포스팅을 할 수 있네요~^^....


댓글을 달아 주세요

  1. BlogIcon Deborah 2016.02.26 13:15 신고

    아마도 저희 남편이 보면 이해력이 빠를듯하네요.

  2. BlogIcon 초록배 2016.02.26 21:01 신고

    아주아주 오랜만에 보는 회로판이네요. ㅎㅎㅎㅎ

  3. BlogIcon 도랑가재 2016.02.26 22:08 신고

    신기한 장면 보고 갑니다.
    언젠가는 큰 도움 받아야겠어요.^^

  4. BlogIcon 베짱이 2016.02.26 22:25 신고

    라즈베리파이
    제조혁명을 일으킬것이라고 하는데..
    관심은 가지면 비전공자에게는 아직은 진입장벽이 있어보여요. ㅠ..ㅠ

  5. BlogIcon 핑구야 날자 2016.02.27 08:19 신고

    흥미로운데요~~ 일반인도 좀 관심을 갖으면 해볼만 하겠군요

  6. BlogIcon 감자튀김 2016.02.28 11:31 신고

    라즈베리파이로 다양한 것들을 할 수 있네요~ ^^

  7. 2016.02.28 12:41

    비밀댓글입니다

  8. BlogIcon 하루를재미나게 2016.02.28 14:02 신고

    헉!! 이런쪽은 영~~~ ㅜㅜ
    오늘 하루도 즐거운 하루 보내세요

  9. BlogIcon 딸기향기 2016.02.28 17:13 신고

    저도 요즘 파이썬 공부 중인데 라즈베리파이랑 같이 할 생각은 못해봤네요!

  10. BlogIcon 시환맘 2016.02.29 01:06 신고

    필요한분들께 정말 유용한글이 될것같아요^^ 잘보고갑니다 좋은하루되세요

  11. BlogIcon 엘레파츠 2016.03.10 14:39 신고

    안녕하세요.엘레파츠 웹관리팀입니다.
    좋은 평가를 해주셔서 감사드립니다. ^^

  12. 2016.03.17 18:14

    비밀댓글입니다

    • BlogIcon PinkWink 2016.03.17 18:33 신고

      네... 그건 제가 잘 모릅니다. 저는 그저 fritzing을 쓰는 이유가 블로그에 올릴때 회로 구성을 쉽게 설명하기 위해서라서요.ㅜㅜ