Différences entre versions de « MicroPython-Hack-led-RGB »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 85 : Ligne 85 :
 
=== Plus de couleurs ===
 
=== Plus de couleurs ===
 
{{traduction}}
 
{{traduction}}
J'imagine que vous êtes moins qu'impressionné par la couleur cyan rayonnante sous vos yeux.
+
J'imagine que vous êtes moins qu'impressionné par l'affichage des trois couleurs de base. Nous allons donc rendre le jouet un peu plus intéressant en élaborant d'autres couleurs (''en les mélangeant''), en définissant une séquence de couleur et en automatisant l'affichage de celles-ci.
  
Pour afficher une couleurs différentes, changer la couleur dans votre code avec l'une des couleurs disponibles.
+
  <nowiki>RED_PIN = pyb.Pin.board.Y10    # Led rouge
  <nowiki>setColor(ledDigitalOne, CYAN);</nowiki>
+
GREEN_PIN = pyb.Pin.board.Y11  # Led verte
 +
BLUE_PIN = pyb.Pin.board.Y12  # Led bleue
  
par
+
# Déclaration des broches
 +
pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP )
 +
pGreen = pyb.Pin( GREEN_PIN, pyb.Pin.OUT_PP )
 +
pBlue = pyb.Pin( BLUE_PIN, pyb.Pin.OUT_PP )
  
<nowiki> setColor(ledDigitalOne, **AUTRE_COULEUR**);</nowiki>
+
# Déclaration des 3 broches la LED RGB
 +
pRGB = (pRed,pGreen,pBlue)
  
Choisissez l'une des couleurs disponibles dans le tableau {{fname|COLORS}}.
+
# Assigne l'etat des broches rouge,vert,bleu à partir d'un tuple de
 +
# 3 éléments tels que  (True,True,True)
 +
def set_led( p_rgb, state_tuple ):
 +
for i in range(0,3):
 +
# Note: Une led est activée si l'on met la broche correspondante
 +
#      a GND.
 +
    p_rgb[i].value( not( state_tuple[i] ) )
 +
 
 +
# Faire un mix de deux états RGB pour en composer un troisième.
 +
# Rouge (True,False,False) + Bleu (False,False,True) = Magenta (True,False,True)
 +
def mix_color( color1, color2 ):
 +
    return (color1[0] | color2[0], color1[1] | color2[1], color1[2] | color2[2] )
 +
 
 +
# Désactivation des LEDs
 +
set_led( pRGB, (False, False, False) )
 +
 
 +
# Sequences d'allumage des LEDs R,G,B
 +
noir  = (False,False,False)
 +
rouge = (True,False,False)
 +
vert  = (False,True,False)
 +
bleu  = (False,False,True) 
 +
jaune = mix_color( rouge, vert )
 +
cyan  = mix_color( vert, bleu )
 +
magenta = mix_color( bleu, rouge )
 +
 +
sequences = [
 +
    rouge, vert, bleu, noir, # Couleurs de base
 +
    rouge, jaune, vert, cyan, bleu, magenta # Suivre la rouge des couleurs
 +
    ]
 +
   
 +
# Initialiser la LED à toutes les séquences
 +
for seq in sequences:
 +
set_led( pRGB, seq )
 +
# Attendre 2 secondes
 +
pyb.delay( 2000 )
 +
 +
set_led( pRGB, noir )</nowiki>
  
 
=== Afficher les couleurs aléatoirement ===
 
=== Afficher les couleurs aléatoirement ===

Version du 10 janvier 2016 à 15:59


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que nous faisons

.: Lumière colorée :.

.: LED RGB :.

Nous avons fait clignoter une LED et aussi contrôlé une séquence de huit LEDs. Maintenant, il est temps d'en contrôler la couleur.

En utilisant une LED RGB (Red Green Blue ou RVB pour Rouge Vert Bleu) qui est en fait 3 LEDs dans un seul boîtier, nous pouvons générer n'importe laquelle des couleurs que vous souhaitez. Nous y arrivons en faisant un mélange de couleur.

Ce qui nécessite de faire un petit retour en arrière sur nos premiers cours d'éducation artistique, ces jours durant lesquels nous expérimentions les mélanges de couleurs à partir de feuilles de cellophane colorées.

Pas de panique si vous ne vous en souvenez pas, vous trouverez ci-joint une roue des couleurs pour vous aider.

ARDX-Montages-CIRC12-table-couleur.png

ARDX-Montages-CIRC12-roue-couleur.png

Le montage

Le matériel nécessaire

ARDX-R330.png

Résistance de 330 Ohms (orange-orange-brun)
x3

 

Tous ces éléments sont disponibles sur shop.mchobby.be.

