IMA4 2017/2018 P18 : Différence entre versions

De Wiki de Projets IMA
(Semaine 4)
 
(205 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-MandalaElectronique-iframe.html" />
 
__TOC__
 
__TOC__
 
<br style="clear: both;"/>
 
<br style="clear: both;"/>
Ligne 23 : Ligne 24 :
 
==Objectifs==
 
==Objectifs==
  
L'objectif est de réaliser une figure de mandala électronique.
+
L'objectif est de réaliser un mandala électronique.
  
 
=Analyse du projet=
 
=Analyse du projet=
  
==Positionnement par rapport à l'existant==
+
==Analyse du premier concurrent==
[[Fichier:lled1.jpg]]
 
  
Décoration graphique Mandala conçue avec des LEDs
+
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]
  
==Analyse du premier concurrent==
+
Un premier concurrent pourrait être ce kit électronique de sapin de noël avec 16 LEDs clignotantes. Par rapport à notre mandala ce kit comporte peu de LEDs et ne réalise qu'une seule animation sans interaction avec les visiteurs.
[[Fichier:arbe2.png]]
 
  
KIT ELECTRONIQUE SAPIN DE NOEL 3D AVEC 16 LED CLIGNOTANTES ROUGES A MONTER
+
<br style="clear: both;" />
  
 
==Analyse du second concurrent==
 
==Analyse du second concurrent==
[[Fichier:xiaojingling1.png]]
 
  
Tableau lumineux pour décoration de chambre d'enfant 'Fée papillon' peint à l'acrylique, découpé sur une toile en coton sur chassis de dimensions 50cm x 50xm.  
+
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]
 +
 
 +
Un second concurrent plus en rapport avec l'apparence de notre mandala est un tableau lumineux pour décoration de chambre d'enfant. Il s'agit d'une peinture avec un éclairage par LEDs. Là encore moins de LEDs et d'interaction qu'avec notre mandala.
  
Une petite fée aux ailes de papillon est illuminée dans un décor féérique et étoilé lorsque les LED sont allumées. Celles-ci sont des ampoules LED alimentées par des piles (fournies, 3x AA).
+
<br style="clear: both;" />
  
 
==Originalité de notre mandala==
 
==Originalité de notre mandala==
  
Plus de LEDs (environ 200), plus de groupes de LEDS, LEDS commandées en luminosité, animations pouvant varier avec un capteur.
+
L'originalité de notre mandala, par rapport aux objets décoratifs déjà existants, est qu'il comportant un grand nombre de LEDs (environ 200), qu'il intègre un micro-contrôleur permettant des animations variées (contrôle de la luminosité des LEDs) et qu'enfin le mandala est interactif grâce à un détecteur de gestes.
  
 
==Scénario d'usage du produit ou du concept envisagé==
 
==Scénario d'usage du produit ou du concept envisagé==
  
 +
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.
  
Pratiquement tout, autour de nous, est circulaire ou MANDALA. L'atome, la terre, l'univers sont des MANDALAS. Notre oeil, MANDALA lui-même, nous fait depuis toujours percevoir les choses de façon circulaire et porte notre regard en un point central. Dans la vie quotidienne ,nous pouvons l'utilisé pour décorer.Le principal avantage du Mandala est qu’il permet de se recentrer, de revenir au moment présent, de réduire le stress.
+
Le visiteur est tout d'abord attiré par l'objet artistique, en effet quand il entre dans la pièce, le mandala apparaît comme une peinture sur bois. Au second regard le circuit central pique la curiosité du visiteur. En s'approchant le visiteur déclenche une animation lumineuse. Surpris, il fait un mouvement involontaire qui déclenche un autre type d'animation. Le visiteur teste alors d'autres gestes pour rentrer en interaction avec le mandala.  
Un mandala brillant est plus beux et attirer l'attention des gens.C'est une bonne decoration pour la maison,le bar ,etc.
 
 
 
  
Les peintures de Mandala basées sur la projection psychologique, il y a beaucoup de genres d'applications.
+
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.
Par la voie symbolique, on peut exposer le conflit inconscient de l'artiste: avec la fonction intégrante unique du mandala, les contradictions internes peuvent être intégrées et l'harmonie interne et la stabilité peuvent être obtenues.
 
  
 
==Réponse à la question difficile==
 
==Réponse à la question difficile==
1.Combien de LEDs ? Combien de groupes de LEDS ? Lesquels ?
 
Fait un dessin de type mandala en bois par gouache.Des LEDs dissiminés sur l'ensemble du dessin.
 
Voici les nombres de LEDs qu'on a besoin.
 
  
192 LEDs en total, 24 groupe en total
+
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.
  
32 LEDs rouges (4 groupe de LEDs,chaque groupe a 4 lignes parallele de 2 LEDs en serie)
+
===Première question===
 +
<b>Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?</b>
  
32 LEDs jaunes (4 groupe de LEDs,chaque groupe a 4 lignes parallele de 2 LEDs en serie)
+
Nous avons fait une première esquisse de notre mandala :
  
48 LEDs bleus (6 groupe de LEDs,chaque groupe a 4 lignes parallele de 2 LEDs en serie)
+
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]
  
48 LEDs oranges (6 groupe de LEDs,chaque groupe a 4 lignes parallele de 2 LEDs en serie)
+
Au vu de ce premier dessin, nous avons décidé de rajouter encore des LEDs. Nous partons sur 6 groupes de LEDs pour un total de 256 LEDs :
 +
