wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

[Raspberry Pi 3][sku:398437 Pi TFT HAT v0.2a][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Dec 24, 2017 9:51 am

Image

Bonjour,

Détenteur depuis peu d'un joli boîtier en aluminium avec un écran 2.2" (Pi TFT HAT v0.2a), un récepteur infrarouge et 6 boutons "programmables", je me retrouve un peu comme un poule devant un œuf concernant l'utilisation (la manière de le faire) des boutons dans un script en bash à titre d'exemple la commande

Code: Select all

raspbian-config
J'ai bien trouvé cette documentation ainsi que ce fil de discussion sur ce forum mais tout est très orienté Python et autant dire que je souhaite afficher un script Bash au démarrage de manière à le paramétrer sans clavier via les fameux 6 boutons (haut , bas, valider, éteindre le rétroéclairage, activer le rétroéclairage, etc).

Une idée sur la procédure d'installation ? (quelles dépendances)

Merci d'avance pour les réponses constructives :ugeek:

Wild
Last edited by wild.dagger on Sun Jan 07, 2018 6:36 pm, edited 3 times in total.


User avatar
icare
Posts: 110
Joined: Mon Mar 14, 2016 6:31 pm
Location: Saint-Avold - France

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Dec 24, 2017 3:38 pm

2B or !2B = FF

totoharibo
Posts: 3925
Joined: Thu Jan 24, 2013 8:43 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Dec 24, 2017 4:06 pm

Un peu de lecture conseillée,
https://www.raspberrypi.org/documentati ... /README.md
la lecture des programmes en python doit aider à voir quels bouitons sont reliés.
la librairie wiringpi marche pas mal, elle doit être d'origine dans Raspbian
man gpio ça aide

Un clavier sur la prise USB et un écran hdmi dessus au départ parce que 320x240 pas terrible comme définition.
et c'est parti ... pour voir quels boutons sont reliés :
gpio readall en appuyant dessus

wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Dec 24, 2017 7:15 pm

Merci pour les liens ;) mais :
totoharibo wrote:
Sun Dec 24, 2017 4:06 pm

Code: Select all

gpio readall
en appuyant dessus
Merci pour cette orientation

Code: Select all

watch -d -n 1 gpio readall
car justement je n'arrive pas à identifier tous les GPIOs.

Image

- la touche 'X' correspond bien au GPIO (BCM) 5
- la touche Triangle correspond bien au GPIO (BCM) 24

Les autres touches (GPIO) ne semblent pas fonctionner :/

Du coup je ne sais pas si je dois incriminer le matériel ou si c'est un mauvais paramétrage de ma Raspbian 8 Jessie Lite.
Last edited by wild.dagger on Sun Jan 07, 2018 6:19 pm, edited 1 time in total.

fdufnews
Posts: 289
Joined: Fri Oct 07, 2011 5:37 pm

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Mon Dec 25, 2017 9:01 am

Quand je regarde la photo jointe, je vois que le numéro du GPIO est indiqué au-dessus des boutons. #23, #22, #24, #5. C'est sans doute aussi vrai pour les boutons situé sur le coté.

totoharibo
Posts: 3925
Joined: Thu Jan 24, 2013 8:43 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Mon Dec 25, 2017 10:17 am

attention à ne pas confondre pin GPIO et BCM.

voir les colonnes BCM et PIN que te donne gpio readall.

Les pins que tu as trouvé devraient t'aider

Au besoin un coup de "biglo" (multimètre) entre les bornes des inters et les pins du connecteur GPIO ce sera le juge de paix.

wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Mon Dec 25, 2017 11:14 pm

fdufnews wrote:
Mon Dec 25, 2017 9:01 am
Quand je regarde la photo jointe, je vois que le numéro du GPIO est indiqué au-dessus des boutons. #23, #22, #24, #5. C'est sans doute aussi vrai pour les boutons situé sur le coté.
Après quelques essais avec la commande "gpio" c'est finalement les chiffres de la colonne BCM. (merci pour l'avertissement totoharibo)

Si je suis cette logique, (chiffre indiqué sur carte électronique = BCM) je m’aperçois que les valeurs (V) = 0 pour BCM #23 et #22.

Code: Select all

 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |  OUT | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 1 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 1 | OUT  | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 0 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 1 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

Fichier : "/boot/config.txt " :

Code: Select all

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi,gpio_in_pin=26

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Enable TFT
dtoverlay=pitft22,rotate=270,speed=48000000,fps=30
Du coup, comment passer la valeur à "1" en mode "IN" pour les BCM 23 et 22 sur Raspberry Pi 3 ?

(dur dur la découverte des GPIO, oups BCM pour de simples boutons)

totoharibo
Posts: 3925
Joined: Thu Jan 24, 2013 8:43 am

Re: [Raspberry Pi 3][sku:398437 Pi TFT HAT v0.2a][raspbian 8] Comment utiliser les boutons dans un script bash

Tue Dec 26, 2017 8:27 am

tu fais un
- gpio readall
- maintenir le bouton appuyé
-gpio readall
- relacher le bouton (mal au doigt)
- comparer les 2 lectures

Si pas de différence et lecture à 0 : pas de pull up activé
faire un "gpio mode <pin> up" pour activer le pull-up
ça doit passer à 1 et l'appui touche doit inverser la lecture.

si lecture à 1 tenter commande gpio mode <pin>down"

wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Jan 07, 2018 6:02 pm

Merci totoharibo et nikotinux :geek: cela fonctionne :

Fichier : "/etc/rc.local " :

Code: Select all

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "Mon adresse IP (RJ45) est %s\n" "$_IP"
fi


#####
#
# SKU:398437 - Configuration des boutons
#
#####
# Méthode sysfs
# BCM 22
echo "22" > /sys/class/gpio/export &
sleep 2
echo "out" > /sys/class/gpio/gpio22/direction
echo "1" > /sys/class/gpio/gpio22/value
 
