Script pour détecter utilisation i2c du gpio


#1

Hello à toutes et tous,
Pour mon projet, j’élabore deux versions à base de Raspberry :
-une avec des leds sur les gpio
-une avec un ecran (gfx hat)

Je tente de faire un script qui me permette de vérifier automatiquement,
si je suis en présence de Led ou d’un lcd.

Le lcd utilise le i2c et du coups je peux utiliser cette commande :

man gpio;i2cdetect -y 1 >>/tmp/ll.txt

Le résultat sort ainsi :

 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- 2c -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Ce résultat fait présence d’un écran.
Sans écran, le 2C n’apparait pas.

Je n’arrive pas à trouver une méthode qui me permette automatiquement,
en utilisant ce résultat,
de définir si je suis en présence d’un écran ou non.

Help me please :slight_smile:


#2

Ben tu grep “2c” sur ce tableau pour voir si la chaine est présente, non ?


#3

Hello :slight_smile:
J’y ai pensé, mais suivant les cartes,
je ne suis pas sûr de retrouver la même valeur au même endroit.


#4

Mais à la limite tu t’en fou de l’endroit du résultat d’après ce que tu dit :

Du coup tu devrais simplement tester la présence d’une occurrence “2c”


#5

Pas faux pour l’emplacement :grinning:
C’est surtout le 2C, j’avais peur que ça puisse changer d’appellation suivant la carte sur laquelle serait installé mon script.
Mais je ne pense pas en réfléchissant :grinning:
I2C 2c.
Merci en tout cas pour tes reponses


#6
   #!/bin/bash
#Variables
readonly error_log=/diagbox/web/tmp/error.log
readonly gpio_mode_tempo=/tmp/gpio_mode_tempo.txt
readonly led_or_lcd=/tmp/led_or_lcd.txt

#Efface les traces précédentes
if [ -f $error_log ];then
	echo "suppression Logs erreur"
	sudo rm $error_log
fi

if [ -f $gpio_mode_tempo ];then
	echo "suppression fichier tempo"
	sudo rm $gpio_mode_tempo
fi

if [ -f $led_or_lcd ];then
	echo "suppression fichier tempo"
	sudo rm $led_or_lcd
fi

#Récupère mode gpio
if sudo man gpio;i2cdetect -y 1 >>$gpio_mode_tempo;then
	echo "La recherche i2c est terminee"
else
	echo "La recherche i2c a échoué"
	echo "echec man gpio;i2cdetect -y 1" >> error_log
	exit
fi	

if sudo grep 2c $gpio_mode_tempo; then
	echo "Présence lcd"
	echo "lcd" >>$led_or_lcd
else
	echo "led" >>$led_or_lcd
fi

exit