Modifications

Sauter à la navigation Sauter à la recherche
aucun résumé de modification
Ligne 2 : Ligne 2 :     
== Senseur de mouvement ==
 
== Senseur de mouvement ==
{{traduction}}
  −
   
{{bloc-etroit|text=Le Sense HAT met en oeuvre de nombreux senseurs, l'un d'eux est un senseur de mouvement appelé IMU. L'IMU est capable de mesurer le type de mouvement qu'il subit.
 
{{bloc-etroit|text=Le Sense HAT met en oeuvre de nombreux senseurs, l'un d'eux est un senseur de mouvement appelé IMU. L'IMU est capable de mesurer le type de mouvement qu'il subit.
   Ligne 134 : Ligne 132 :     
== Afficher l'orientation sur la matrice LED ==
 
== Afficher l'orientation sur la matrice LED ==
'''1.''' Displaying something which is 3D in a 2D way is always a challenge, especially when your screen is only 8 x 8 pixels in size. One way which might work well is to have one LED for each axis and then make them move in different ways. For example:
+
'''1.''' Afficher quelque-chose provenant de l'univers 3D sur un afficheur 2D est toujours un challenge, plus spécialement si votre afficheur à une taille de 8 x 8 point. Une option qui fonctionnerait bien serait d'utiliser une LED pour chaque axe et de déplacer cette LED de différente façon. Par exemple:
   −
* The pitch LED (''élévation'') could go up and down
+
* La LED pitch (''élévation'') pourrait monter et descendre
* The roll LED (''roulis, roulement'') could go side to side
+
* La LED roll (''roulis, roulement'') pourrait aller d'un côté à l'autre
* The yaw LED (''embardée'') could chase around the edge
+
* La LED yaw (''embardée'') pourrait se déplacer le long des bordures
   −
'''2.''' Here is a clever trick you can do. The table below shows the sequential LED numbers laid out in horizontal rows.
+
'''2.''' Voici une astuce intelligente que vous pouvez réaliser. La table ci-dessous affiche le numéro des LEDs (numérotation séquentielle) organisées en lignes horizontale.
    
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Mouvement-20.jpg]]
 
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Mouvement-20.jpg]]
   −
For any of those numbers you can convert them into their X Y coordinate using the code below.
+
Pour chacun de ces numéros, il est possible des les convertir en coordonnées X Y en utilisant le code ci-dessous.
    
  <nowiki>y = number // 8
 
  <nowiki>y = number // 8
 
x = number % 8</nowiki>
 
x = number % 8</nowiki>
   −
