Raspberry Pi (Raspbian)로 LED를 켜거나 끄는 프로그램 만들기

소개



Raspberry Pi(Raspbian)로 LED를 점등/소등시키는 프로그램의 소개입니다.

필요한 것


  • Raspbian이 설치된 Raspberry Pi
  • 브레드 보드
  • LEDx2
  • 저항(100Ω) x2
  • 점퍼선(수/암) x3
  • 점퍼선(수/수) x2

  • 배선



    GPIO와 GND라면 어디에서나 가능하지만, 향후 확장성 등을 생각하면 GPIO만의 핀(3, 5, 8, 10, 19, 21, 23, 24, 25 이외)을 사용하는 것이 무난하다고 생각합니다 .
    이 게시물은 33 (GPIO13), 35 (GPIO19), 39 (GND) 핀을 사용합니다.



    프로그램



    led.py
    #Import Files
    import RPi.GPIO as GPIO
    import time
    
    #GPIO Settings
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(13, GPIO.OUT)
    GPIO.setup(19, GPIO.OUT)
    
    #Main
    try:
        while True:
            GPIO.output(13, GPIO.LOW)
            GPIO.output(19, GPIO.HIGH)
            time.sleep(1)
            GPIO.output(13, GPIO.HIGH)
            GPIO.output(19, GPIO.LOW)
            time.sleep(1)
    
    except KeyboardInterrupt:
        GPIO.cleanup()
    

    해설


  • 스위치 제어에 사용 RPi.GPIO 라이브러리 가져오기
  • 시간을 얻는 데 사용 time 라이브러리 가져 오기
  • GPIO 모드를 BCM으로 설정 (물리적 핀 번호 대신 GPIO ** 사용)
  • GPIO13, GPIO19를 출력 단자로 설정 (Hi = 켜짐, Low = 꺼짐)
  • LED가 계속 깜박이기 때문에 while True:로 무한 루프
  • LED가 1 초 주기로 번갈아 깜박임
  • 설명 6으로 전환 or 프로그램이 종료 될 때까지 기다린다
  • Control + C를 누르면 GPIO를 해제하고 프로그램을 종료합니다.

    프로그램을 실행해보기


  • 프로그램 실행
  • LED가 1초 주기로 번갈아 깜박임

  • 사진을 찍는 프로그램에 통합해보세요



    이전에 작성한 사진을 찍는 프로그램의 camera_func(x)에 LED의 점등/소등 처리를 넣어 보았다.



    camera_v2.py
    #Import Files
    import RPi.GPIO as GPIO
    import picamera
    import time
    
    #GPIO Settings
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(13, GPIO.OUT)
    GPIO.setup(19, GPIO.OUT)
    GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    
    #Camera Settings
    CAM_DIR  = "/home/pi/python/_photo/"
    
    camera = picamera.PiCamera()
    
    #Camera Function
    def camera_func(x):
        if GPIO.input(26) == 0:
            GPIO.output(19, GPIO.HIGH)
            filename = time.strftime("%Y%m%d%H%M%S") + ".jpeg"
            save_dir_filename = CAM_DIR + filename
            camera.capture(save_dir_filename)
            GPIO.output(19, GPIO.LOW)
        else:
            GPIO.output(13, GPIO.HIGH)
            time.sleep(1)
            GPIO.output(13, GPIO.LOW)
    
    #Interrupt
    GPIO.add_event_detect(26, GPIO.FALLING, callback=camera_func, bouncetime=200)
    
    #Main
    try:
        while True:
            pass
    
    except KeyboardInterrupt:
        GPIO.cleanup()
    

    변경 전은 스위치를 눌러도 사진을 찍을 수 있는지 몰랐지만, 변경 후 스위치를 눌렀을 때 정상 (사진이 찍혀있는 경우)이면 녹색, 이상 (사진이 찍히지 않은 경우)이면 빨간색 의 LED가 점등하기 때문에, 아무것도 없는 것보다는 이해하기 쉬워졌다.

    참고


  • Raspberry Pi (Raspbian)로 사진을 찍는 프로그램 만들기
  • 좋은 웹페이지 즐겨찾기