myRaspberry

Mes aventures en Raspberry et Arduino

Led

Posted on 20 février 2016  in Composants

fournisseur-led

Le raccordement d’un led se fait de la façon suivante:

  • Raccordement du pied le plus court sur le GND
  • Le pied le plus long sur une resistance, elle même connectée à la broche GPIO.

Les plages de tension des led sont les suivantes

La tension en entrée est 5V, en appliquant: (Ui-Uled)/I=R

 

Capture d’écran 2016-02-21 à 9.52.51 AM

 

Pour me simplifier la vie, j’ai créé une class Led qui permet:

  • Déclarer la led sur un port
  • Faire allumer/étendre la led pendant x seconde
  • Clignoter la led à une fréquence y pendant x seconde

Voici la class.

Class-Led.zip (104 téléchargements)
#!/usr/bin/env python
#
# Class Led
#
# hub.bosseur@gmail.com
# http://aubonsurf.free.fr
# V1.0
######################################
import RPi.GPIO as GPIO
import time

VERSION="1.0"
	
class Led:
	# Usage
	#   declaration:  maLed=Led(PinUtiliser, ModeDeNumerotation)
	#   blink une fois pendant x seconde blinkOne(x)
	#   blink N fois de Xsecondes-1, Ysesconde-0  pendant un cycle temps blinking(x,y,temps)
	#   Allumer : maLed.switchOn()
	#   Eteindre : maLed.switchOff()	
	

	# Déclaration des E/S

	
	def __init__(self, pinBZ,typeBoard):
		self.pin_BZ=pinBZ
		print ("Declaration led sur PIN"+str(self.pin_BZ))
		if typeBoard=='BCM':
			GPIO.setmode(GPIO.BCM) 
			#print ("BCM")
		else:
			GPIO.setmode(GPIO.BOARD) 
			#print ("BOARD")
		GPIO.setup(self.pin_BZ, GPIO.OUT,initial=GPIO.LOW)

	#Fonction qui fait un beep de X seconde
	#usage : moBuzzer.beep(temps)
	# Exemple : moBuzzer.beep(2)
	#
	def blink(self,x):
		#print("blink led "+str(x)+" secondes")
		GPIO.output(self.pin_BZ, GPIO.HIGH)
		time.sleep(x)
		GPIO.output(self.pin_BZ, GPIO.LOW)
		
	def blinking(self,x=1,y=1,temps=30):
		debut = time.time()
		test=True
		while test:
			GPIO.output(self.pin_BZ, GPIO.HIGH)
			time.sleep(x)
			GPIO.output(self.pin_BZ, GPIO.LOW)
			time.sleep(x)
			if (time.time()-debut)>temps:
				test=False
				
	def switchOn(self):
		GPIO.output(self.pin_BZ, GPIO.HIGH)
		
	def switchOff(self):
		GPIO.output(self.pin_BZ, GPIO.LOW)	
		
	def version(self):
		print (VERSION)
	
	
	def clean(self):
		GPIO.cleanup()           

Le programme de test :

#!/usr/bin/env python
#
# test Class Led
#
# hub.bosseur@gmail.com
# http://aubonsurf.free.fr

######################################
import RPi.GPIO as GPIO
import led

#Declaration de la led sur le port GPIO 25
maLed=led.Led(25,"BCM")
#La version de la Class
print (maLed.version())
#Je fais clignoter la led, 5 secondes allumée
maLed.blink(5)
#Je fais clignoter pendant 30 secondes 1s haut, 2s bas 
maLed.blinking(1,2,30)
#Je libère les GPIO avant de partir
maLed.clean()

Si les GPIO du Raspberry pi ne suffisent pas, sachez qu’il est possible d’en rajouter jusqu’à 16*7 (112) en utilisant un gpio expander I2C tel que le MCP23008 ou le MCP23017.