Modifications

Sauter à la navigation Sauter à la recherche
1 830 octets ajoutés ,  21 juillet 2016 à 09:09
Ligne 24 : Ligne 24 :     
  <nowiki>import pibrella
 
  <nowiki>import pibrella
pibrella.buzzer.fail()
+
pibrella.buzzer.fail()     # résultat très moyen
pibrella.light.pulse(0.2)</nowiki>
+
pibrella.buzzer.pulse(0.5) # Encore assez sympa
 +
pibrella.buzzer.stop()    # Arrête le buzzer
 +
 
 +
pibrella.light.pulse(0.2) # Fait pulser les LEDs
 +
pibrella.light.stop()      # Arrête de pulser</nowiki>
    
Après vos tests, tapez la commande '''quit()''' pour quitter le mode interactif
 
Après vos tests, tapez la commande '''quit()''' pour quitter le mode interactif
Ligne 33 : Ligne 37 :  
== Ecrire un code plus évolué ==
 
== Ecrire un code plus évolué ==
    +
=== Saisir le programme ===
 
Démarrez Python en session interactive à l'aide de la commande suivante sur LXTerminal ou une ligne de commande:
 
Démarrez Python en session interactive à l'aide de la commande suivante sur LXTerminal ou une ligne de commande:
   Ligne 43 : Ligne 48 :     
def alarm(pin):  
 
def alarm(pin):  
   pibrella.buzzer.fail()       # Faire de bruit
+
   pibrella.buzzer.pulse(0.2)   # Faire de bruit
   pibrella.light.pulse()        # Faire clignoter la LED
+
   pibrella.light.pulse()        # Faire clignoter/pulser les LEDs
    
def reset(pin):
 
def reset(pin):
 
   pibrella.light.stop()        # Re-initialiser l'alarme (la désactiver)
 
   pibrella.light.stop()        # Re-initialiser l'alarme (la désactiver)
 +
  pibrella.buzzer.stop()   
    
pibrella.input.a.changed(alarm)  # Surveiller l'entrée et détecter l'intrus
 
pibrella.input.a.changed(alarm)  # Surveiller l'entrée et détecter l'intrus
Ligne 57 : Ligne 63 :     
=== Pour tester ===
 
=== Pour tester ===
Connectez la broche 2 de l'entrée A avec un fil où une résistance (Pressez le gros bouton rouge pour réinitialiser)  
+
Connectez la broche 2 de l'entrée A avec un fil où une résistance de 100 Ohms (pour éviter les accidents)  
 +
 
 +
[[Fichier:RASP-PIBRELLA-CARTE-ponter.jpg]]
   −
{{traduction}}
+
Pressez le gros bouton rouge pour réinitialiser l'alarme
    
=== Quelques explications ===
 
