Создание кнопки остановки / пробуждения?

10

Я установил кнопку пробуждения от остановки, используя контакты 5 и 6. Эти два контакта, когда они подключены, сбросят питание и перезагрузятся после остановки. Я хочу использовать эту же кнопку, если могу, для запуска команды, которая при нажатии выключит компьютер с помощью sudo halt. Будет ли это возможно? Для sudo haltкнопки мне нужно было бы подключиться от GPIO 1 к кнопке, затем разделить на GPIO 6 (заземление) и общий вывод GPIO. Я не знаю, возможно ли / безопасно подключить GPIO 5 к этому.

Райан МакКлюр
источник

Ответы:

8

Нет необходимости добавлять другие контакты GPIO. Вы можете просто использовать те же контакты для кнопки остановки.

Вот некоторый код Python, который будет опрашивать контакт 5. Когда кнопка нажата, контакт 5 будет заземлен (контакт 6), и код будет читать НИЗКИЙ. В этом случае будет запускать 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)

PS. Я не знал о функции Wake from Halt. Благодаря тебе я теперь знаю! Тогда спасибо.

Gerben
источник
1
Brilliant! Я не понимал, что смогу сделать все это только на 5 и 6. Спасибо! :)
Райан МакКлюр
Итак, мы оба кое-что узнали сегодня (-:
Гербен
Больше примечания для меня. Вы даже можете изменить код, чтобы перезагрузка была нажата, а нажатие и удерживание - для выключения (или наоборот).
Гербен
Каким образом ваш скрипт работает непрерывно, т.е. демонизируется? Заметили ли вы снижение производительности при просмотре фильмов?
athanassis
1
Действительно, это очень долго, но не тогда, когда процессор достигает 100% в течение нескольких секунд, например, при декодировании фильма в формате Full HD. Я попробую, тестирование никогда не повредит. Спасибо за ответ!
athanassis
2

Кнопка сброса может быть прикреплена к заголовку P6, с помощью которого можно сбросить Pi. Кратковременное короткое замыкание двух контактов P6 приведет к мягкому сбросу процессора (который также может «разбудить» Pi из состояния остановки / выключения)

сравни

hiro345
источник