issue181:micro-ci
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue181:micro-ci [2022/05/30 08:01] – d52fr | issue181:micro-ci [2022/06/03 17:28] (Version actuelle) – andre_domenech | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
Since there are 360 degrees in our circle and we have 24 LEDs, that would mean that each of our LEDs would represent 15 degrees. So if LED[0] represents North, East would then be LED[6], South would be LED[12] and West would be LED[18].** | Since there are 360 degrees in our circle and we have 24 LEDs, that would mean that each of our LEDs would represent 15 degrees. So if LED[0] represents North, East would then be LED[6], South would be LED[12] and West would be LED[18].** | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | Revenez deux mois en arrière, à la partie 13 (qui était dans le FCM n° 179). Nous utilisions le LSM 303 avec le Raspberry Pi Pico pour créer une boussole numérique. Le produit final consistait à obtenir une valeur entière normalisée qui nous donnait le nombre de degrés par rapport au Nord. Ainsi, si nous étions debout avec la plaque d' | ||
+ | |||
+ | Ce mois-ci, nous allons utiliser un anneau NeoPixel de 24 pixels. | ||
+ | |||
+ | Comme il y a 360 degrés dans notre cercle et que nous avons 24 LEDs, cela signifie que chacune de nos LEDs représente 15 degrés. Ainsi, si la LED [0] représente le Nord, l'Est serait alors sur la LED [6], le Sud sur la LED [12] et l' | ||
+ | |||
**The basic algorithm (in pseudo code) is something like shown above. | **The basic algorithm (in pseudo code) is something like shown above. | ||
Ligne 30: | Ligne 39: | ||
brightness = 0.1** | brightness = 0.1** | ||
+ | |||
+ | L' | ||
+ | |||
+ | Nous devrons ajouter l' | ||
+ | |||
+ | Remarquez également qu'il y a une connexion de masse entre l' | ||
+ | |||
+ | Ce mois-ci, nous allons créer un programme de test qui vérifiera la logique que nous utiliserons pour intégrer le cap du LSM303 à l' | ||
+ | |||
+ | Bien sûr, nous devons commencer par les importations. Nous allons également créer certaines variables qui seront nécessaires pour l' | ||
+ | |||
+ | import array, time | ||
+ | |||
+ | from machine import Pin | ||
+ | |||
+ | import rp2 | ||
+ | |||
+ | # Configurer le nombre de LEDs du WS2812, les broches et la luminosité. | ||
+ | |||
+ | NUM_LEDS = 24 | ||
+ | |||
+ | PIN_NUM = 16 | ||
+ | |||
+ | brightness = 0.1 | ||
+ | |||
**Now we need to create the driver. We will embed this (right) into our program. | **Now we need to create the driver. We will embed this (right) into our program. | ||
Ligne 48: | Ligne 82: | ||
Now (next page, top right) we can create a few support functions that we will need to make our life easier.** | Now (next page, top right) we can create a few support functions that we will need to make our life easier.** | ||
+ | |||
+ | Maintenant, nous devons créer le pilote. Nous allons l' | ||
+ | |||
+ | Rappelez-vous que nous avons défini quel NeoPixel, et sa couleur, en utilisant la fonction pixels_set(), | ||
+ | |||
+ | Nous définissons maintenant quelques constantes qui fournissent les valeurs RVB pour certaines couleurs prédéfinies. | ||
+ | |||
+ | BLACK = (0, 0, 0) | ||
+ | RED = (255, 0, 0) | ||
+ | YELLOW = (255, 150, 0) | ||
+ | GREEN = (0, 255, 0) | ||
+ | CYAN = (0, 255, 255) | ||
+ | |||
+ | BLUE = (0, 0, 255) | ||
+ | PURPLE = (180, 0, 255) | ||
+ | WHITE = (255, 255, 255) | ||
+ | |||
+ | Maintenant (page suivante, en haut à droite), nous pouvons créer quelques fonctions de soutien dont nous aurons besoin pour nous faciliter la vie. | ||
+ | |||
**We will use the Red color to mark North (LED[0]) and Blue to mark East, South and West. When we get to it, the color that marks the heading will be in Green (shown bottom left). | **We will use the Red color to mark North (LED[0]) and Blue to mark East, South and West. When we get to it, the color that marks the heading will be in Green (shown bottom left). | ||
Ligne 56: | Ligne 109: | ||
Now the real worker function is set_heading(). This function (shown middle right) embodies the logic from the pseudo code we created earlier.** | Now the real worker function is set_heading(). This function (shown middle right) embodies the logic from the pseudo code we created earlier.** | ||
+ | |||
+ | Nous utiliserons la couleur Rouge pour marquer le Nord (LED[0]) et le Bleu pour marquer l'Est, le Sud et l' | ||
+ | |||
+ | La fonction turn_off_all() met simplement tous les pixels de l' | ||
+ | |||
+ | Nous avons placé les marqueurs (qui devraient rester allumés à moins que le cap ne soit l'une de ces directions) du Nord, du Sud, de l'Est et de l' | ||
+ | |||
+ | Maintenant, la véritable fonction de travail est set_heading(). Cette fonction (illustrée au milieu à droite) incarne la logique du pseudo-code que nous avons créé plus tôt. | ||
+ | |||
**Finally, we create the logic to control everything (shown bottom right). To simulate moving around in a circle, we use a for loop, stepping from 0 to 361, and pass that value into our set_heading() function to light the correct LED. Then we reverse the for loop to simulate moving in an anti-clockwise circle. | **Finally, we create the logic to control everything (shown bottom right). To simulate moving around in a circle, we use a for loop, stepping from 0 to 361, and pass that value into our set_heading() function to light the correct LED. Then we reverse the for loop to simulate moving in an anti-clockwise circle. | ||
Ligne 66: | Ligne 128: | ||
Until next time, as always; stay safe, healthy, positive and creative!** | Until next time, as always; stay safe, healthy, positive and creative!** | ||
+ | |||
+ | Enfin, nous créons la logique pour tout contrôler (en bas à droite). Pour simuler un déplacement en cercle, nous utilisons une boucle for, allant de 0 à 361, et nous passons cette valeur dans notre fonction set_heading() pour allumer la bonne LED. Puis nous inversons la boucle for pour simuler un déplacement en cercle dans le sens inverse des aiguilles d'une montre. | ||
+ | |||
+ | Enregistrez ce programme sous CompassDisplay1.py. Lorsque vous l' | ||
+ | |||
+ | Vous pouvez trouver le code du programme sur mon dépôt à https:// | ||
+ | |||
+ | La prochaine fois, nous ajouterons le code qui supporte le LSM303 pour finaliser notre projet. | ||
+ | |||
+ | Jusqu' | ||
+ |
issue181/micro-ci.1653890507.txt.gz · Dernière modification : 2022/05/30 08:01 de d52fr