중단 / 깨우기 버튼을 만드시겠습니까?


10

핀 5와 6을 사용하여 중지에서 깨우기 버튼을 준비했습니다.이 두 핀은 연결되면 전원을 재설정하고 정지 상태에서 재부팅합니다. 가능한 경우 동일한 버튼을 사용하여을 누르면 컴퓨터를 종료하는 명령을 실행하고 싶습니다 sudo halt. 이것이 가능할까요? 들어 sudo halt버튼, I는 상기 버튼에 GPIO 1 연결 GPIO 6 (접지)와 일반 GPIO 핀에 분할 할 필요가있다. GPIO 5를 이것에 연결할 수 있는지 / 안전한지 모르겠습니다.

답변:


8

다른 GPIO 핀을 추가 할 필요가 없습니다. 정지 버튼에 동일한 핀을 사용할 수 있습니다.

다음은 핀 5를 폴링하는 파이썬 코드입니다. 버튼을 누르면 핀 5가지면으로 당겨지고 (핀 6) 코드에 LOW가 표시됩니다. 이 경우 halt명령 을 실행합니다

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BOARD)
# set pin 5 to input, and enable the internal pull-up resistor
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)

oldButtonState1 = True
while True:
    buttonState1 = GPIO.input(5)

    if buttonState1 != oldButtonState1 and buttonState1 == False :
        # print "Button 1 pressed"
        subprocess.call("halt", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    oldButtonState1 = buttonState1

    time.sleep(.1)

추신. 중지에서 깨우기 기능에 대해 몰랐습니다. 당신 덕분에 지금 알고 있습니다! 감사합니다.


1
훌륭한! 나는 5와 6에 모두 할 수 있다는 것을 몰랐습니다. 감사합니다! :)
Ryan McClure

그래서 우리는 오늘 무언가를 배웠습니다. (-:
Gerben

나 자신에 대한 메모 더. 프레스를 다시 부팅하고 프레스 앤 홀드를 사용하여 종료를 수행하도록 (또는 그 반대로) 코드를 수정할 수도 있습니다.
Gerben

스크립트는 어떤 방식으로 지속적으로 실행됩니까 (예 : 데몬 화)? 영화를 볼 때 성능이 저하 된 것을 보셨습니까?
athanassis

1
실제로 풀 HD 영화를 디코딩 할 때 CPU가 몇 초 동안 100 %에 도달 할 때 시간이 오래 걸리지 않습니다. 시험해 보지 않겠습니다. 피드백을 주셔서 감사합니다!
athanassis


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.