Modifications

Sauter à la navigation Sauter à la recherche
498 octets ajoutés ,  19 mars 2017 à 13:42
Ligne 74 : Ligne 74 :  
La limitation du nombre de pixel contrôlable est fixé par la quantité maximale d'information qui peut être envoyer en une fois sur le FT232H via le bus USB. Cette limite est d'environ 64 kilobytes (Kilo Octets). Etant donné que nous faisons du sur-échantillonnage du signal de contrôle NéoPixel, chaque pixel requière 24*8 octets/bytes de donnée SPI (ou un octet/byte de donnée SPI pour chaque bit de donnée NéoPixel).
 
La limitation du nombre de pixel contrôlable est fixé par la quantité maximale d'information qui peut être envoyer en une fois sur le FT232H via le bus USB. Cette limite est d'environ 64 kilobytes (Kilo Octets). Etant donné que nous faisons du sur-échantillonnage du signal de contrôle NéoPixel, chaque pixel requière 24*8 octets/bytes de donnée SPI (ou un octet/byte de donnée SPI pour chaque bit de donnée NéoPixel).
    +
=== Matériel ===
 
Vous aurez besoin des éléments suivants pour tester l'utilisation de NeoPixel avec le breakout FT232H:
 
Vous aurez besoin des éléments suivants pour tester l'utilisation de NeoPixel avec le breakout FT232H:
 
* Un breakout FT232H assemblé.
 
* Un breakout FT232H assemblé.
Ligne 83 : Ligne 84 :  
* Des fils de connexion et breadboard.
 
* Des fils de connexion et breadboard.
    +
=== Montage ===
 
Dans cet exemple, nous allons éclairer un anneau NéoPixe à 16 LEDs et nous allons utiliser une diode de puissance capable de gérer un courant de 1 ampère. Si vous utilisez plus de 16 pixels, il faudra envisager une diode plus puissance (ou un convertisseur de niveau logique {{pl|1041|74AHCT125}} ).
 
Dans cet exemple, nous allons éclairer un anneau NéoPixe à 16 LEDs et nous allons utiliser une diode de puissance capable de gérer un courant de 1 ampère. Si vous utilisez plus de 16 pixels, il faudra envisager une diode plus puissance (ou un convertisseur de niveau logique {{pl|1041|74AHCT125}} ).
    
Connectez le matériel comme suit:
 
Connectez le matériel comme suit:
* La masse/GND du FT232H --vers--> supply ground.
+
* La masse/GND du FT232H '''--vers-->''' la masse/GND de l'alimentation.
* FT232H D1 (MOSI) sur le signal d'entrée NeoPixel.
+
* FT232H D1 (MOSI) '''--vers-->''' le signal d'entrée NeoPixel.
{{traduction}}
+
* Alimentation Positive '''--vers-->''' Anode de la diode (le côté de la diode SANS la bande blanche).
* Power supply positive voltage to diode anode (side without the stripe).
+
* Cathode de la diode (le côté de la diode AVEC la bande blanche) '''--vers-->''' le (+) des NeoPixels.
* NeoPixel positive voltage to diode cathode (side with the stripe).
+
* Le (-)/GND des NéoPixels '''--vers-->''' le (-)/GND de l'alimentation.
* NeoPixel ground to power supply ground.
     −