* un premier cercle de 32 LEDs oranges ;
 +
* un deuxième cercle de 32 LEDs jaunes ;
 +
* un troisième cercle de 32 LEDs bleues ;
 +
* un quatrième cercle de 64 LEDs jaunes ;
 +
* un cinqième cercle de 64 LEDs oranges ;
 +
* enfin un dernier cercle de 32 LEDs oranges.
  
32 LEDs jaunes (4 groupe de LEDs,chaque groupe a 4 lignes parallele de 2 LEDs en serie)
+
===Seconde question===
 +
<b>Le mandala sera alimenté de quelle façon pour quelle autonomie ?</b>
  
2.Quelle alimentation pour quelle autonomie ?
+
Un rapide calcul de la consommation des LEDs toutes allumées donne un total de 20mA par 256 LEDs soit près de 4A. Même pour une autonomie de 24h, il faudrait une batterie trop importante. Les LEDs ne doivent donc être allumées que lorsqu'un visiteur est présent et les animations doivent éviter les
 
+
tableaux avec toutes les LEDs allumées à pleine puissance. En partant sur l'équivalent de deux LEDs allumées à pleine puissance tout le temps et sur une consommation du circuit d'environ 40mA nous obtenons une consommation moyenne d'environ 100mA. Avec une alimentation par 8 piles rechargeables AA de 2600MAh nous avons une autonomie d'environ un jour. Il faut donc prévoir que la carte électronique puisse entrer dans un mode d'économie d'énergie ou plus simplement un interrupteur pour éviter de décharger les piles.
(80*24+40)*24 = 47040 mAh
 
 
 
Solution:
 
eteindre les LEDs quand personne me passe.Realiser des animation avec les LEDs,permet aussi les animatiobs plus sthetique et une consommation moindre.Ne pas chercher a allumer toutes les LEDs en meme temps pendant une longue periode.
 
  
 
==Extension de fonction==
 
==Extension de fonction==
Ligne 92 : Ligne 91 :
 
L'objet final sera constitué des composants ci-dessous.
 
L'objet final sera constitué des composants ci-dessous.
  
# un dessin de type mandala ;
+
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;
# un micro-contrôleur comme un Arduino Lily-Pad ;
+
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;
# un dispositif électronique à base de registres à décalage pour commander un grand nombre de LEDs ;
+
# des petites cartes dissiminés sur l'ensemble de la peinture pour porter les LEDs, les connexions avec la carte centrale se fait par des fils passant à l'arrière de la planche ;
# des LEDs dissiminés sur l'ensemble du dessin.
+
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;
 +
# pour la détection des gestes nous utiliserons une carte "ZX Distance et Gesture Sensor" de SparkFun.
  
 
==Choix techniques : matériel et logiciel==
 
==Choix techniques : matériel et logiciel==
 +
 +
Inkscape: pour dessiner un dessin mandala
 +
 +
Frizing: dessiner tous les circuits imprimés et PCBs
 +
 +
Ardunio: programmation informatique pour contrôler les LEDs
  
 
==Liste des tâches à effectuer==
 
==Liste des tâches à effectuer==
  
# Faire un dessin de mandala, trouver dans quelle matière.
+
Les tâches à effectuer pour ce projet sont :
# Réaliser le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs.
+
 
# Combiner le dessin mandala et les LEDs.
+
# faire un dessin précis du mandala avec la position des cartes électronique et celles des trous pour faire passer les câbles permettant de relier les cartes, il faut aussi ajouter les ouvertures permettant d'intégrer le détecteur de gestes ;
# Créer des animations pouvant être déclenchées par des capteurs.
+
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;
 +
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;
 +
# réaliser (souder) la carte électronique et la tester ;
 +
# concevoir les cartes électroniques porte LEDs et les réaliser ;
 +
# Programmer des animations pouvant être déclenchées par le capteur de gestes.
  
 
==Calendrier prévisionnel==
 
==Calendrier prévisionnel==
Ligne 112 : Ligne 122 :
  
 
{| class="wikitable"
 
{| class="wikitable"
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total
+
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !! Total
 
|-
 
|-
| Analyse du projet
+
| Dessin du mandala
 +
| 0
 +
| 4
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 4
 +
|-
 +
| Contrôle des LEDs
 +
| 0
 +
|
 +
| 4
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 4
 +
|-
 +
| Réalisation du circuit principal
 
| 0
 
| 0
 
|  
 
|  
 
|
 
|
 +
| 4
 +
| 4
 +
| 4
 
|
 
|
 
|
 
|
Ligne 127 : Ligne 176 :
 
|
 
|
 
|
 
|
 +
| 12
 +
|-
 +
| Réalisation des circuits porte-LEDs
 +
| 0
 +
|
 +
|
 +
|
 +
| 4
 +
| 4
 +
| 4
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 12
 +
|-
 +
| Réalisation du mandala
 +
| 0
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 4
 +
| 4
 +
| 4
 +
| 4
 +
| 6
 +
| 4
 +
| 4
 +
|
 +
| 30
 +
|-
 +
| Programmation des animations
 +
| 0
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 8
 +
| 8
 
|}
 
|}
  
 +
==Semaine 1==
 +
 +
Nous avons établi une première liste de matériel nécessaire pour le mandala.
 +
 +
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible :
 +
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.
 +
 +
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]
 +
 +
==Semaine 2==
 +
 +
