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.

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.


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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.