Suite à un petit souci de serveur, les emails de confirmation d'inscription n'étaient plus envoyés. Si vous n'avez pas reçu votre mot de passe, utilisez l'option "Mot de passe oublié" et vous recevrez le nouveau. (February 23) x

En raison de spams récurrents, les messages des nouveaux inscrits sont modérés a priori. Ne vous inquiétez pas si vous ne voyez pas apparaitre votre message immédiatement sur le forum. (November 04, 2021) x

Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

actionner avec bouton
#1

Salut!

maintenant que je sais comment temporiser mes relais, j'ai un autre probleme surement tout simple, je n'arrive pas a les commander avec un bouton !

j'ai modifier un script trouver sur internet, mais evidemment ça ne donne rien (et j'ai pas spécialement besoin que ça me cause!):

Code :
[== Indéfini ==]
#!/bin/bash

setup ()
{
gpio mode 4 in
}

waitButton ()
{
echo -n "Waiting for button ... "
while [ `gpio -g read 4` = 1 ]; do
   gpio write 0 0
done
echo "marche"
}

setup
while true; do
gpio write 0 1
done

et évidemment j'aurais ensuite besoin de lancer le fameux

Code :
[== Indéfini ==]
gpio write 0 0
sleep 5
gpio write 0 1

sur une simple pression sur le bouton poussoir...

ah et de lancer alternativement gpio write 0 0 et gpio write 0 1 à chaque pression, comme un télérupteur...

petite précision: mes relais ont des optocoupleurs (si j'ai bien compris) et il faut bien 0 pour les actionner et 1 pour les éteindre.

Merci d'avance pour votre aide et votre patience !
#2

As tu essayé de lancer la commande de lecture seule ? As tu bien 1 ? Idem en maintenant le doigt sur le bouton et dans ce cas la valeur de retour change ?
Avant d'inclure ça dans un script (et donc avoir plus de sources d'erreurs) il faut s'assurer que le statut du bouton est bien capté

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#3

Salut!

J'ai bien tester la commande de lecture, ça passe bien de 0 à 1 et inversement, c'est pour ça que comprend pas pourquoi ça donne rien...
#4

Possible qu'il faille mettre "1" au lieu de 1

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#5

D'un autre coté tu n'appelles jamais la fonction waitButton donc ça ne pourra pas fonctionner

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#6

Il faut donc supprimer cette ligne?
#7

Si tu veux qu'il exécute la fonction waitButton il faut l'appeler quelque part. A toi de voir où en fonction de ton besoin. Si tu galères je te suggère de commencer par pratiquer un peu soit le shell script soit le python avant de vouloir te lancer dans le projet sinon tu risques de te perdre

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#8

C'est vrai qu'il faut que je m'entraîne aux script!

Pour le moment je voulais un script shell simple pour actionner mes relais avec un bouton, mais sans grande connaissance du script c'est vrai que c'est pas de la tarte!

A la base le script que j'ai modifié servait à faire dire au shell l'état du gpio 4, et j'ai bêtement tenter de le modifier, mais sans succès... Je continu mon apprentissage!
#9

ah, je pense être sur la bonne voie! j'ai feuilleter des documents sur le script bash, et j'ai essayer ceci:

Code :
[== Indéfini ==]
#!/bin/bash

while [ `gpio -g read 4` = 1 ]; do
  gpio write 0 0
until [ `gpio -g read 4` = 0 ]; do
  gpio write 0 1
done

mais il me dit "fin de fichier prématuré".

j'ai aussi tester avec "if, elif, fi", ça marche mais juste sur le coup, faudrait que ça fasse une boucle en permanence, c'est pourquoi je pense qu'il faut utiliser "while et until", mais alors pourquoi ce "fin de fichier prématuré ???
#10

Essaye quelque chose dans le genre
Code :
Sauvegarder l'état actuel du bouton
Tant que vrai
   Si état du bouton différent de l'état sauvegarder alors
      Sauvegarder l'état actuel du bouton
      Lire la valeur actuelle du relai
      Basculer le relai
   Fin si
Fin tant que
L'état du bouton provient du gpio read et la bascule se fait avec le gpio write avec la valeur "1 - position actuelle" (0 devient 1 et 1 devient 0)
Qqch dans le genre ...

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#11

je croit bien avoir compris! mais le script reste en attente tant que je n'ai pas appuyer sur le bouton, et s'arrête juste après... ça sert à rien de devoir lancer un script à chaque fois qu'on veut appuyer sur un bouton! je continue mes études du shell, et je reviens...
#12

un truc qui tourne en permanence ... Bon, l'idée est la même mais on verifie si le courant est coupé :

Code :
[== Indéfini ==]
#!/bin/sh

#On initialise l'état
etat=$(acpi -b | grep -c Discharging)

#Tant que l'état est de 1 (Donc déchargement)
while [ "$etat" -eq "1" ]
do
        #Pause d'une seconde pour éviter surcharge script
        sleep 1

        #On met un message
        echo Plus de courant

        #On revérifie l'état
        etat=$(acpi -b | grep -c Discharging)

done # Et ce tant que etat = 1 donc que ça décharge Dès que etat ne vaut plus 1 (redéfini dans la boucle, on sort de celle-ci et on continue l'exécution du script


#Si ça vaut 0, on affiche 0
echo $etat
#13

@nonogt : il faut que tu lises les réponses plus attentivement. La deuxième ligne dit "tant que vrai". Donc le script ne se terminera jamais (sauf un ctrl-c)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#14

@chris57100: désolé, je surchauffe un peu du citron avec tout ça, je serait plus attentif, promis!
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)