For the {{fname|y}} value you floor divide {{fname|//}} the number by 8. This is integer division and ignores the remainder. Then for the {{fname|x}} value you do the modulus {{fname|%}} of 8 which gives you '''only''' the remainder.
+
Pour la valeur {{fname|y}} vous pouvez utiliser une division entière {{fname|//}} par le nombre 8. Dans division entière, la valeur décimale (et donc le "reste de la division") est simplement ignoré. Ensuite, la valeur de {{fname|x}} est le module {{fname|%}} par 8, ce qui donne '''uniquement''' le reste de la division par 8.
   −
For example (using the number 60 which is on the bottom row):
+
Voici un exemple basé sur le point/pixel 60 se trouvant sur la ligne du bas:
    
  <nowiki>60 // 8 = 7
 
  <nowiki>60 // 8 = 7
 
60 % 8 = 4</nowiki>
 
60 % 8 = 4</nowiki>
   −
'''3.''' Try this code:
+
Notez de '''7'' * 8 + '''4''' donne bien '''60''' :-)
 +
 
 +
'''3.''' Essayez le code suivant:
    
  <nowiki>number = 60
 
  <nowiki>number = 60
Ligne 165 : Ligne 165 :  
sense.set_pixel(x, y, 255, 255, 255)</nowiki>
 
sense.set_pixel(x, y, 255, 255, 255)</nowiki>
   −
'''4.''' The clever trick is to make a list containing the LED numbers for the path you want it to move back and forth through. So say you want to make an LED chase around the edge you would read the numbers accross the top of the table, down the right hand side, backwards along to bottom and up the left side. So it would be:
+
'''4.''' La chose vraiment intelligente dans cet astuce est de réaliser une liste contenant les numéros de LEDs correspondantes à la directions souhaitée. Il suffira alors de se déplacer d'avant en arrière dans cette liste en fonction de la valeur de l'axe.
 +
 
 +
Disons maintenant que nous voulons créer une suite de LEDs à allumer le long des bords de la matrice. Nous allons construire notre liste sur la ligne du haut, puis descende le long du coté droit, aller de gauche à droite sur la ligne du bas et finalement remonter le coté gauche de la matrice.  
 +
 
 +
Cela donnera la liste suivante:
    
  <nowiki>edge = [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8]</nowiki>
 
  <nowiki>edge = [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8]</nowiki>
   −
We can then find the length of the list using the {{fname|len}} function:
+
En anglais, le mot ''edge'' signifie "bordure".
 +
 
 +
Nous pouvons alors trouver la longueur de cette liste en utilisant la fonction {{fname|len}}:
    
  <nowiki>length = len(edge)</nowiki>
 
  <nowiki>length = len(edge)</nowiki>
   −
So the length is 28. If we divide 28 by 360 we have a ratio between, say, the yaw measurement and the positions in our list (how far around the edge we are). We can then get the sequential pixel number out of the list at the calculated position, work out its coordinate and then switch the LED on! Like this:
+
Donc la taille est 28. Si nous divisons 28 par 360 nous avons un rapport entre , disons, la mesure de "yaw" (embardée) et la position de la LED dans notre liste (la distance a parcourir le long de la bordure). Nous pouvons maintenant obtenir le numéro séquentiel du point/pixel directement depuis la liste. De cette valeur "séquentielle" nous pouvons obtenir les coordonnées x et Y de la LED et allumer cette LED (comme expliqué au début de cette section)!  
 +
 
 +
Comme ceci:
    
  <nowiki>from sense_hat import SenseHat
 
  <nowiki>from sense_hat import SenseHat
Ligne 190 : Ligne 198 :  
     yaw = o["yaw"]
 
     yaw = o["yaw"]
   −
     yaw_list_position = int(yaw * ratio)
+
     yaw_list_position = int(yaw * ratio) # Position dans la liste pour YAW
 +
 
 +
    yaw_pixel_number = edge[yaw_list_position] # Numéro du pixel pour YAW
   −
     yaw_pixel_number = edge[yaw_list_position]
+
     y = yaw_pixel_number // 8  # Calcul de la position Y du pixel
 +
    x = yaw_pixel_number % 8  # Calcul de la position X du pixel
   −
     y = yaw_pixel_number // 8
+
     sense.set_pixel(x, y, 255, 255, 255) # Allumer le pixel</nowiki>
    x = yaw_pixel_number % 8
     −
    sense.set_pixel(x, y, 255, 255, 255)</nowiki>
+
'''5.''' Ce qui vous aurez certainement remarqué dans le code ci-dessus, c'est qu'il ne fait qu'allumer les LEDs. Nous vous laissons le soin de trouver, par vous même, le code à utiliser pour éteindre les LEDs.
   −
'''5.''' What you'll notice is that the above code only turns LEDs on, you'll need to figure out how to turn them off yourself. Try having a variable for the previous {{fname|x}} and {{fname|y}} from the last time around the loop and if this is different from the new {{fname|x}} and {{fname|y}} you use {{fname|set_pixel}} to set the LED to black/éteinte.
+
Essayez d'avoir des variables pour la valeur de {{fname|x}} et {{fname|y}} lorsque la boucle à été exécutée la fois précédente. Si la nouvelle valeur de {{fname|x}} et {{fname|y}} (du pixel à allumer) est différente de l'ancienne valeur alors vous pouvez utiliser {{fname|set_pixel}} pour éteindre la LED (la mettre en noir).
    
{{RASP-SENSE-HAT-ASTRO-PI-TRAILER}}
 
{{RASP-SENSE-HAT-ASTRO-PI-TRAILER}}
29 917

modifications

Menu de navigation