L'encadrant en électronique a conseillé d'utiliser des circuits pilotes de LEDs pour gérer les LEDs. Nous avons préféré utiliser des contrôleurs TLC59711 et TLC5947 car ces circuits sont bien documents sur ce document [https://learn.adafruit.com/tlc5947-tlc59711-pwm-led-driver-breakout/downloads-and-links].
 +
 +
Pour savoir quel circuit et à combien d'exemplaires il faut utiliser, nous devons décider du voltage d'alimentation et en déduire le nombre de sorties dont nous avons besoin.
  
==Prologue==
+
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v.  
Pour réaliser ce projet,nous avons étudié le même projet l'année dernière.L'idée de l'année dernière est que utiliser le registre à décalage 74HC595 qui a un grand nombre de sortie numérique pour contrôler un grand nombre de LEDs.Mais le pile de 9v
 
utiliser en l'année dernière n'est pas disponible,donc nous avons choisi utiliser un nouveau façon.Notre conception est que utiliser le LED driver TCL5947 pour contrôler des LEDs.
 
  
==Semaine 1==
+
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v.  
1.Nous avons appris un logiciel pour dessiner des graphiques vectoriels et nous avons réussi à dessiner le mandala que nous avons deja conçu .
 
[[Media:Mandala Drawing.svg]]
 
  
2.Nous avons trouvé un bois pour placer le dessin mandala.
+
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :
 +
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;
 +
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;
 +
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires ;
 +
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;
 +
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;
 +
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.
  
3.Dans le cas le LED driver que nous avons choisi a un nombre de sorties de 24 et nous avons besoin 60 groupes de LEDs,donc 3 LEDs drivers TLC5947 sera suffisant pour nous.Le groupe de LEDs est comme le montre de tableau ci-dessous.
+
En définitive 72 sorties sont nécessaires. En choisissant des circuits TLC5947 à 24 sorties nous couvront les besoins avec 3 circuits et en laissant une marge pour ajouter des LEDs si nécessaire.
  
[[Fichier:LEDexcel.png|thumb|center|600px]]
+
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]
  
==Semaine 2==
+
Pour tester un circuit pilote de LEDs nous avons réalisé un montage avec une plaque d'essai, une pile de 9v et un circuit d'Adafruit à base de TLC59711 (un circuit très proche du TLC5947 mais avec seulement 12 sorties).
1.Nous avons étudié le façon pour faire des composants.D'abord,nous avons trouvé un composant IC qui est le plus similaire que TLC5947 et nous avons souhaité de le transformer en 33 broches.Nous avons utilisé inkscape pour dessiner le schéma et puis le conduit dans fritzing.Nous avons fini de faire le schéma de breadboard et le schéma de schématique à la fin.
 
  
Nouveau composant :
+
Nous avons connecté notre montage à un Arduino et nous avons programmé l'Arduino pour allumer les LEDs sur les différentes sorties alternativement. Le code est disponible : [[Media:2018-P18-TestLeds.ino.zip]]
* schéma de la vue "breadboard" : [[Fichier:Prefix0000 a1941e7c86a490de9f9642d78cd1ee33 12 breadboard1.svg]]
 
  
* schéma de la vue "schematic" : [[Fichier:Prefix0000 a1941e7c86a490de9f9642d78cd1ee33 9 schematic.svg]]
+
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.
  
2.Modifier le cahier des charges.
+
<br style="clear: both;" />
  
 
==Semaine 3==
 
==Semaine 3==
Nous avons utilisé un montage réalisé dans breadboard pour tester le TLC5947 contrôler des LEDs.Nous avons connecté le TCL5947 à Arduino et le programmer pour allumer des LEDs en differentes sorties alternativement.
 
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en 4 sorties.(Nous avons utilisé 4 sorties de TLC5947 et il y a 2 LEDs en série en chaque sorties)
 
Et ca marche.
 
  
Document Adafruit sur les pilotes de LEDs tlc59711 & tlc5947 : [https://learn.adafruit.com/tlc5947-tlc59711-pwm-led-driver-breakout/downloads-and-links]
+
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing.  
  
Code pour controler : [[Media:Test-1.ino.zip]]
+
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même.  
  
[[Fichier:LED2.png|thumb|center|300px]]
+
Nous avons étudié la façon pour créer de nouvelles empreintes.
 +
 
 +
D'abord, nous avons trouvé un composant avec une empreinte de type HTSSOP 28 broches que nous pouvons transformer en 32 broches. Nous avons utilisé inkscape pour dessiner les différentes vues et puis nous importons les dessins dans Fritzing.
 +
 
 +
Pour cette séance nous nous sommes occupés de la vue "plaque d'essai" et de la vue "schématique".
 +
 
 +
 
 +
*schéma de la vue "breadboard" : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]
 +
*schéma de la vue "schematic" : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]
  
 
==Semaine 4==
 
==Semaine 4==
*Nous avons continu à faire le composante et puis nous avons réalisé le schéma PCB du TLC5947.
 
  
*Nous avons modifier le cahier des charges.
+
Nous avons continué à réaliser l'empreinte pour un TLC5947. Voici le dessin pour la vue PCB : [[Fichier:2018 P18 TLC5947 PCB.png|thumb|400px|center]]
  
*Nous avons commencé à faire le circuit principale.
+
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]].  
  
