Code RPI-PY-act 101

Version Pi - Python

1
import RPi.GPIO as GPIO
2
import time
3
4
numPin = 18    # la LED ou le buzzer est reliée à la broche 37 (BOARD) ou 18 (BCM)
5
6
def setup():
7
    #GPIO.setmode(GPIO.BOARD)       # Numérotation physique, sinon GPIO.BCM pour la notation BCM
8
    GPIO.setmode(GPIO.BCM)
9
  	GPIO.setup(numPin, GPIO.OUT)   # La broche est configurée en sortie
10
    GPIO.output(numPin, GPIO.LOW)  # On éteint la LED ou le arrête le buzzer
11
    print ('using pin%d'%numPin)   # On affiche le n° de broche
12
def loop():
13
    while True:
14
        GPIO.output(numPin, GPIO.HIGH)  # led ou buzz on
15
        print ('...led ou buzz on')
16
        time.sleep(1) # on attend 1 seconde
17
        GPIO.output(numPin, GPIO.LOW)  # led ou buzz off
18
        print ('led ou buzz off...')
19
        time.sleep(1)
20
21
def destroy():
22
    GPIO.output(numPin, GPIO.LOW)      # led off
23
    GPIO.cleanup()                     # libérer les ressources
24
25
if __name__ == '__main__':     # Démarrage du programme
26
    setup()
27
    try:
28
        loop()
29
    except KeyboardInterrupt:  # Quand 'Ctrl+C' est activé, la méthode destroy est appelée pour mettre fin au programme
30
        destroy() 

Détail du code

La librairie RPi.GPIO permet d'accéder aux différentes fonctions permettant d'accéder l'initialisation de la notation des broches (setmode), au sens du port DIO (fonction setup avec le sens GPIO.OUT ou GPIO.IN).

La librairie time permet d'intégrer dans le code des fonctions liées au temps, ici, on utilisera la fonction sleep().

La fonction output permet de définir le niveau de la sortie (LOW ou HIGH)

On notera la boucle qui est infinie jusqu'à ce que le programme principal détecte une exception de type Interruption clavier via CTRL+C.

Enfin, il est important de noter les 3 phases :

  • setup : que faire au début du programme

  • loop : que doit répéter le programme

  • destroy : que faire à la fin du programme

Alternative

On utilise une boucle for pour faire un certain nombre de cycles avant d'arrêter le programme.

1
import RPi.GPIO as GPIO
2
import time
3
4
Pin = 18   # la LED est reliée à la broche 37
5
NbCycles = 5
6
def setup():
7
    #GPIO.setmode(GPIO.BOARD)       # Numérotation physique, sinon GPIO.BCM pour la notation BCM
8
    GPIO.setmode(GPIO.BCM)
9
    GPIO.setup(Pin, GPIO.OUT)   # La broche est configurée en sortie
10
    GPIO.output(Pin, GPIO.LOW)  # On éteint la LED
11
def code():
12
    for i in range(1, NbCycles):
13
        print('Cycle n°%d'%i)
14
        GPIO.output(Pin, GPIO.HIGH)  
15
        time.sleep(2) 
16
        GPIO.output(Pin, GPIO.LOW)
17
        time.sleep(1)
18
    print('fin de la boucle')
19
   
20
def destroy():
21
    GPIO.output(Pin, GPIO.HIGH)      
22
    GPIO.cleanup()
23
    print('Ressources libérées')
24
25
if __name__ == '__main__':     # Démarrage du programme
26
    setup()
27
    try:
28
        print('Lancement du programme dans la méthode code")
29
        code()
30
    except KeyboardInterrupt:  # Quand 'Ctrl+C' est activé, la méthode destroy est appelée pour mettre fin au programme
31
        print('Interrom