Commençons simple : brancher une led sur la BreadBoard avec son alimentation externe.
Parlons un peu de l'alimentation de BreadBorad que j'ai acheté ici :
http://www.amazon.fr/gp/product/B00CO1Y14Y/
JMT Power Supply Module Compatible 3.3V 5V |
Elle est tout à fait pratique ! Elle se fixe sur la Breadboard et si vous en avez une à peu prêt standard elle alimentera vos deux lignes de courant. En plus chaque ligne est commutable en 5V ou 3.3V, et il existe une troisième alimentation en haut. Enfin vous l'alimentez en mini usb ou avec un chargeur ... chez moi mini usb parce que j'en ai des cartons.
Bref pour faire des tests, c'est l'idéal.
J'ai configuré les jumpers de l'alimentation pour sortir du 3.3V. Reste à déterminer la valeur de la résistance...
D'après ce site : http://users.telenet.be/h-consult/elec/led.htm c'est du 65 Ohms qu'il me faut.
Les premières qui me tombent sous la main sont du 150 Ohms, et ça s'allume (pas vif, mais je m'en moque) donc ça ira, des 150 Ohms, cela sera.
Le module est branché, je branche en série : "+" -> LED + (la grande patte) / LED - -> Résistance -> "-"
Test alimentation |
Tada ! Ca marche. Cool.
Maintenant plus compliqué, passons à l'allumage d'une led par les GPIO du Raspberry Pi. Je commence par désactiver l'alimentation de Breadboard. Ensuite, il faut savoir à quoi correspondent chaque pin. Pour Raspberry Pi B+, voici le schéma :
GPIO du Raspberry Pi B+ |
Et pour faire notre test, refaisons un peu de Python ...
import RPi.GPIO as GPIO import time # mon GPIO gpio = 26 # on utilise BCM car il y a un bug sur les GPIO eleves du B+ en mode "board" GPIO.setmode(GPIO.BCM) # on configure le GPIO en "Out" GPIO.setup(gpio, GPIO.OUT) # on le passe a HIGH, on attend une seconde, on le passe a LOW GPIO.output(gpio,GPIO.HIGH) time.sleep(1) GPIO.output(pin,GPIO.LOW) # clean up des GPIOs GPIO.cleanup()Côté montage on fait très simple :
Le Pin 37 est relié au "+" de la LED, on met notre résistance en série, et ensuite on branche l'autre patte sur une masse du Raspberry ...
Et hop cela fonctionne.
Bon, cela n'a pas fonctionné tout de suite, j'avoue. Tout cela parce qu'il existe un bug dans le Rpi.GPIO qui empêche les GPIO de valeur "élevés" (les nouveaux du Raspberry B+) de fonctionner en mode "Board". Donc il faut les adresser en mode "BCM", d'où la ligne :
GPIO.setmode(GPIO.BCM)
Une fois que cela a été testé et monté, j'ai branché 8 Leds, et modifié mon programme pour qu'elles s'allument à tour de rôle.
import RPi.GPIO as GPIO import time def blink(pin): GPIO.output(pin,GPIO.HIGH) time.sleep(1) GPIO.output(pin,GPIO.LOW) time.sleep(1) return # on utilise BCM car il y a un bug sur les GPIO eleves du B+ en mode "board" GPIO.setmode(GPIO.BCM) # liste des leds de droite a gauche allGPIOs = [26,19,13,06,05,21,20,16] # setup de tous les GPIOs for i in allGPIOs: GPIO.setup(i, GPIO.OUT) # allumage en serie for i in allGPIOs: blink(i) # clean up des GPIOs GPIO.cleanup()
Schéma :
Premier montage, à partir de maintenant je ne ferai plus les multiples lignes ! |
Montage :
Test 8 Leds |
Tout cela fonctionne bien.
Prochaine étape complexifier le montage pour intégrer ma carte de relais.
Pas étonnant que le premier programme ne fonctionne pas, un problème de variable pin pour le niveau bas alors que vous utilisez gpio pour le niveau haut ? Copie ci-dessous
RépondreSupprimeron le passe a HIGH, on attend une seconde, on le passe a LOW GPIO.output(gpio,GPIO.HIGH) time.sleep(1) GPIO.output(pin,GPIO.LOW)
Par ailleurs, en programmation, il est d'usage de ne pas utiliser les mots réservés pour des variables. pin gpio en sont!
Bravo pour votre blog . Bonne continuation