* schéma de la vue "pcb" : [[Fichier:Tlc5947 pcb new big.png]]
+
Pour l'utiliser il faut renommer le fichier en <code>.fzpz</code> et l'importer dans la fenêtre "composants" de Fritzing.
 +
 
 +
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.
 +
 
 +
Voila la vue "plaque d'essai" de notre circuit principal :
 +
 
 +
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]
 +
 
 +
Le circuit avec les composants placés mais non routé :
 +
 
 +
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]
  
 
==Semaine 5==
 
==Semaine 5==
  
Travail restant à effectuer :
+
Le schématique du circuit principal :
* vérification des "Design Rules Check" sur le PCB version 7 ;
+
 
* vérification de la schématique du circuit ;
+
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]
* diminution de la taille du circuit ;
+
 
* ajouter de pastilles pour pouvoir utiliser les entrées/sorties libre de l'ATMega28p (par exemple pour connecter le ZX gesture par la suite) ;
+
Et le circuit finalement routé :
* création des PCB porte-LEDs avec contours à façon ;
+
 
* modifier le dessin du mandala pour ajouter les trous passe fils.
+
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]
 +
 
 +
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].
 +
 
 +
Après la conception et la validation des règles (écart entre les pistes, etc) nous avons demandé la fabrication de la carte. La carte a été réalisée par une entreprise extérieure pour obtenir un rendu propre avec un vernis. La couleur du vernis des différentes cartes a été choisie pour obtenir un résultat esthétique.
 +
 
 +
Une fois la carte réceptionnée, nous avons soudé les composants sur la carte. Plusieurs séances ont été nécessaires car nous avons soudé les composants des grandes parties de la carte en testant ces parties avant de continuer : partie micro-contrôleur (Atmega328p), partie alimentation, partie interface USB (FTDI), pilotes de LEDS (TLC5947). Il n’est pas facile de souder les composants comme l’Atmega328p et les TLC5947 qui on un grand nombre de pattes très fines.
 +
 
 +
==Semaine 6==
 +
 
 +
Les dessins pour la découpeuse laser ([[Media:2018_P18_Mandala_Decoupe.svg]], [[Media:2018_P18_Mandala_Decoupe_Anneau.svg]]) sont représentés ci-dessous.
 +
 
 +
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]
 +
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]
 +
 
 +
<br style="clear: both;" />
 +
 
 +
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]
 +
 
 +
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]
 +
 
 +
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]
 +
 
 +
 
 +
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]
 +
 
 +
==Semaine 7==
 +
 
 +
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.
 +
 
 +
[[Fichier:bois.jpg|thumb|400px|center]]
 +
 
 +
Et nous avons soudé des LEDs CMS aux PCBs.
 +
 
 +
[[Fichier:lesPCB.jpg|thumb|300px|center]]
 +
 
 +
==Semaine 8==
 +
 
 +
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.
 +
 
 +
[[Fichier:bois1.jpg|thumb|400px|center]]
 +
 
 +
Démonstration du bon fonctionnement du circuit principal.
 +
 
 +
[[Media:2018_P18_demo_TLC5947.mp4]]
 +
 
 +
 
 +
 
 +
==Semaine 9==
 +
 
 +
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.
 +
Dans des circonstances normales, la poignée est placée 10 à 25 cm au-dessus du capteur, et nous pouvons observer les informations de position renvoyées.
 +
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).
 +
 
 +
 
 +
[[Fichier:ZX_tset.jpg|thumb|400px|center]]
 +
 
 +
 
 +
 
 +
Pour la décoration du mandala, nous voulions peindre le mandala dans un style bouddhiste. Au début, nous avons utilisé de la gouache. Mais la peinture avait tendance à baver sur le contre-plaqué. Pour améliorer notre mandala, nous avons acheté des paillettes or pour couvrir la gouache  jaune. Nous avons aussi acheté des perles pour décorer les bords. Nous avons utilisé de la colle liquide pour coller les perles sur le bois. Vous pouvez voir le résultat sur la photo ci-dessous. Nous avons passé 2 semaines pour réaliser ce travail.
 +
 
 +
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]
 +
 
 +
==Semaine 10==
 +
 
 +
Pour connecter les cartes portes LEDs, le contrôleur de gestes “ZX gesture” avec la carte principale, nous avons passé des câbles au verso du mandala avec les trous que nous avions déjà percés et nous les avons soudé.
 +
 
 +
[[Fichier:connection_cables.jpg|thumb|400px|center]]
 +
 
 +
==Semaine 11 et 12==
 +
 
 +
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.
 +
 
 +
Et support du mandala est réalisé par une imprimante 3D en utilisant le logiciel Freecad pour la conception. Le support permet de fixer les piles et de supporter le mandala. La première version a été modifiée pour ajouter les fentes pour le circuit de détection de gestes “ZX gesture” et ses câbles.
 +
 
 +
[[Fichier:support_mandala2.jpg|thumb|400px|left]]
 +
[[Fichier:support-mandala3.jpg|thumb|400px|right]]
 +
 
 +
<br style="clear: both;" />
 +
 
 +
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]
 +
 
 +
==Semaine 13==
 +
pour trouver la disposition des porte-LEDs par rapport aux sorties des pilotes de LED, nous avons écrit un programme qui active les sorties une à une dans  l'ordre de la première sortie jusqu’à la dernière.
 +
Voici un extrait du code. 
 +
 
 +
#define NB_DRIVERS 3
 +
#define DLED_CHANNELS 24
 +