# BCM 23
echo "23" > /sys/class/gpio/export &
sleep 2
echo "out" > /sys/class/gpio/gpio23/direction
echo "1" > /sys/class/gpio/gpio23/value
 
# BCM 24
echo "24" > /sys/class/gpio/export &
sleep 2
echo "out" > /sys/class/gpio/gpio24/direction
echo "1" > /sys/class/gpio/gpio24/value
 
# BCM 17
echo "17" > /sys/class/gpio/export &
sleep 2
echo "1" > /sys/class/gpio/gpio17/value

# BCM 4
echo "4" > /sys/class/gpio/export &
sleep 2
 
# BCM 5
echo "5" > /sys/class/gpio/export &
sleep 2

# Méthode Wiring Pi
#gpio -g write 22 1
#gpio -g mode 22 out
#gpio -g write 23 1
#gpio -g mode 23 out
#gpio -g write 24 1
#gpio -g mode 24 out
#gpio -g write 17 1

exit 0
Ce qui donne bien V = 1 :

Code: Select all

 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |  OUT | 1 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |  OUT | 1 | 15 || 16 | 1 | OUT  | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 1 | OUT  | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 1 | OUT  | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 0 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 1 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
Avec la possibilité de lire l'état des BCM dans un script bash

Code: Select all

ls /sys/class/gpio/

Code: Select all

export	gpio17	gpio22	gpio23	gpio24	gpio4  gpio5  gpiochip0  gpiochip100  gpiochip128  unexport

Code: Select all

cat /sys/class/gpio/gpio4/value
cat /sys/class/gpio/gpio17/value
cat /sys/class/gpio/gpio5/value
cat /sys/class/gpio/gpio22/value
cat /sys/class/gpio/gpio23/value
cat /sys/class/gpio/gpio24/value
icare wrote:
Sun Dec 24, 2017 3:38 pm
Bonjour,
Un autre lien : http://www.framboise314.fr/le-bouton-po ... ngage_Bash
Je vais lire ca icare, merci pour le lien :ugeek:

wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

Re: [sku:398437][raspbian 8] Comment utiliser les boutons dans un script bash

Sun Jan 07, 2018 10:03 pm

icare wrote:
Sun Dec 24, 2017 3:38 pm
Bonjour,
Un autre lien : http://www.framboise314.fr/le-bouton-po ... ngage_Bash
Merci pour l'inspiration ;)

1er jet :

Code: Select all

#!/bin/bash
#Programme classique de lecture des entrées GPIO (Méthode avec sysfs)

# Fonction
gpio_appui()
{
value1=$(cat /sys/class/gpio/gpio$1/value)   	# Première lecture de l'état de la GPIO (0 ou 1)
sleep 0.05					# Temporisation pour laisser le temps de terminer le dernier appel de la même fonction
if [ $value1 -ne 1 ]                   	    	# Si le contenu de la variable value1 est différent de 1
	then					# alors
	#echo "Bouton poussoir appuyé, en attente de son relachement"
	value2=$(cat /sys/class/gpio/gpio$1/value) # Seconde lecture de la valeur de la GPIO (0 ou 1)
	if [ $value2 -ne 0 ] # Si le contenu de la variable value2 est différent de 0
		then
		echo "Le bouton poussoir connecté au GPIO (BCM) n°$1 a été appuyé puis relaché."
	fi
fi                                          #sortie
}

#programme principal
clear
echo "Début du script "                               
echo "ctrl-c pour sortir de la boucle"

while true                                         	# Utilisation d'une boucle infinie
   do                                              	# Début de la boucle
   gpio_appui "4" &					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°4
   gpio_appui "5" &					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°5
   gpio_appui "17" &					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°17
   gpio_appui "22" &					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°22
   gpio_appui "23" &					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°23
   gpio_appui "24" & 					# Appel de la fonction gpio_appui sur le GPIO (BCM) n°24
   sleep 0.07						# Temporisation des appels de la fonction gpio_appui
  done                                              	#fin de la boucle
#Fin du script

totoharibo
Posts: 3925
Joined: Thu Jan 24, 2013 8:43 am

Re: [Raspberry Pi 3][sku:398437 Pi TFT HAT v0.2a][raspbian 8] Comment utiliser les boutons dans un script bash

Mon Jan 08, 2018 3:52 pm

une petite tempo dans la boucle calmerait un peu ton soft ... (occupation CPU)

wild.dagger
Posts: 7
Joined: Sun Dec 24, 2017 9:23 am

Re: [Raspberry Pi 3][sku:398437 Pi TFT HAT v0.2a][raspbian 8] Comment utiliser les boutons dans un script bash

Tue Jan 09, 2018 5:52 am

A quel niveau de la boucle ? (j'ai déjà placé un

Code: Select all

sleep 0.07
)

totoharibo
Posts: 3925
Joined: Thu Jan 24, 2013 8:43 am

Re: [Raspberry Pi 3][sku:398437 Pi TFT HAT v0.2a][raspbian 8] Comment utiliser les boutons dans un script bash

Tue Jan 09, 2018 9:44 am

je n'avais pas vu : tu as un sleep 0.05 un peu "psychologique" dans la fonction gpio_appui.

Je ne garderais que le sleep en fin de boucle du while true avec 0.1, je supprimerais l'autre et j'enlèverais les & dans la fonction.

J'ai fait une fonction similaire en C : pas photo pour les temps d'occupation CPU.
J'utilise la librairie wiringpi mais d'autres sont dispos (pig par exemple) ou comme toi l'accès à /sys beaucoup moins souple.

Return to “Français”

Who is online

Users browsing this forum: No registered users and 4 guests