=== Quelques explications ===
   −
{{underline|Déclenchement de l'alarme}}<br />
+
==== Déclenchement de l'alarme ====
 
La ligne  
 
La ligne  
   Ligne 73 : Ligne 81 :     
... il faut appeler la fonction '''alarm'''.<br />
 
... il faut appeler la fonction '''alarm'''.<br />
 +
 
Le paramètre de '''changed()''' est la fonction à appeler, soit ''alarm''.
 
Le paramètre de '''changed()''' est la fonction à appeler, soit ''alarm''.
   −
{{underline|Réinitialisation/désactivation de l'alarme}}<br />
+
 
 +
Notez que changed() est ''activé'' à chaque changement d'état... donc deux fois!!! Une fois lorsque la broche du GPIO est activée... et une autre fois lorsque la broche est désactivée.
 +
 
 +
==== Réinitialisation/désactivation de l'alarme ====
 
De même, la ligne
 
De même, la ligne
   Ligne 82 : Ligne 94 :  
surveille le bouton de la carte et attend qu'il soit pressé.
 
surveille le bouton de la carte et attend qu'il soit pressé.
   −
Lorsque le bouton est préssé, la ligne de code...  
+
Lorsque le bouton est pressé, la ligne de code...  
    
  pibrella.button.pressed(reset)
 
  pibrella.button.pressed(reset)
Ligne 95 : Ligne 107 :  
Cette ligne met le programme en pause en attendant l'arrivée d'un signal (un évènement), signal qui sera traité par la bibliothèque PiBrella. Voyez notre petit note à propos des systèmes événementiels.
 
Cette ligne met le programme en pause en attendant l'arrivée d'un signal (un évènement), signal qui sera traité par la bibliothèque PiBrella. Voyez notre petit note à propos des systèmes événementiels.
   −
=== Utiliser le système évènementielle (les signaux) ===
+
==== Utiliser "Pressed"  ====
 +
Comme précisé plus haut, utiliser la notation '''pibrella.input.a.changed(...)''' déclenche deux événements.
 +
 
 +
Si vous ne voulez avoir qu'un seul événement (par exemple lors de la pression d'un bouton), remplacez l'appel de
 +
 
 +
  pibrella.input.a.changed(alarm)
    +
par
 +
 
 +
  pibrella.input.a.pressed(alarm)
    +
=== Utiliser le système évènementielle (les signaux) ===
 
Bien que cela soit totalement invisible, la bibliothèque Pibrella utilise des signaux. Ces signaux permettent de mettre en oeuvre des systèmes à base d'événement (comme la pression d'un bouton ou le clique d'une souris). L'autre avantage des systèmes événementiels est de consommer peu de ressources... le programme ne doit pas passer son temps à vérifier l'état des broches du GPIO (et ainsi gaspiller les ressources du processeur), il peut simplement attendre d'être averti qu'une broche ait changé d'état.
 
Bien que cela soit totalement invisible, la bibliothèque Pibrella utilise des signaux. Ces signaux permettent de mettre en oeuvre des systèmes à base d'événement (comme la pression d'un bouton ou le clique d'une souris). L'autre avantage des systèmes événementiels est de consommer peu de ressources... le programme ne doit pas passer son temps à vérifier l'état des broches du GPIO (et ainsi gaspiller les ressources du processeur), il peut simplement attendre d'être averti qu'une broche ait changé d'état.
   Ligne 114 : Ligne 135 :  
Nous venons de décrire un système évènementiel basé sur un signal.  
 
Nous venons de décrire un système évènementiel basé sur un signal.  
   −
Un signal c'est: ''une convention connue des intéressés (ceux qui l'émettent et ceux qui le recoivent) qui savent ce que cela signifie et comment y réagir (lorsqu'il est détecté)''
+
{{ambox|text=Un signal c'est:<br />''une convention connue des intéressés (ceux qui l'émettent et ceux qui le recoivent) qui savent ce que cela signifie et comment y réagir (lorsqu'il est détecté)'' }}
      Ligne 121 : Ligne 142 :  
<small>{{underline|Post-Scriptum}}<br />
 
<small>{{underline|Post-Scriptum}}<br />
 
Les puristes comprendrons que ce paragraphe est une vulgarisation abordable du SIGNAL pour permettre de fixer les idées. Les signaux vont bien au delà de ce que nous venons de décrire et offrent des fonctionnalités/possibilités bien plus vaste. Ainsi, je vais également préciser que les signaux permettent à des processus/programmes différents de communiquer ensemble... peu comme l'OS peu détecter le branchement d'un périphérique USB et envoyer un signal avertissant toutes les applications (comme ne l'explorateur de fichier par exemple).</small>
 
Les puristes comprendrons que ce paragraphe est une vulgarisation abordable du SIGNAL pour permettre de fixer les idées. Les signaux vont bien au delà de ce que nous venons de décrire et offrent des fonctionnalités/possibilités bien plus vaste. Ainsi, je vais également préciser que les signaux permettent à des processus/programmes différents de communiquer ensemble... peu comme l'OS peu détecter le branchement d'un périphérique USB et envoyer un signal avertissant toutes les applications (comme ne l'explorateur de fichier par exemple).</small>
 +
 +
== Tester directement une entrée ==
 +
Dans cet exemple, nous allons simplement tester directement l'état d'une entrée sans passer par le système d'événement (signal).
 +
 +
Nous allons démarrer Python en mode interactif en tapant la commande suivante dans LXTerminal (ou ligne de commande)
 +
 +
sudo python -i
 +
 +
Tapez ensuite le code suivant:
 +
 +
<nowiki>import pibrella
 +
pibrella.input.a.is_high()</nowiki>
 +
 +
L'interpréteur de commande python évalue l'état de la broche et doit retourner sa valeur (soit '''False''' puisque la broche est à l'état bas).
 +
 +
maintenant, pontez l'entrée A à l'aide d'un fil ou d'une résistance de 100 Ohms comme sur le schéma ci-dessous.
 +
 +
[[Fichier:RASP-PIBRELLA-CARTE-ponter.jpg]]
 +
 +
Puis re-saisissez encore la commande:
 +
 +
pibrella.input.a.is_high()
 +
 +
Cette fois-ci, le résultat est '''True''', preuve que l'entrée est bien activée.
 +
 +
 +
Après vos tests, tapez la commande '''quit()''' pour quitter le mode interactif
 +
 +
quit()
    
{{PiBrella-TRAILER}}
 
{{PiBrella-TRAILER}}
29 917

modifications

Menu de navigation