Modifications

Sauter à la navigation Sauter à la recherche
1 650 octets ajoutés ,  28 septembre 2015 à 07:22
Ligne 436 : Ligne 436 :  
[[Fichier:hat-sense-banner-05.jpg]]
 
[[Fichier:hat-sense-banner-05.jpg]]
   −
Le Sense HAT dispose également de senseurs qui peuvent détecter le mouvement. Il est équipé d'une centrale de mesure intertielle (dite IMU pou ''Inertial Measurement Unit'') sous forme d'une puce qui inclus:
+
Le Sense HAT dispose également de senseurs qui peuvent détecter le mouvement. Il est équipé d'une centrale de mesure inertielle (dite IMU pou ''Inertial Measurement Unit'') sous forme d'une puce qui inclus:
 
* Un gyroscope (pour détecter dans quelle direction la carte est orientée)
 
* Un gyroscope (pour détecter dans quelle direction la carte est orientée)
 
* Un accéléromètre (pour détecter le mouvement)
 
* Un accéléromètre (pour détecter le mouvement)
Ligne 453 : Ligne 453 :     
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Debuter-30.jpg]]
 
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Debuter-30.jpg]]
  −
{{traduction}}
      
Vous pouvez obtenir l'orientation du Sense Hat en appelant la méthode {{fname|sense.get_orientation()}}:
 
Vous pouvez obtenir l'orientation du Sense Hat en appelant la méthode {{fname|sense.get_orientation()}}:
Ligne 460 : Ligne 458 :  
  <nowiki>pitch, roll, yaw = sense.get_orientation().values()</nowiki>
 
  <nowiki>pitch, roll, yaw = sense.get_orientation().values()</nowiki>
   −
Cela donne les trois valeurs d'orientation (mesuré en degrés) et stocke ces valeurs dans trois variables respectivement nommées {{fname|pitch}}, {{fname|roll}} et {{fname|yaw}}. La partie {{fname|.values()}} de l'appel obtient les 3 valeurs ce qui permet de les stocker séparéments.
+
Cela donne les trois valeurs d'orientation (mesuré en degrés) et stocke ces valeurs dans trois variables respectivement nommées {{fname|pitch}}, {{fname|roll}} et {{fname|yaw}}. La partie {{fname|.values()}} de l'appel obtient les 3 valeurs ce qui permet de les stocker séparément.
    
'''1.''' Vous pouvez découvrir et explorer ces valeurs à l'aide du programme suivant:
 
'''1.''' Vous pouvez découvrir et explorer ces valeurs à l'aide du programme suivant:
Ligne 474 : Ligne 472 :  
'''2.''' Cliquer sur "File -- Save As" (''Fichier -- Sauver comme'') et donner un nom au programme - exemple {{fname|orientation.py}}. Pressez '''F5''' pour exécuter le programme.
 
'''2.''' Cliquer sur "File -- Save As" (''Fichier -- Sauver comme'') et donner un nom au programme - exemple {{fname|orientation.py}}. Pressez '''F5''' pour exécuter le programme.
   −
{{tmbox|Note: Lorsque l'on utilise des senseurs de mouvement, il est important de les interroger souvent à l'aide d'une boucle très courte. Par exemple, une pause de 0.5 seconde dans votre boucle provoquera un affichage un affichage bizarre. C'est parce que le code de la bibliothèque à besoin de faire beaucoup de mesure de façon à parfaitement combiner les données provenant du gyroscope, accelérometre et du magnétomètre.}}
+
{{tmbox|text=Note: Lorsque l'on utilise des senseurs de mouvement, il est important de les interroger souvent à l'aide d'une boucle très courte. Par exemple, une pause de 0.5 seconde dans votre boucle provoquera un affichage un affichage bizarre. C'est parce que le code de la bibliothèque à besoin de faire beaucoup de mesure de façon à parfaitement combiner les données provenant du gyroscope, accéléromètre et du magnétomètre.}}
    
'''3.''' Une autre façon de détecter l'orientation est d'utiliser la méthode {{fname|sense.get_accelerometer_raw()}} qui vous indique la quantité de force-g agissant sur les 3 axes. Si n'importe quel axe indique une valeur d'environ 1g alors cet axe pointe vers le bas.
 