Schéma

Bien la la LED RGB soit habituellement utilisée sur Arduino (5V), nous pouvons fort bien l'utiliser avec une tension d'alimentation de 3.3v.

Nous allons brancher:

  • La LED rouge sur Y10
  • La LED verte sur Y11
  • La LED bleu sur Y12

MicroPython-Hack-led-RGB-schema.png

Montage

MicroPython-Hack-led-RGB-montage.jpg

Le code

xxx

Cela ne fonctionne pas?

Voici 3 choses à essayer.

La LED reste noire ou affiche une couleur incorrecte?

Il est facile de faire une erreur avec les quatre broches de la LED si proches les unes des autres.

Essayez de vérifier si chacune des broches est bien à sa place.

c'est trop "rouge"!

La diode rouge de la LED RGB pourrait être plus brillante que les deux autres.

Pour ajuster la balance des couleurs, essayez d'utiliser une résistance plus grande (ou deux résistances montées en série).

En effet, la LED rouge de la LED RGB consomme un courant de 4.30mA là où les LEDs Verte et Bleue consomme environ 1.90mA.

Envie de plus ?

(brancher sans se retenir)

Si vous voulez en faire un peu plus, pourquoi ne pas allez jeter un oeil sur les petits plus et extra disponibles shop.MCHobby.be]

Faire encore mieux

Plus de couleurs

J'imagine que vous êtes moins qu'impressionné par l'affichage des trois couleurs de base. Nous allons donc rendre le jouet un peu plus intéressant en élaborant d'autres couleurs (en les mélangeant), en définissant une séquence de couleur et en automatisant l'affichage de celles-ci.

RED_PIN = pyb.Pin.board.Y10    # Led rouge
GREEN_PIN = pyb.Pin.board.Y11  # Led verte
BLUE_PIN = pyb.Pin.board.Y12   # Led bleue

# Déclaration des broches
pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP )
pGreen = pyb.Pin( GREEN_PIN, pyb.Pin.OUT_PP )
pBlue = pyb.Pin( BLUE_PIN, pyb.Pin.OUT_PP )

# Déclaration des 3 broches la LED RGB 
pRGB = (pRed,pGreen,pBlue)

# Assigne l'etat des broches rouge,vert,bleu à partir d'un tuple de 
# 3 éléments tels que  (True,True,True)
def set_led( p_rgb, state_tuple ):
	for i in range(0,3):
		# Note: Une led est activée si l'on met la broche correspondante
		#       a GND.
	    p_rgb[i].value( not( state_tuple[i] ) ) 

# Faire un mix de deux états RGB pour en composer un troisième.
# Rouge (True,False,False) + Bleu (False,False,True) = Magenta (True,False,True)
def mix_color( color1, color2 ):
    return (color1[0] | color2[0], color1[1] | color2[1], color1[2] | color2[2] ) 

# Désactivation des LEDs
set_led( pRGB, (False, False, False) )

# Sequences d'allumage des LEDs R,G,B
noir  = (False,False,False)
rouge = (True,False,False)
vert  = (False,True,False)
bleu  = (False,False,True)  
jaune = mix_color( rouge, vert )
cyan  = mix_color( vert, bleu )
magenta = mix_color( bleu, rouge )
 
sequences = [ 
    rouge, vert, bleu, noir, # Couleurs de base
    rouge, jaune, vert, cyan, bleu, magenta # Suivre la rouge des couleurs
    ]
    
# Initialiser la LED à toutes les séquences
for seq in sequences:
	set_led( pRGB, seq )
	# Attendre 2 secondes
	pyb.delay( 2000 )
	
set_led( pRGB, noir )

Afficher les couleurs aléatoirement

Nous pouvons bien entendu faire plus qu'afficher constamment la même couleur.

Pour voir comment nous pouvons faire des cycles entre différentes couleurs aléatoires modifiez le code de la fonction loop() vers :

void loop(){
   //setColor(ledDigitalOne, CYAN);
   randomColor()
}

Contrôle analogique des couleurs

Passer d'une couleur à l'autre est amusant. Mais les LEDs RGBs ne montrent tout leur potentiel que lorsque l'on fait des mélanges de couleurs à l'aide du contrôle analogique.

En utilisant la modulation de largeur d'impulsion (PWM) il est possible de produire presque n'importe quelle couleur et de faire des fondus d'une couleur à l'autre.

Malheureusement, le code utilisé pour faire cela est trop long pour cette section.

Pour un exemple de programme, téléchargez le code depuis :

Plus, plus et encore plus

Plus d'information, où poser vos autres questions:


Internet

.:téléchargement:.

xxxx



Source: Micro Python Intro écrit par/written by Damien P.George

Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org