Membuat tombol berhenti / bangun?

10

Saya telah memasang tombol bangun dari berhenti menggunakan pin 5 dan 6. Kedua pin ini, ketika terhubung, akan mengatur ulang daya dan reboot dari berhenti. Saya ingin menggunakan tombol yang sama ini, jika saya bisa, untuk menjalankan perintah yang, ketika ditekan, akan mematikan komputer menggunakan sudo halt. Apakah ini mungkin? Untuk sudo halttombol, saya perlu menghubungkan dari GPIO 1 ke tombol, lalu membaginya menjadi GPIO 6 (ground) dan pin GPIO umum. Saya tidak tahu apakah mungkin / aman untuk menghubungkan GPIO 5 dengan ini juga.

Ryan McClure
sumber

Jawaban:

8

Tidak perlu menambahkan pin GPIO lainnya. Anda bisa menggunakan pin yang sama untuk tombol berhenti.

Berikut adalah beberapa kode python yang akan polling pin 5. Ketika tombol ini ditekan pin 5 ditarik ke tanah (pin 6), dan kode akan membaca RENDAH. Dalam hal ini akan menjalankan haltperintah

#!/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. Saya tidak tahu tentang fungsi Wake from Halt. Terima kasih untukmu, aku tahu sekarang! Jadi terima kasih.

Gerben
sumber
1
Cemerlang! Saya tidak menyadari bahwa saya bisa melakukan semuanya hanya pada 5 dan 6. Terima kasih! :)
Ryan McClure
Jadi, kami berdua belajar sesuatu hari ini (-:
Gerben
Lebih banyak catatan untuk diriku sendiri. Anda bahkan dapat memodifikasi kode agar pers melakukan reboot, dan tekan-dan-tahan untuk melakukan shutdown (atau sebaliknya).
Gerben
Dengan cara apa skrip Anda berjalan terus menerus, yaitu, di-daemonisasi? Pernahkah Anda memperhatikan penurunan kinerja saat menonton film?
athanassis
1
Memang, ini waktu yang sangat lama, tetapi tidak ketika CPU mencapai 100% selama beberapa detik ketika, misalnya, decoding film full HD. Saya akan mencobanya, pengujian tidak pernah sakit. Terima kasih untuk umpan baliknya!
athanassis
2

Tombol reset dapat dilampirkan ke header P6, dengan mana Pi dapat diatur ulang. Untuk sementara korsleting kedua pin P6 bersama-sama akan menyebabkan soft reset CPU (yang juga dapat 'membangunkan' Pi dari keadaan berhenti / mati)

lih

hiro345
sumber