On a maintenant 2 objets pour le prix d’un
Sortie :
from pigpio import Sortie
Création d’un objet Sortie :
masortie = (GPIO,n° de pin)
masortie.etat = bool : position la sortie à bool (True ou False)
masortie.etat : retourne l’état de la sortie (boolean)
masortie.pwmfreq = Hz : initialise le pwm de la sortie a Hz
masortie.pwmfreq : retourne la valeur courante de la fréquence du pwm
masortie.pwm(pourcentage) : génère un signale pwm pourcentage sur la sortie (asynchrone)
Led :
from pigpio import Led
Création d’un objet Led :
maled = (GPIO,n° de pin)
maled.on() : allume la led
maled.off() : éteint la led
maled.blink(nb blink, delais) : fais clignoter la led nbblink fois à un rytme de delais
maled.blinkasync (delais) : fait clignoter la led à un rytme de delais (asynchrone)
maled.pwm(pourcentage) : fait éclairer la led avec pourcentage de luminosité (asynchrone)
et bien sur les propriétés etat et pwmfreq de Sortie
maled.etat = bool : position la sortie à bool (True ou False)
maled.etat : retourne l’état de la sortie (boolean)
maled.pwmfreq : retourne la valeur courante de la fréquence du pwm de Sortie
maled.pwmfreq = Hz : Ne sert a rien avec l'objet led vu qu'il impose sa propre fréquence
Le code du fichier pigpio :
Code : Tout sélectionner
#!/usr/bin/python
# coding: utf-8
from time import sleep
class Sortie (object):
def __init__(self,gpio,pin):
self._gpio = gpio
self._pin = pin
self._pwm = None
self._pwmfreq = 10
self._gpio.setup(self._pin, self._gpio.OUT, initial = self._gpio.LOW)
def pwm(self,percent):
if self._pwm == None:
self._pwm = self._gpio.PWM(self._pin, self._pwmfreq)
self._pwm.start(percent)
else:
self._pwm.ChangeFrequency(self._pwmfreq)
self._pwm.ChangeDutyCycle(percent)
def _pwmstop(self):
self._pwm.stop()
sleep(1/self._pwmfreq)
self._pwm = None
def _set_etat(self,valeur):
if not self._pwm == None: self._pwmstop()
self._gpio.output(self._pin,self._gpio.HIGH if valeur == True else self._gpio.LOW)
def _get_etat(self):
return True if self._gpio.input(self._pin) == self._gpio.HIGH else False
def _set_pwmfreq(self, valeur):
self._pwmfreq = valeur
def _get_pwmfreq(self):
return self._pwmfreq
etat = property(_get_etat,_set_etat)
pwmfreq = property(_get_pwmfreq,_set_pwmfreq)
class Led (Sortie):
def __init__(self,gpio,pin):
self._gpio = gpio
self._pin = pin
Sortie.__init__(self,gpio,pin)
def on(self):
self._set_etat(True)
def off(self):
self._set_etat(False)
def blink(self,count,delais):
for x in range(count * 2):
self._set_etat(not self._get_etat())
sleep(delais / 2)
def blinkasync(self,delais):
self._pwmfreq = 1 / delais
Sortie.pwm(self,50)
def pwm(self,percent):
self._set_pwmfreq(300)
Sortie.pwm(self,percent)
Et pour tester, on peu utiliser exactement le meme code que celui qui a été utilisé pour l'objet led ou il suffit juste de modifier la ligne :
en