#define NB_GROUPES (NB_DRIVERS*DLED_CHANNELS)
 +
 
 +
unsigned int groupes[NB_GROUPES];
 +
int n=0;
 +
while(1){
 +
  printf("Channel #%d on\n",n);
 +
  for(int i=0;i<NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;
 +
  set_LED_Drivers(groupes,NB_DRIVERS);
 +
  n++; if(n>=NB_DRIVERS*DLED_CHANNELS) n=0;
 +
  _delay_ms(WAIT_DELAY);
 +
  }
 +
 
 +
 
 +
Et nous avons trouvé le position des LEDs.
 +
 
 +
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]
 +
 
 +
 
 +
Le ZX gesture est capable de détecter trois mouvements : un geste vers le haut, vers la droite ou vers la gauche. Comme le capteur est utilisé verticalement le geste vers le haut est plutôt un geste d’éloignement. Le capteur est installé sur le bois du mandala. Ses broches CLM et DR sont connectées, respectivement, sur les ports PD3 et PD4 de l’ATMega328p.
 +
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.
 +
Lorsque le geste sur le coté droit est détecté (geste=2 sur la photo), le temps d’attente dans les animations est diminué ce qui accélère la vitesse de l’animation.
 +
Lorsque le geste sur le coté gauche est détecté (geste=1 sur la photo), le temps d’attente dans les animations est augmenté ce qui diminue la vitesse de l’animation.
 +
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.
 +
Pour gérer le ZX Gesture nous utilisons une bibliothèque C de gestion du bus I2C, voici la fonction permettant de récupérer un registre du ZX Gesture (par exemple la position se récupère dans un de ces registres) :
 +
 
 +
int zx_getreg(int reg){
 +
int ret;
 +
i2c_start_wait(ZX_ADDR|I2C_WRITE);
 +
i2c_write(reg);
 +
i2c_rep_start(ZX_ADDR|I2C_READ);
 +
ret=i2c_readNak();
 +
i2c_stop();
 +
return ret;
 +
}
 +
 
 +
[[Fichier:gestecode.jpg|thumb|400px|center]]
 +
 
 +
==Semaine 14==
 +
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.
 +
Nous avons conçu trois animations.
 +
 
 +
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.
 +
[[Media:type1.mp4]]
 +
 
 +
Pour la seconde, les portes-LEDs s'allument un à un dans le sens antihoraire et l'ordre du cercle intérieur vers le cercle extérieur;
 +
[[Media:type2.mp4]]
 +
 
 +
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.
 +
[[Media:type3.mp4]]
 +
 
 +
Nous allons montrer comment sont définies ces animations dans le code.
 +
La première animation est constituée de 6 sous-animations. Chacune fait varier la luminosité d’un groupe circulaire de portes-LEDs. L’augmentation de la luminosité se fait en 500ms, la diminution en 500ms et la sous-animation se met en pause pendant 2s. En lançant les sous-animations tous les 500ms, on obtient un effet de propagation du centre vers l’extérieur.
 +
Les structures définissant cette animations sont données juste aprés. Le tableau a1 comporte les 6 sous-animations commandées par les paramètres v1 à v6.
 +
 
 +
/* Animations1 */
 +
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 +
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 +
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};
 +
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 +
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 +
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 +
  animation a1[]={
 +
  {0,60000,groupe1,&v1,variation_groupes},
 +
  {500,60000,groupe2,&v2,variation_groupes},
 +
  {1000,60000,groupe3,&v3,variation_groupes},
 +
  {1500,60000,groupe4,&v4,variation_groupes},
 +
  {2000,60000,groupe5,&v5,variation_groupes},
 +
  {2500,60000,groupe6,&v6,variation_groupes},
 +
  {-1,-1,NULL,NULL,NULL}
 +
  };
 +
 
 +
Pour la troisième animation, nous voulions que toutes les LEDs soient allumées en même temps. Nous avons mis le temps de croissance à 500, le temps de décroissance à 500 sans pause. Comme les LEDs bleues sont toujours plus lumineuses que les autres LEDs, on les limite à une luminosité de 256. Le maximum de luminosité pour les autres LEDs est de 1024 (pour un maximum de 4096).
 +
Voici les paramètres des sous-animations de cette troisième animation.
 +
 
 +
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
 +
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
 +
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};
 +
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
 +
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
 +
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
 +
 
 +
Nous avons mis 0 ms pour le temps de départ de l’animation et 60000 ms pour le temps d’arrêt de l’animation.
 +
 
 +
animation a3[]={
 +
  {0,60000,groupe1,&v21,variation_groupes},
 +
  {0,60000,groupe2,&v22,variation_groupes},
 +
  {0,60000,groupe3,&v23,variation_groupes},
 +
  {0,60000,groupe4,&v24,variation_groupes},
 +
  {0,60000,groupe5,&v25,variation_groupes},
 +
  {0,60000,groupe6,&v26,variation_groupes},
 +
  {-1,-1,NULL,NULL,NULL}
 +
  };
 +
 
 +
Ces structures sont données en paramètre d’une fonction qui implante l’animation.
  
 
=Documents Rendus=
 
=Documents Rendus=
[[Media:Tlc5987.zip]]
+
[[Media:Rapportp18.odt]]
[[Media:tlc5987_v2.zip]]
+
 
[[Media:MandalaPCBv2.zip]]
+
[[Media:led_code.zip]]
[[Media:MandalaPCBv4.zip]]
 