'''3.''' Une autre façon de détecter l'orientation est d'utiliser la méthode {{fname|sense.get_accelerometer_raw()}} qui vous indique la quantité de force-g agissant sur les 3 axes. Si n'importe quel axe indique une valeur d'environ 1g alors cet axe pointe vers le bas.
Ligne 524 : Ligne 522 :  
'''6.''' Cliquer sur "File -- Save As" (''Fichier -- Sauver comme'') et donner un nom au programme - {{fname|rotating_letter.py}} par exemple (signifiant ''lettre tournante''). Pressez ensuite '''F5''' pour exécuter le programme.
 
'''6.''' Cliquer sur "File -- Save As" (''Fichier -- Sauver comme'') et donner un nom au programme - {{fname|rotating_letter.py}} par exemple (signifiant ''lettre tournante''). Pressez ensuite '''F5''' pour exécuter le programme.
   −
In this program you are using an {{fname|if, elif, else}} structure to check which way round the Raspberry Pi is. The {{fname|if}} and {{fname|elif}} test three of the orientations, and if the orientation doesn't match any of these then the program assumes it is the "right" way round. By using the {{fname|else}} statement we also catch all those other situations, like when the board is at 45 degrees or sitting level.
+
Dans ce programme, vous utilisez une structure {{fname|if, elif, else}} pour détecter l'orientation du Raspberry-Pi. Le {{fname|if}} et {{fname|elif}} teste les trois orientation ET si l'orientation ne correspond à aucun des orientations testées par le programme ALORS le programme considère de l'orientation est ''correcte''. En utilisant l'instruction {{fname|else}} nous couvrons également tous les autres cas, comme lorsque la carte est inclinée de 45 degrées ou reposée sur un présentoir incliné.
   −