A picture of the hardware setup is below (note [[NeoPixel-UserGuide|I've added a large capacitor to the power supply as recommended in the NeoPixel Uberguide]]):
+
Voyez ci-dessous une photo du montage en question (note [[NeoPixel-UserGuide|une capacité est ajoutée sur l'alimentation comme recommandé dans le guide NeoPixel]]):
    
{{ADFImage|RASP-FT232H-MPSSE-Usage-SPI-00.jpg}}
 
{{ADFImage|RASP-FT232H-MPSSE-Usage-SPI-00.jpg}}
   −
Now create a file neopixels.py and fill it with the following code:
+
=== Programmation ===
 +
Nous allons maintenant créer un fichier neopixels.py et y ajouter le code suivant:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 108 : Ligne 110 :  
class NeoPixel_FT232H(object):
 
class NeoPixel_FT232H(object):
 
def __init__(self, n):
 
def __init__(self, n):
# Create an FT232H object.
+
# Creer l object FT232H.
 
self.ft232h = FT232H.FT232H()
 
self.ft232h = FT232H.FT232H()
# Create a SPI interface for the FT232H object. Set the SPI bus to 6mhz.
+
# Creer l interface SPI sur l objet FT232H. configurer le bus SPI a 6mhz.
 
self.spi    = FT232H.SPI(self.ft232h, max_speed_hz=6000000)
 
self.spi    = FT232H.SPI(self.ft232h, max_speed_hz=6000000)
# Create a pixel data buffer and lookup table.
+
# Creer un buffer de donnee pour les pixels et une table de correspondant (lookup table).
 
self.buffer = bytearray(n*24)
 
self.buffer = bytearray(n*24)
 
self.lookup = self.build_byte_lookup()
 
self.lookup = self.build_byte_lookup()
    
def build_byte_lookup(self):
 
def build_byte_lookup(self):
# Create a lookup table to map all byte values to 8 byte values which
+
# Creer une table de correspondance qui map toutes les valeurs en octet/bytes
# represent the 6mhz SPI data to generate the NeoPixel signal for the
+
# --VERS-- des valeurs 8 octet/byte qui represente les donnees SPI 6mhz
# specified byte.
+
# pour le signal neopixel pour l'octet/byte specifie
 +
#  
 
lookup = {}
 
lookup = {}
 
for i in range(256):
 
for i in range(256):
Ligne 132 : Ligne 135 :     
def set_pixel_color(self, n, r, g, b):
 
def set_pixel_color(self, n, r, g, b):
# Set the pixel RGB color for the pixel at position n.
+
# Fixer la couleur RGB d'une pixel pour le Nieme position.
# Assumes GRB NeoPixel color ordering, but it's easy to change below.
+
# Fixe l ordre des couleurs sur GRB (vert rouge bleu) mais
 +
# cela est facilement modifiable ci-dessous.
 
index = n*24
 
index = n*24
 
self.buffer[index  :index+8 ] = self.lookup[int(g)]
 
self.buffer[index  :index+8 ] = self.lookup[int(g)]
Ligne 140 : Ligne 144 :     
def show(self):
 
def show(self):
# Send the pixel buffer out the SPI data output pin (D1) as a NeoPixel
+
# Envoi le buffer de pixel sir la sortie SPI (broche D1) qui sera
# signal.
+
# percu par les Neopixels comme le signal de commande.
 
self.spi.write(self.buffer)
 
self.spi.write(self.buffer)
      −
# Run this code when the script is called at the command line:
+
# Executer le code lorsque le script est appele en ligne de commande:
 
if __name__ == '__main__':
 
if __name__ == '__main__':
# Define the number of pixels in the NeoPixel strip.
+
# Definir le nombre de pixels utilisé.
# Only up to ~340 pixels can be written using the FT232H.
+
# Seul ~340 pixels peuvent être utilisé avec le FT232H.
 
pixel_count = 16
 
pixel_count = 16
# Create a NeoPixel_FT232H object.
+
# Creer un objet NeoPixel_FT232H.
 
pixels = NeoPixel_FT232H(pixel_count)
 
pixels = NeoPixel_FT232H(pixel_count)
# Animate each pixel turning red.
+
# Animation - allumer chaque pixel en rouge.
# Loop through each pixel.
+
# Passer chaque pixel en revue.
 
for i in range(pixel_count):
 
for i in range(pixel_count):
# Set the pixel color to pure red.
+
# Changer la couleur du pixel en rouge pure.
 
pixels.set_pixel_color(i, 255, 0, 0)
 
pixels.set_pixel_color(i, 255, 0, 0)
# Show the pixel buffer by sending it to the LEDs.
+
# Envoyer le buffer (de pixel) vers les LEDs.
 
pixels.show()
 
pixels.show()
# Delay for a short period of time.
+
# faire une toute petite pause.
 
time.sleep(0.25)
 
time.sleep(0.25)
# Animate each pixel turning pure green.
+
# Animation - allumer chaque pixel en vert pure.
 
for i in range(pixel_count):
 
for i in range(pixel_count):
 
pixels.set_pixel_color(i, 0, 255, 0)
 
pixels.set_pixel_color(i, 0, 255, 0)
 
pixels.show()
 
pixels.show()
 
time.sleep(0.25)
 
time.sleep(0.25)
# Animate each pixel turning pure blue.
+
# Animation - allumer chaque pixel en bleu pure.
 
for i in range(pixel_count):
 
for i in range(pixel_count):
 
pixels.set_pixel_color(i, 0, 0, 255)
 
pixels.set_pixel_color(i, 0, 0, 255)
 
pixels.show()
 
pixels.show()
 
time.sleep(0.25)
 
time.sleep(0.25)
# Animate a pattern of colors marching around the pixels.
+
# Un modèle (pattern) de couleur qui se déplace le long des pixels.
# Create a pattern of colors to display.
+
# Creation du modele de couleur.
 
colors = [ (255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255),  
 
colors = [ (255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255),  
 
(0, 0, 255), (255, 0, 255) ]
 
(0, 0, 255), (255, 0, 255) ]
 
offset = 0
 
offset = 0
print 'Press Ctrl-C to quit.'
+
print 'Presser Ctrl-C pour quitter.'
 
while True:
 
while True:
# Loop through all the pixels and set their color based on the pattern.
+
# Passer tous les pixels en revue et fixer leur couleur en fonction du modèle.
 
for i in range(pixel_count):
 
for i in range(pixel_count):
 
color = colors[(i+offset)%len(colors)]
 
color = colors[(i+offset)%len(colors)]
 
pixels.set_pixel_color(i, color[0], color[1], color[2])
 
pixels.set_pixel_color(i, color[0], color[1], color[2])
 
pixels.show()
 
pixels.show()
# Increase the offset to make the colors change position.
+
# Incrementer le decalage (offset) pour changer la position des differentes couleurs.
 
offset += 1
 
offset += 1
 
time.sleep(0.25)
 
time.sleep(0.25)
 
</syntaxhighlight>
 
</syntaxhighlight>
   −
Save the file and navigate to the folder with it in a terminal, then execute the following in Windows to run the program:
+
Sauver le fichier. Utilisez un terminal et naviguez dans le répertoire contenant le fichier.
 +
 
 +
Exécutez ensuite la commande suivante dans le terminal:
    
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Ligne 194 : Ligne 200 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Or on Mac OSX or Linux  execute the following to run the program as root:
+
Sur une machine Linux ou Mac OSX, il faut exécuter la commande en tant que root:
    
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Ligne 200 : Ligne 206 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
 
+
{{traduction}}
    
You should see the NeoPixels light up and animate with different colors.  Note that you might need to change the pixel_count variable in the main part of the program to match the number of pixels in your NeoPixel strip, circle, matrix, etc.
 
You should see the NeoPixels light up and animate with different colors.  Note that you might need to change the pixel_count variable in the main part of the program to match the number of pixels in your NeoPixel strip, circle, matrix, etc.
29 917

modifications

Menu de navigation