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.

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ę.


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.