Então, construí um placar da MLB com um RPI 3. No momento, a tela pode mostrar meus times favoritos jogando OU todos os times que estão jogando e percorrê-los conforme avançam. Gostaria de adicionar um botão de alternância na parte de trás do placar para selecionar Todos os times ou Meus times, dependendo de quem está jogando naquele momento. Eu tenho dois diretórios separados quase idênticos para o placar, acomodando All-Teams ou My-Teams.
No momento, tenho um arquivo cron chamado "start-scoreboard.sh" que iniciará o placar mostrando All-Teams ou My-Teams, dependendo do que eu inseri em "cd /home/pi/mlb-led-scoreboard -(All-Teams OR My-Teams aqui)" dentro do arquivo cron.
Existe uma maneira de o RPI ler o estado de um pino gpio e executar os diretórios All-Teams OU My-Teams? Aqui está um exemplo do que tenho em meu arquivo cron "start-scoreboard.sh" com o diretório All-Teams listado...
!/bin/bash
u/reboot sleep 60 $$ start-scoreboard.sh
cd /home/pi/mlb-led-scoreboard-All-Teams
n=0
until [ $n -ge 10 ]
do
python main.py --led-gpio-mapping=adafruit-hat --led-brightness=50 --led-slowdown-gpio=3 --led-rows=32 --led-cols=64 && break
n=$[$n+1]
sleep 10
done
Então, primeiro: você está fazendo coisas GPIO em seu script python. Honestamente, você deveria usar a mesma biblioteca que usa lá (que eu não conheço) para ler o estado do GPIO e se comportar de acordo! O mesmo para o seu
do python… ; sleep 10; done
loop: isso seria realmente algo que você deveria integrar em seu script python.Em segundo lugar, claro, basta verificar o valor do pseudoarquivo GPIO, dependendo da configuração do seu kernel provavelmente em
/sys/class/gpio/gpio{number}/value
(pode ser necessário definir a direção desse pino comecho in > /sys/class/gpio/gpio{number}/direction
; se não estiver lá, talvez seja necessário exportá- lo primeiro porecho {number} > /sys/class/gpio/export
); essa é a interface sysfs obsoleta , mas aposto que os kernels padrão para o RPi ainda estão habilitados. Alternativamente, use agpio
ferramenta que você pode instalar para sua distribuição Linux, comgpio read {id}
.Ok, acabei usando o método a seguir e parece ter funcionado. Queria postar isso caso alguém se depare com esse problema e esteja procurando uma resposta. Na fiação dos pinos do gpio acabei conectando a chave entre o 39 (terra) e o pino 40.