Creazione del pulsante di arresto / riattivazione?


10

Ho montato un pulsante wake-from-halt usando i pin 5 e 6. Questi due pin, quando collegati, resetteranno l'alimentazione e si riavvieranno dall'arresto. Voglio usare questo stesso pulsante, se posso, per eseguire un comando che, se premuto, spegne il computer usando sudo halt. Questo sarebbe possibile? Per il sudo haltpulsante, avrei bisogno di collegarmi da GPIO 1 al pulsante, quindi dividere in GPIO 6 (terra) e un pin GPIO generale. Non so nemmeno se sia possibile / sicuro connettere GPIO 5 a questo.

Risposte:


8

Non è necessario aggiungere altri pin GPIO. Potresti semplicemente usare gli stessi pin per il tuo pulsante di arresto.

Ecco un po 'di codice Python che eseguirà il polling del pin 5. Quando il pulsante viene premuto, il pin 5 viene tirato a terra (pin 6) e il codice leggerà un LOW. In tal caso verrà eseguito il haltcomando

#!/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. Non sapevo della funzione Wake from Halt. Grazie a te lo so adesso! Quindi grazie.


1
Brillante! Non mi rendevo conto che avrei potuto fare tutto con solo 5 e 6. Grazie! :)
Ryan McClure il

Quindi, entrambi abbiamo imparato qualcosa oggi (-:
Gerben,

Più di una nota per me. È anche possibile modificare il codice per fare in modo che una stampante esegua un riavvio e tenere premuto per eseguire uno spegnimento (o viceversa).
Gerben,

In che modo la tua sceneggiatura viene eseguita continuamente, ovvero daemonizzata? Hai notato una riduzione delle prestazioni durante la visione di film?
Athanassis,

1
In effetti, è molto tempo, ma non quando la CPU raggiunge il 100% per alcuni secondi quando, ad esempio, decodifica un film Full HD. Ci proverò, il test non fa mai male. Grazie per il feedback!
Athanassis,

2

Un pulsante di ripristino può essere collegato all'intestazione P6, con cui è possibile ripristinare il Pi. Il cortocircuito momentaneo dei due pin di P6 provoca un soft reset della CPU (che può anche "riattivare" il Pi dallo stato di arresto / spegnimento)

cf


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.