Créer un bouton poussoir qui lance ou quitte une application

Bonjour, j’ai en projet de me faire un jeu de fléchettes électronique connecté ( avec raspberry pi 3 sous raspbian et un Arduino Uno ), ainsi qu’un jukebox sur le même meuble .
J’ aimerai que l’ on puisse lancer une application en appuyant sur un bouton poussoir; afin de choisir simplement entre le jeu de fléchettes ou bien le jukebox ( en gros 2 boutons pour lancer 2 appli); et si possible, si 2 ème appuis, que cela coupe l’application.
Quelqu’un peu il m épauler svp ?

Salut @vincent_moi

On résume en 2 points :
1 - Tu vas créer un script.
2 - Tu vas mettre ce script en action (en écoute) au démarrage du Rpi (lors de la séquence initiale de chargement).

Le script aura 2 actions (ou d’autres)
Si tu appuies sur bouton « truc » = lancement de l’action « truc »
Si tu appuies sur bouton « machin » = lancement de l’action « machin »

A mon avis, la piste de recherche est « script python »

Bonnes recherches,

(on pourra t’aider de manière plus pratique mais pas pour le moment puisque tu dis

Et si on te le fait = tu ne l’auras pas fait :stuck_out_tongue_winking_eye: )

Mdr, ça commence fort lol!
Je suis pas prêt de poser ma 2 ème question alors :rofl::rofl::rofl:
Jusqu’ici je vois que du tuto pour allumer une led, mais ce n’est pas mon cas, du coup pas simple !

On va débuter tranquille :
Tu testes ça
Puis tu ajoutes la fonction « reboot » sur un autre GPIO
Et on en recause

Et des scripts, on en trouve pleins :wink:

#!/usr/bin/python3

#on importe les modules nécessaires
import time
import os
import RPi.GPIO as GPIO

#on met RPi.GPIO en mode notation BCM (numéro des pins ; ne vous trompez pas ; voir https://fr.pinout.xyz)
GPIO.setmode(GPIO.BCM)

#on initialise le GPIO 5 en écoute (broche physique 29 mais BCM pin 05)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)


#on définit la fonction appelée par la pression du bouton
def extinction(channel):
     #on affiche un message de confirmation dans le Terminal
     print("Appui détecté sur le GPIO 05 = extinction demandée")
     #on reinitialise les GPIO
     GPIO.cleanup()
     #on lance la commande d'extinction
     os.system('sudo poweroff')


#on met les boutons en écoute
GPIO.add_event_detect(5, GPIO.FALLING, callback=extinction)

#on lance une boucle infinie, pour garder le script actif
while 1:
     #Avec une légère pause entre chaque boucle dans le but de réduire la charge CPU
     time.sleep(0.02)

#on réinitialise les ports GPIO en sortie de script
GPIO.cleanup()

salut, j ai avancé mais j ai besoin d un petit coup de pouce :
J ai creer mon script, qui n a pas t erreur sous thonny; quand je fais tester, cela lancemon appli, sans que j appui sur le boutton.
Mais le souci, c’ est si je fais ouvrir dans un terminal, le terminal reste vierge et rien ne se passe.
Lapllication ne se lance pas du tout.
J ai dû oublier quelque chose dans mon code.
le voici :
#!/usr/bin/python
import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library # import os
def button_callback(channel):10
import os
print(« bouton appuye! »)
os.system(’ ./pydarts.sh’)
GPIO.setwarnings(False) # Ignore warning for now
GPIO.setmode(GPIO.BOARD) # Use physical pin numbering
GPIO.setup(10, GPIO.IN,
pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(10,GPIO.RISING,callback=button_callback) # Setup event on pin 10 rising edge

#GPIO.output(10, GPIO.HIGH) # Set pin 10 to be an input pin and set initial value to be pulled low (off)
GPIO.cleanup() # Clean up

Citation

quel est le souci svp?

Salut vincent_moi,

Une rédaction sans faute de syntaxe ou d’orthographe de Français, serait plus lisible et compréhensible :wink:
D’autant plus que les langages comme Python, C++, Java, sont bien plus accessibles lorsque l’on maîtrise la logique de la syntaxe d’une langue.

@+
Allez, on va vous aider, si vous reformulez correctement votre post :upside_down_face:

Salut
je te conseillerai d’installer et d’utiliser la librairie gpiozero
https://gpiozero.readthedocs.io/en/stable/installing.html
plus simple d’utilisation et fonctionnel sur le Pi3

la doc concernant pour les boutons:
https://gpiozero.readthedocs.io/en/stable/api_input.html
l’exemple qu’ils donnent:

from gpiozero import Button

button = Button(4)
button.wait_for_press()
print(« The button was pressed! »)

A la place du print() tu écris donc l’action souhaité, avec quelques recherche sur un cour de débutant en python tu peu rajouter une condition, if/else. pour faire fonctionner tes 2 boutons en alternance.

avoir un bouton lumineux ou ajouter une led témoin est tout aussi simple, la Doc est claire et pleine d’exemple.