[[Media:MandalaPCBv7.zip]]
 

Version actuelle datée du 15 juin 2018 à 21:43


Vidéo HD


Présentation générale

Description

Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant:

  1. disque, cercle, sphère ;
  2. toute figure géométrique apparentée au cercle ;
  3. structure, forme d'organisation ;
  4. dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.

Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales.

Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance. Dans le bouddhisme, il est utilisé surtout pour la méditation. Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.

Objectifs

L'objectif est de réaliser un mandala électronique.

Analyse du projet

Analyse du premier concurrent

2018 P18 kit noel.png

Un premier concurrent pourrait être ce kit électronique de sapin de noël avec 16 LEDs clignotantes. Par rapport à notre mandala ce kit comporte peu de LEDs et ne réalise qu'une seule animation sans interaction avec les visiteurs.


Analyse du second concurrent

2018 P18 Xiaojingling1.png

Un second concurrent plus en rapport avec l'apparence de notre mandala est un tableau lumineux pour décoration de chambre d'enfant. Il s'agit d'une peinture avec un éclairage par LEDs. Là encore moins de LEDs et d'interaction qu'avec notre mandala.


Originalité de notre mandala

L'originalité de notre mandala, par rapport aux objets décoratifs déjà existants, est qu'il comportant un grand nombre de LEDs (environ 200), qu'il intègre un micro-contrôleur permettant des animations variées (contrôle de la luminosité des LEDs) et qu'enfin le mandala est interactif grâce à un détecteur de gestes.

Scénario d'usage du produit ou du concept envisagé

Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.

Le visiteur est tout d'abord attiré par l'objet artistique, en effet quand il entre dans la pièce, le mandala apparaît comme une peinture sur bois. Au second regard le circuit central pique la curiosité du visiteur. En s'approchant le visiteur déclenche une animation lumineuse. Surpris, il fait un mouvement involontaire qui déclenche un autre type d'animation. Le visiteur teste alors d'autres gestes pour rentrer en interaction avec le mandala.

Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.

Réponse à la question difficile

Durant la présentation de notre projet les deux questions suivantes nous ont été posées.

Première question

Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?

Nous avons fait une première esquisse de notre mandala :

2018 P18 mandala brouillon.jpg

Au vu de ce premier dessin, nous avons décidé de rajouter encore des LEDs. Nous partons sur 6 groupes de LEDs pour un total de 256 LEDs :

  • un premier cercle de 32 LEDs oranges ;
  • un deuxième cercle de 32 LEDs jaunes ;
  • un troisième cercle de 32 LEDs bleues ;
  • un quatrième cercle de 64 LEDs jaunes ;
  • un cinqième cercle de 64 LEDs oranges ;
  • enfin un dernier cercle de 32 LEDs oranges.

Seconde question

Le mandala sera alimenté de quelle façon pour quelle autonomie ?

Un rapide calcul de la consommation des LEDs toutes allumées donne un total de 20mA par 256 LEDs soit près de 4A. Même pour une autonomie de 24h, il faudrait une batterie trop importante. Les LEDs ne doivent donc être allumées que lorsqu'un visiteur est présent et les animations doivent éviter les tableaux avec toutes les LEDs allumées à pleine puissance. En partant sur l'équivalent de deux LEDs allumées à pleine puissance tout le temps et sur une consommation du circuit d'environ 40mA nous obtenons une consommation moyenne d'environ 100mA. Avec une alimentation par 8 piles rechargeables AA de 2600MAh nous avons une autonomie d'environ un jour. Il faut donc prévoir que la carte électronique puisse entrer dans un mode d'économie d'énergie ou plus simplement un interrupteur pour éviter de décharger les piles.

Extension de fonction

Utiliser avec ZX Distance et Gesture Sensor

Préparation du projet

Cahier des charges

L'objet final sera constitué des composants ci-dessous.

  1. une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;
  2. une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;
  3. des petites cartes dissiminés sur l'ensemble de la peinture pour porter les LEDs, les connexions avec la carte centrale se fait par des fils passant à l'arrière de la planche ;
  4. les boitiers de piles sont aussi à fixer à l'arrière du mandala ;
  5. pour la détection des gestes nous utiliserons une carte "ZX Distance et Gesture Sensor" de SparkFun.

Choix techniques : matériel et logiciel

Inkscape: pour dessiner un dessin mandala

Frizing: dessiner tous les circuits imprimés et PCBs

Ardunio: programmation informatique pour contrôler les LEDs

Liste des tâches à effectuer

Les tâches à effectuer pour ce projet sont :

  1. faire un dessin précis du mandala avec la position des cartes électronique et celles des trous pour faire passer les câbles permettant de relier les cartes, il faut aussi ajouter les ouvertures permettant d'intégrer le détecteur de gestes ;
  2. choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;
  3. concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;
  4. réaliser (souder) la carte électronique et la tester ;
  5. concevoir les cartes électroniques porte LEDs et les réaliser ;
  6. Programmer des animations pouvant être déclenchées par le capteur de gestes.

Calendrier prévisionnel

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures S11 Heures S12 Heures S13 Heures S14 Total
Dessin du mandala 0 4 4
Contrôle des LEDs 0 4 4
Réalisation du circuit principal 0 4 4 4 12
Réalisation des circuits porte-LEDs 0 4 4 4 12
Réalisation du mandala 0 4 4 4 4 6 4 4 30
Programmation des animations 0 8 8

