Tworzysz przycisk zatrzymania / wybudzenia?

10

Ustawiłem przycisk wybudzenia z zatrzymania za pomocą pinów 5 i 6. Te dwa piny, kiedy są podłączone, zresetują zasilanie i zrestartują się od zatrzymania. Chcę użyć tego samego przycisku, jeśli mogę, aby uruchomić polecenie, które po naciśnięciu spowoduje wyłączenie komputera za pomocą sudo halt. Czy to byłoby możliwe? W przypadku sudo haltprzycisku musiałbym podłączyć GPIO 1 do przycisku, a następnie podzielić na GPIO 6 (masa) i ogólny pin GPIO. Nie wiem też, czy jest możliwe / bezpieczne połączenie GPIO 5 z tym.

Ryan McClure
źródło

Odpowiedzi:

8

Nie trzeba dodawać innych pinów GPIO. Możesz użyć tych samych szpilek do przycisku zatrzymania.

Oto kod Pythona, który sonduje styk 5. Po naciśnięciu przycisku styk 5 jest ciągnięty do masy (styk 6), a kod odczytuje NISKI. W takim przypadku uruchomi się haltpolecenie

#!/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)

PS. Nie wiedziałem o funkcji Wake from Halt. Dzięki tobie wiem już teraz! Więc dziękuję.

Gerben
źródło
1
Znakomity! Nie zdawałem sobie sprawy, że mogę to wszystko zrobić na 5 i 6. Dziękuję! :)
Ryan McClure
Więc oboje nauczyliśmy się dzisiaj (-:
Gerben,
Więcej notatki dla mnie. Możesz nawet zmodyfikować kod, aby prasa zrestartowała się, a następnie naciśnij i przytrzymaj, aby zamknąć system (lub odwrotnie).
Gerben
W jaki sposób twój skrypt działa w sposób ciągły, tj. Zdemonizowany? Czy zauważyłeś spadek wydajności podczas oglądania filmów?
athanassis
1
Rzeczywiście, jest to bardzo długi czas, ale nie wtedy, gdy procesor osiągnie 100% przez kilka sekund, gdy np. Dekoduje film Full HD. Spróbuję, testowanie nigdy nie boli. Dzięki za opinie!
athanassis
2

Przycisk resetowania można dołączyć do nagłówka P6, za pomocą którego można zresetować Pi. Chwilowe zwarcie razem dwóch pinów P6 spowoduje miękki reset procesora (który może również „obudzić” Pi ze stanu zatrzymania / wyłączenia)

por

hiro345
źródło