'''7.''' If the board is only rotated, it will only experience 1g of acceleration in any direction; if we were to shake it, the sensor would experience more than 1g. We could then detect that rapid motion and respond. For this program we will introduce the {{fname|abs()}} function which is not specific to the Sense HAT library and is part of standard Python. {{fname|abs()}}} gives us the size of a value and ignores whether the value is positive or negative. This is helpful as we don't care which direction the sensor is being shaken, just that it is shaken.
+
'''7.''' Si vous ne faites que tourner la carte, vous remarquerez par l'expérience qu'il n'y a que '''1g''' dans chaque direction; Si nous la secouons, le senseur détectera des accélérations '''supérieure à 1g'''. Nous pourrions détecter ce '''mouvement rapide''' et y répondre. Nous allons introduire la fonction {{fname|abs()}} pour les besoins du programme suivant. {{fname|abs()}} n'est pas spécifique à la bibliothèque Sense_Hat et fait partie des éléments standard de Python. {{fname|abs()}}} nous donne la grandeur d'une valeur en ignorant volontairement si cette valeur est positive ou négative. Donc {{fname|abs(3.1415)}} donne 3.1514 et {{fname|abs(-3.1415)}} donne également 3.1514. La fonction {{fname|abs()}} est très utile puisque nous ne voulons pas savoir dans quelle direction le senseur est secoué... nous voulons juste savoir qu'il est secoué.
    
  <nowiki>from sense_hat import SenseHat
 
  <nowiki>from sense_hat import SenseHat
Ligne 546 : Ligne 544 :       −
'''8.''' Click File -- Save As, give your program a name e.g. {{fname|shake.py}}, then press F5 to run.
+
'''8.''' Cliquer sur "File -- Save As" (''fichier -- Sauver sous'') et donner lui un nom - par exemple {{fname|shake.py}} (en anglais "shake" signifie ''secouer''). Presser '''F5''' pour démarrer le programme.
   −
You might find this is quite sensitive, but you could change the value from 1 to a higher number.
+
Si le programme semble trop sensible, vous pouvez remplacer la valeur 1 par une valeur supérieure.
    
=== Idées ===
 
=== Idées ===
* You could write a program that displays an arrow (or other symbol) on screen; this symbol could be used to point to which way is down. This way the astronauts (in low gravity) always know where the Earth is.
+
* Vous pourriez écrire un programme qui affiche une une flèche Y(ou autre symbole) sur l'écran; le symbol peut etre utilisé pour indiquer où se trouve le sol. Cela permettrait à des astronaute (évoluant en basse gravité) de savoir où se trouve la terre.
* You could improve the dice program from earlier in this activity, so that shaking the Pi triggers the dice roll.
+
* Vous pourriez améliorer le programme "Dé" (voir les activités précédentes) pour ''jeter le Dé'' en secouant le dé.
* You could use the accelerometer to sense small movements; this could form part of a game, alarm system or even an earthquake sensor.
+
* Vous pourriez utiliser l'accéléromètre pour détecter les petits mouvements; Cela pourrait agir comme contrôleur de jeu, système d'alarme, détecteur de tremblement de terre.
    
== Tout mettre ensemble ==
 
== Tout mettre ensemble ==
 
[[Fichier:hat-sense-banner-06.jpg]]
 
[[Fichier:hat-sense-banner-06.jpg]]
   −
Now that you've explored most of the features of the Sense HAT, you could combine them to create a project. Here's an example reaction testing game, which could be used by the astronauts to test their reflexes.
+
Maintenant que vous avez exploré les possibilités du Sense Hat, vous pourriez les combiner pour créer des projets. Voici un exemple de jeu testant la réaction humaine, jeu qui pourrait être utilisé par des astronautes pour tester leurs réflexes.
   −
The game will display an arrow on the LED matrix and select a random orientation for it. The player must rotate the board to match the arrow. If they match it in time the arrow turns green and their score increases; if not their arrow turns red and the game ends, telling them their score. The game keeps showing arrows in new orientations until the player loses, and each turn gets faster.
+
Le jeu affiche une flèche sur la matrice LED en choisissant une orientation au hasard. Le joueur doit tourner la carte pour garder la flèche vers le haut. S'il le fait dans le temps imparti, la flèche devient verte et le score augmente; dans le cas contraire, la flèche devient rouge et le jeu est terminé. Le jeu continue d'afficher des flèches dans des directions aléatoires jusqu'au moment où le joueur à perdu, et le jeu va de plus en plus vite.
   −
This idea combines:
+
Cette idée combine:
* Showing messages and images on the LED matrix
+
* L'affichage de message et images sur la matrice LED.
* Setting and detecting the orientation
+
* Sélection et détection d'une orientation
* Use of variables, randomisation, iteration, and selection
+
* L'utilisation de variables, nombre aléatoire, itération et sélection
   −
As this is more complicated than previous programs it's worth planning out the steps involved in '''pseudocode'''.
+
Il s'agit d'un programme plus compliqué que les exemples précédents, il est donc préférable d'identifier les étapes clés en les décrivant dans un  '''pseudocode'''.
   −
  <nowiki>import the required libraries (sense_hat, time, random)
+
  <nowiki>importer les bibliothèques nécessaires (sense_hat, time, random)
     create a sense object
+
     Créer l'objet ''sense''
   −
     Set up the colours needed
+
     Definir les couleurs nécessaire
     Create 3 different arrows (white, green, red)
+
     Créer 3 flèches différentes: une blanche (''white'' en anglais), verte (''green'' en anglais) et rouge (''red'').
     Set a variable pause to 3 (the initial time between turns)
+
     Initialiser la variable "pause" à 3 (Le temps initial entre chaque round)
     Set variables score and angle to 0
+
     Initialiser les variables "score" et "angle" à 0
     Create a variable called play set to True (this will be used to stop the game later)
+
     Créer une variable "play" (signifiant "''jeu''") initialisée à True (Elle sera utilisé pour arrêter le jeu)
   −
     Begin a loop which continues while play == True
+
     Commencer la boucle while pour continuer le jeux tant que "play" est à True.
     Set a new random angle (use random.choice() method)
+
        while play == True
     Show the white arrow and sleep for current pause length
+
     Choisir un nouvel angle au hasard en utilisant la méthode random.choice()
     Check whether orientation matches the arrow
+
     Afficher une flèche blanche et attendre le temps indiqué dans pause
     ---if it does then add a point and turn the arrow green
+
     Vérifier si l'orientation correspond à la flèche
     ---otherwise set play to False and turn the arrow red
+
     ---Si c'est le cas Alors ajouter un point et passer la flèche en vert.
     Shorten the pause duration slightly
+
     ---Sinon fixer "play" à False (pour arrêter le jeu) et afficher une flèche rouge
     Pause before the next arrow
+
     Diminuer un peu le temps de pause
 +
     Faire une pause avant la prochaine flèche.
   −
     When loop is exited, display a message with the score</nowiki>
+
     Lorsque la boucle while est terminée, afficher un message avec le score</nowiki>
   −
If you turned this into Python it could look like this:
+
Si vous transformez ce pseudo code en Python, vous obtiendrez un code similaire à celui-ci:
    
  <nowiki>from sense_hat import SenseHat
 
  <nowiki>from sense_hat import SenseHat
Ligne 597 : Ligne 596 :  
sense = SenseHat()
 
sense = SenseHat()
   −
# set up the colours (white, green, red, empty)
+
# Initialiser les couleur
   −
w = [150, 150, 150]
+
w = [150, 150, 150] # w = white (blanc)
g = [0, 255, 0]
+
g = [0, 255, 0]     # g = green (vert)
r = [255, 0, 0]
+
r = [255, 0, 0]     # r = red  (rouge)
e = [0, 0, 0]
+
e = [0, 0, 0]       # e = empty (vide... donc noir)
   −
# create images for three different coloured arrows
+
# créer les images de flèche avec 3 couleurs
 +
# différentes
 +
 
 +
# arrow = flèche
    
arrow = [
 
arrow = [
Ligne 616 : Ligne 618 :  
e,e,e,w,w,e,e,e
 
e,e,e,w,w,e,e,e
 
]
 
]
 +
 +
# arrow_red = flèche_rouge
    
arrow_red = [
 
arrow_red = [
Ligne 627 : Ligne 631 :  
e,e,e,r,r,e,e,e
 
e,e,e,r,r,e,e,e
 
]
 
]
 +
 +
# arrow_green = fleche_verte
    
arrow_green = [
 
arrow_green = [
Ligne 644 : Ligne 650 :  
play = True
 
play = True
   −
sense.show_message("Keep the arrow pointing up", scroll_speed=0.05, text_colour=[100,100,100])
+
sense.show_message("Garder la fleche pointee en haut", scroll_speed=0.05, text_colour=[100,100,100])
    
while play:
 
while play:
     last_angle = angle
+
     last_angle = angle # Mémoriser le dernier angle
 
     while angle == last_angle:
 
     while angle == last_angle:
 
         angle = random.choice([0, 90, 180, 270])
 
         angle = random.choice([0, 90, 180, 270])
Ligne 681 : Ligne 687 :  
     time.sleep(0.5)
 
     time.sleep(0.5)
   −
msg = "Your score was %s" % score
+
msg = "Votre score etait de %s" % score
 
sense.show_message(msg, scroll_speed=0.05, text_colour=[100, 100, 100])</nowiki>
 
sense.show_message(msg, scroll_speed=0.05, text_colour=[100, 100, 100])</nowiki>
   −
'''1.''' Click File -- Save As, give your program a name e.g. {{fname|reaction_game.py}}, then press F5 to run.
+
'''1.''' cliquer sur "File -- Save As" (''Fichier -- Sauver sous'') et donner un nom à votre programme - par exemple {{fname|reaction_game.py}} ("game" signifie ''jeu'' et "reaction" ''réaction''). Ensuite, pressez sur '''F5''' pour exécuter le programme.
   −
Here's a video showing it being demonstrated:
+
Voici une vidéo montrant comment fonctionne le programme:
    
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Debuter-40.jpg|link=https://www.youtube.com/watch?v=k1ZB8jORb74]]<small><br />Vous pouvez également [https://www.youtube.com/watch?v=k1ZB8jORb74 cliquer ici pour visionner la vidéo YouTube]
 
[[Fichier:RASP-SENSE-HAT-ASTRO-PI-Debuter-40.jpg|link=https://www.youtube.com/watch?v=k1ZB8jORb74]]<small><br />Vous pouvez également [https://www.youtube.com/watch?v=k1ZB8jORb74 cliquer ici pour visionner la vidéo YouTube]
    
=== Idées ===
 
=== Idées ===
There are lots of potential developments for this game:
+
Il y a beaucoup de potentiel de développement avec ce jeu:
* Include shake actions as well as orientation.
+
* Jouer sur l'orientation et le secouage.
* Make use of the humidity sensor to detect breath; the player could be prompted to breathe on the board as an action.
+
* Utiliser le senseur de température pour détecter l'haleine... une des actions demandée à l'utilisateur serait de souffler sur le détecteur d'humitidé.
* Include more than 4 directions; players have to hold at 45 degrees.
+
* Utiliser plus que les 4 directions du programme d'exemple; il pourrait être demandé au joueur de placer la carte à 45°C.
 
      
{{RASP-SENSE-HAT-ASTRO-PI-TRAILER}}
 
{{RASP-SENSE-HAT-ASTRO-PI-TRAILER}}
29 917

modifications

Menu de navigation