Semaine 1

Nous avons établi une première liste de matériel nécessaire pour le mandala.

Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : Media:2018_P18_Mandala Drawing.svg, l'image ci-dessous en donne un aperçu.

2018 P18 Mandala Drawing.png

Semaine 2

L'encadrant en électronique a conseillé d'utiliser des circuits pilotes de LEDs pour gérer les LEDs. Nous avons préféré utiliser des contrôleurs TLC59711 et TLC5947 car ces circuits sont bien documents sur ce document [1].

Pour savoir quel circuit et à combien d'exemplaires il faut utiliser, nous devons décider du voltage d'alimentation et en déduire le nombre de sorties dont nous avons besoin.

Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v.

Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v.

Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :

  • un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;
  • un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;
  • un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;
  • un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;
  • un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;
  • enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.

En définitive 72 sorties sont nécessaires. En choisissant des circuits TLC5947 à 24 sorties nous couvront les besoins avec 3 circuits et en laissant une marge pour ajouter des LEDs si nécessaire.

2018-P18-Montage-TLC59771.png

Pour tester un circuit pilote de LEDs nous avons réalisé un montage avec une plaque d'essai, une pile de 9v et un circuit d'Adafruit à base de TLC59711 (un circuit très proche du TLC5947 mais avec seulement 12 sorties).

Nous avons connecté notre montage à un Arduino et nous avons programmé l'Arduino pour allumer les LEDs sur les différentes sorties alternativement. Le code est disponible : Media:2018-P18-TestLeds.ino.zip

Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.


Semaine 3

Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing.

Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même.

Nous avons étudié la façon pour créer de nouvelles empreintes.

D'abord, nous avons trouvé un composant avec une empreinte de type HTSSOP 28 broches que nous pouvons transformer en 32 broches. Nous avons utilisé inkscape pour dessiner les différentes vues et puis nous importons les dessins dans Fritzing.

Pour cette séance nous nous sommes occupés de la vue "plaque d'essai" et de la vue "schématique".


  • schéma de la vue "breadboard" :
    2018 P18 TLC5947 breadboard.png
  • schéma de la vue "schematic" :
    2018 P18 TLC5947 schematic.png

Semaine 4

Nous avons continué à réaliser l'empreinte pour un TLC5947. Voici le dessin pour la vue PCB :
2018 P18 TLC5947 PCB.png

Le fichier du nouveau composant est disponible : Media:2018_P18_TLC5947_v3.zip.

Pour l'utiliser il faut renommer le fichier en .fzpz et l'importer dans la fenêtre "composants" de Fritzing.

Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.

Voila la vue "plaque d'essai" de notre circuit principal :

2018 P18 CP breadboard.png

Le circuit avec les composants placés mais non routé :

2018 P18 PCB CP nonroute.png

Semaine 5

Le schématique du circuit principal :

2018 P18 CP schematic.png

Et le circuit finalement routé :

2018 P18 CP PCB.png

Le fichier Fritzing du circuit principal est disponible : Media:2018 P18 CP.zip.

Après la conception et la validation des règles (écart entre les pistes, etc) nous avons demandé la fabrication de la carte. La carte a été réalisée par une entreprise extérieure pour obtenir un rendu propre avec un vernis. La couleur du vernis des différentes cartes a été choisie pour obtenir un résultat esthétique.

Une fois la carte réceptionnée, nous avons soudé les composants sur la carte. Plusieurs séances ont été nécessaires car nous avons soudé les composants des grandes parties de la carte en testant ces parties avant de continuer : partie micro-contrôleur (Atmega328p), partie alimentation, partie interface USB (FTDI), pilotes de LEDS (TLC5947). Il n’est pas facile de souder les composants comme l’Atmega328p et les TLC5947 qui on un grand nombre de pattes très fines.

Semaine 6

Les dessins pour la découpeuse laser (Media:2018_P18_Mandala_Decoupe.svg, Media:2018_P18_Mandala_Decoupe_Anneau.svg) sont représentés ci-dessous.

2018 P18 Mandala Decoupe.png
2018 P18 Mandala Decoupe Anneau.png


Circuit porte 2 LEDs : 2018 P18 Porte2LEDs PCB.png

Circuit porte 4 LEDs : 2018 P18 Porte4LEDs PCB.png

Circuit lune porte 4 LEDs : 2018 P18 Lune.png


Les fichiers Fritzing sont disponibles : Media:2018_P18_Porte2LEDs.zip Media:2018 P18 Porte4LEDs.zip Media:2018_P18_Lune.zip

Semaine 7

Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.

Bois.jpg

Et nous avons soudé des LEDs CMS aux PCBs.

LesPCB.jpg

Semaine 8

Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.

Bois1.jpg

Démonstration du bon fonctionnement du circuit principal.

Media:2018_P18_demo_TLC5947.mp4


Semaine 9

Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR. Dans des circonstances normales, la poignée est placée 10 à 25 cm au-dessus du capteur, et nous pouvons observer les informations de position renvoyées. Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).


ZX tset.jpg


Pour la décoration du mandala, nous voulions peindre le mandala dans un style bouddhiste. Au début, nous avons utilisé de la gouache. Mais la peinture avait tendance à baver sur le contre-plaqué. Pour améliorer notre mandala, nous avons acheté des paillettes or pour couvrir la gouache jaune. Nous avons aussi acheté des perles pour décorer les bords. Nous avons utilisé de la colle liquide pour coller les perles sur le bois. Vous pouvez voir le résultat sur la photo ci-dessous. Nous avons passé 2 semaines pour réaliser ce travail.

