Я установил Ubuntu Server 20.04.1 LTS на свой RPi4 v1.1 и использовал этот сценарий:
from gpiozero import Button
import time
import os
stopButton = Button(26)
while True:
if stopButton.is_pressed:
time.sleep(1)
if stopButton.is_pressed:
os.system("shutdown now -h")
time.sleep(1)
для безопасного выключения Pi с помощью кнопки, только чтобы узнать, что это не сработает (is_pressed всегда возвращает истину). Скрипт работал на Raspberry Pi OS за несколько дней до этого. После некоторого устранения неполадок я обнаружил, что внутренний подтягивающий резистор не работает, поэтому GPIO всегда читает НИЗКИЙ, и спадающий фронт никогда не обнаруживается. Я уже пробовал использовать GPIO 26 и 17 (нумерация BCM), и модуль i2c кажется выгруженным (с использованием lsmod). Есть идеи?
Дополнительная информация: Я дважды тестировал свою установку с Raspberry Pi OS и с помощью осциллографа определил, что GPIO действительно читают НИЗКОЕ.
Оказывается, проблема больше не существует, если RPi.GPIO (и gpiozero) установлен через pip3. Подробнее в моем отчете об ошибке.