Mandala decoration.jpg

Semaine 10

Pour connecter les cartes portes LEDs, le contrôleur de gestes “ZX gesture” avec la carte principale, nous avons passé des câbles au verso du mandala avec les trous que nous avions déjà percés et nous les avons soudé.

Connection cables.jpg

Semaine 11 et 12

Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.

Et support du mandala est réalisé par une imprimante 3D en utilisant le logiciel Freecad pour la conception. Le support permet de fixer les piles et de supporter le mandala. La première version a été modifiée pour ajouter les fentes pour le circuit de détection de gestes “ZX gesture” et ses câbles.

Support mandala2.jpg
Support-mandala3.jpg


Le support du Mandala est disponible: Media:Support_mandala.zip

Semaine 13

pour trouver la disposition des porte-LEDs par rapport aux sorties des pilotes de LED, nous avons écrit un programme qui active les sorties une à une dans l'ordre de la première sortie jusqu’à la dernière. Voici un extrait du code.

#define	NB_DRIVERS		3
#define	DLED_CHANNELS	24
#define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)
unsigned int groupes[NB_GROUPES];
int n=0;
while(1){
 printf("Channel #%d on\n",n);
 for(int i=0;i<NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;
 set_LED_Drivers(groupes,NB_DRIVERS);
 n++; if(n>=NB_DRIVERS*DLED_CHANNELS) n=0;
 _delay_ms(WAIT_DELAY);
 }


Et nous avons trouvé le position des LEDs.

LEDs Position.jpg


Le ZX gesture est capable de détecter trois mouvements : un geste vers le haut, vers la droite ou vers la gauche. Comme le capteur est utilisé verticalement le geste vers le haut est plutôt un geste d’éloignement. Le capteur est installé sur le bois du mandala. Ses broches CLM et DR sont connectées, respectivement, sur les ports PD3 et PD4 de l’ATMega328p. Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement. Lorsque le geste sur le coté droit est détecté (geste=2 sur la photo), le temps d’attente dans les animations est diminué ce qui accélère la vitesse de l’animation. Lorsque le geste sur le coté gauche est détecté (geste=1 sur la photo), le temps d’attente dans les animations est augmenté ce qui diminue la vitesse de l’animation. Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change. Pour gérer le ZX Gesture nous utilisons une bibliothèque C de gestion du bus I2C, voici la fonction permettant de récupérer un registre du ZX Gesture (par exemple la position se récupère dans un de ces registres) :

int zx_getreg(int reg){
int ret;
i2c_start_wait(ZX_ADDR|I2C_WRITE);
i2c_write(reg);
i2c_rep_start(ZX_ADDR|I2C_READ);
ret=i2c_readNak();
i2c_stop();
return ret;
}
Gestecode.jpg

Semaine 14

Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX Gesture est utilisé. Nous avons conçu trois animations.

Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur. Media:type1.mp4

Pour la seconde, les portes-LEDs s'allument un à un dans le sens antihoraire et l'ordre du cercle intérieur vers le cercle extérieur; Media:type2.mp4

Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie. Media:type3.mp4

Nous allons montrer comment sont définies ces animations dans le code. La première animation est constituée de 6 sous-animations. Chacune fait varier la luminosité d’un groupe circulaire de portes-LEDs. L’augmentation de la luminosité se fait en 500ms, la diminution en 500ms et la sous-animation se met en pause pendant 2s. En lançant les sous-animations tous les 500ms, on obtient un effet de propagation du centre vers l’extérieur. Les structures définissant cette animations sont données juste aprés. Le tableau a1 comporte les 6 sous-animations commandées par les paramètres v1 à v6.

/* Animations1 */
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};
 animation a1[]={
 {0,60000,groupe1,&v1,variation_groupes},
 {500,60000,groupe2,&v2,variation_groupes},
 {1000,60000,groupe3,&v3,variation_groupes},
 {1500,60000,groupe4,&v4,variation_groupes},
 {2000,60000,groupe5,&v5,variation_groupes},
 {2500,60000,groupe6,&v6,variation_groupes},
 {-1,-1,NULL,NULL,NULL}
 };

Pour la troisième animation, nous voulions que toutes les LEDs soient allumées en même temps. Nous avons mis le temps de croissance à 500, le temps de décroissance à 500 sans pause. Comme les LEDs bleues sont toujours plus lumineuses que les autres LEDs, on les limite à une luminosité de 256. Le maximum de luminosité pour les autres LEDs est de 1024 (pour un maximum de 4096). Voici les paramètres des sous-animations de cette troisième animation.

variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};

Nous avons mis 0 ms pour le temps de départ de l’animation et 60000 ms pour le temps d’arrêt de l’animation.

animation a3[]={
 {0,60000,groupe1,&v21,variation_groupes}, 
 {0,60000,groupe2,&v22,variation_groupes},
 {0,60000,groupe3,&v23,variation_groupes},
 {0,60000,groupe4,&v24,variation_groupes},
 {0,60000,groupe5,&v25,variation_groupes},
 {0,60000,groupe6,&v26,variation_groupes},
 {-1,-1,NULL,NULL,NULL}
 };

Ces structures sont données en paramètre d’une fonction qui implante l’animation.

Documents Rendus

Media:Rapportp18.odt

Media:led_code.zip