<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lzhang2</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lzhang2"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Lzhang2"/>
		<updated>2026-05-13T18:54:31Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57915</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57915"/>
				<updated>2018-05-18T18:30:43Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.&lt;br /&gt;
Nous avons conçu trois animations.&lt;br /&gt;
&lt;br /&gt;
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous allons montrer comment sont définies ces animations dans le code.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
  animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Voici les paramètres des sous-animations de cette troisième animation.&lt;br /&gt;
&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Ces structures sont données en paramètre d’une fonction qui implante l’animation.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Media:Rapportp18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapportp18.odt&amp;diff=57914</id>
		<title>Fichier:Rapportp18.odt</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapportp18.odt&amp;diff=57914"/>
				<updated>2018-05-18T18:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : Lzhang2 a téléversé une nouvelle version de Fichier:Rapportp18.odt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapportp18.odt&amp;diff=57913</id>
		<title>Fichier:Rapportp18.odt</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapportp18.odt&amp;diff=57913"/>
				<updated>2018-05-18T17:48:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57912</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57912"/>
				<updated>2018-05-18T17:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.&lt;br /&gt;
Nous avons conçu trois animations.&lt;br /&gt;
&lt;br /&gt;
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous allons montrer comment sont définies ces animations dans le code.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
  animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Voici les paramètres des sous-animations de cette troisième animation.&lt;br /&gt;
&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Ces structures sont données en paramètre d’une fonction qui implante l’animation.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapportp18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57911</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57911"/>
				<updated>2018-05-18T17:48:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.&lt;br /&gt;
Nous avons conçu trois animations.&lt;br /&gt;
&lt;br /&gt;
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous allons montrer comment sont définies ces animations dans le code.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
  animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Voici les paramètres des sous-animations de cette troisième animation.&lt;br /&gt;
&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Ces structures sont données en paramètre d’une fonction qui implante l’animation.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:RapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57910</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57910"/>
				<updated>2018-05-18T17:43:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.&lt;br /&gt;
Nous avons conçu trois animations.&lt;br /&gt;
&lt;br /&gt;
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous allons montrer comment sont définies ces animations dans le code.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
  animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Voici les paramètres des sous-animations de cette troisième animation.&lt;br /&gt;
&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Ces structures sont données en paramètre d’une fonction qui implante l’animation.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57909</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57909"/>
				<updated>2018-05-18T17:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
Nous avons terminé le travail de programmation : trois animations sont programmées et le ZX  Gesture est utilisé.&lt;br /&gt;
Nous avons conçu trois animations.&lt;br /&gt;
Pour la première, les lumières sont allumées de l'intérieur vers l'extérieur.&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
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;&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
Pour la troisième, toutes les lumières sont allumées en même temps, leur luminosité varie.&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous allons montrer comment sont définies ces animations dans le code.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
  animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Voici les paramètres des sous-animations de cette troisième animation.&lt;br /&gt;
&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
Ces structures sont données en paramètre d’une fonction qui implante l’animation.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Gestecode.jpg&amp;diff=57908</id>
		<title>Fichier:Gestecode.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Gestecode.jpg&amp;diff=57908"/>
				<updated>2018-05-18T17:36:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57907</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57907"/>
				<updated>2018-05-18T17:34:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation.&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57906</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57906"/>
				<updated>2018-05-18T17:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Fichier:gestecode.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation,&lt;br /&gt;
et nous trouvons que le mandala ne peut pas allumé sans interruption. Il  va apparaitre un flash du LEDs &lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57905</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57905"/>
				<updated>2018-05-18T17:26:17Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Nous utilisons le capteur pour contrôler la vitesse de l'animation du mandala et pour changer d’animation et la vitesse du changement.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Chaque fois qu'un geste d’éloginement est détecté (geste=3 sur la photo), l’animation change.&lt;br /&gt;
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) :&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation,&lt;br /&gt;
et nous trouvons que le mandala ne peut pas allumé sans interruption. Il  va apparaitre un flash du LEDs &lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57895</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57895"/>
				<updated>2018-05-18T15:29:25Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation,&lt;br /&gt;
et nous trouvons que le mandala ne peut pas allumé sans interruption. Il  va apparaitre un flash du LEDs &lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57894</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57894"/>
				<updated>2018-05-18T15:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation,&lt;br /&gt;
et nous trouvons que le mandala ne peut pas allumé sans interruption. Il  va apparaitre un flash du LEDs &lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57893</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57893"/>
				<updated>2018-05-18T15:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
1. Pour la première variante, attribuer les valeurs de tableau(variation_params).Temps de croissance 500,temps de décroissance 500 et temps de pause de luminosite 2000,valeurs maximale et minimale de la variation de la luminance. les lumières sont allumées de groupe l'intérieur vers l'extérieur&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le troisième cas ,nous voulons réaliser tous les LEDs sont allumée en meme temps. Nous avons mis le temps de croissance à 500, temps de décroissance à 500 et pas de pause pour luminosité. Car les LEDs bleus sont toujours plus de lumière que les autres LEDs, donc on a mis 256 pour la valeur de luminance maximale, pour d’autre couleur de LEDs sont 1024.&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
&lt;br /&gt;
Nous avons mis 0 ms pour le temps de départ et 60000 ms pour le arret du animation,&lt;br /&gt;
et nous trouvons que le mandala ne peut pas allumé sans interruption. Il  va apparaitre un flash du LEDs &lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes}, &lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57889</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57889"/>
				<updated>2018-05-18T15:21:49Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
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.&lt;br /&gt;
Voici un extrait du code.  &lt;br /&gt;
&lt;br /&gt;
 #define	NB_DRIVERS		3&lt;br /&gt;
 #define	DLED_CHANNELS	24&lt;br /&gt;
 #define	NB_GROUPES		(NB_DRIVERS*DLED_CHANNELS)&lt;br /&gt;
&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
 int n=0;&lt;br /&gt;
 while(1){&lt;br /&gt;
  printf(&amp;quot;Channel #%d on\n&amp;quot;,n);&lt;br /&gt;
  for(int i=0;i&amp;lt;NB_DRIVERS*DLED_CHANNELS;i++) groupes[i]=(i==n)?MAX_VALEUR:0;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  n++; if(n&amp;gt;=NB_DRIVERS*DLED_CHANNELS) n=0;&lt;br /&gt;
  _delay_ms(WAIT_DELAY);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type1.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
[[Media:type2.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
[[Media:type3.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;time.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Global variables&lt;br /&gt;
&lt;br /&gt;
 /* Values for each LED sets */&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
 /* Definition of LED sets */&lt;br /&gt;
 int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe3[]={&lt;br /&gt;
   22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation2 */&lt;br /&gt;
 variation_params v_tous= {.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
 animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation3 */&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
 /* Variables for animation settings */ &lt;br /&gt;
 int quantum=1000;&lt;br /&gt;
 int stop;&lt;br /&gt;
&lt;br /&gt;
 // Functions&lt;br /&gt;
 //&lt;br /&gt;
 /* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
 void user_input(void){&lt;br /&gt;
 if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d  quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -=  QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Wait some time */&lt;br /&gt;
&lt;br /&gt;
 void wait_us(unsigned long delay){&lt;br /&gt;
 static unsigned long start;&lt;br /&gt;
 if(delay==0) start=micros();&lt;br /&gt;
 else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
 int taille_groupes(int leds[]){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
 return i;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Set luminosity value to a set of LEDs  */&lt;br /&gt;
&lt;br /&gt;
 void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(1){ if(leds[i]&amp;lt;0) break;  groupes[leds[i++]]=valeur; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la  variation se trouve-t-on ?&lt;br /&gt;
 long instant=temps%periode;&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		 // Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p- &amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
 else 						 // Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
 long nb=temps/periode;				 // Quel groupe de LED est concerné ?&lt;br /&gt;
 nb=nb%taille_groupes(leds);&lt;br /&gt;
 int instant=temps%periode;			 // Quelle est la phase courante de la variation ?&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play an animation */&lt;br /&gt;
&lt;br /&gt;
 void animation_play(animation *a){&lt;br /&gt;
 static unsigned char init;&lt;br /&gt;
 if(init==0){   init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
 animation *p;&lt;br /&gt;
 unsigned long temps=0;&lt;br /&gt;
 int i;&lt;br /&gt;
 for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
 while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
 stop=0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play all animations */&lt;br /&gt;
&lt;br /&gt;
 void animation_all(void){&lt;br /&gt;
 printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
 animation **a=anims;&lt;br /&gt;
 while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57680</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57680"/>
				<updated>2018-05-16T07:51:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première channel jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;time.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Global variables&lt;br /&gt;
&lt;br /&gt;
 /* Values for each LED sets */&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
 /* Definition of LED sets */&lt;br /&gt;
 int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe3[]={&lt;br /&gt;
   22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation2 */&lt;br /&gt;
 variation_params v_tous= {.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
 animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation3 */&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
 /* Variables for animation settings */ &lt;br /&gt;
 int quantum=1000;&lt;br /&gt;
 int stop;&lt;br /&gt;
&lt;br /&gt;
 // Functions&lt;br /&gt;
 //&lt;br /&gt;
 /* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
 void user_input(void){&lt;br /&gt;
 if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d  quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -=  QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Wait some time */&lt;br /&gt;
&lt;br /&gt;
 void wait_us(unsigned long delay){&lt;br /&gt;
 static unsigned long start;&lt;br /&gt;
 if(delay==0) start=micros();&lt;br /&gt;
 else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
 int taille_groupes(int leds[]){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
 return i;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Set luminosity value to a set of LEDs  */&lt;br /&gt;
&lt;br /&gt;
 void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(1){ if(leds[i]&amp;lt;0) break;  groupes[leds[i++]]=valeur; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la  variation se trouve-t-on ?&lt;br /&gt;
 long instant=temps%periode;&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		 // Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p- &amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
 else 						 // Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
 long nb=temps/periode;				 // Quel groupe de LED est concerné ?&lt;br /&gt;
 nb=nb%taille_groupes(leds);&lt;br /&gt;
 int instant=temps%periode;			 // Quelle est la phase courante de la variation ?&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play an animation */&lt;br /&gt;
&lt;br /&gt;
 void animation_play(animation *a){&lt;br /&gt;
 static unsigned char init;&lt;br /&gt;
 if(init==0){   init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
 animation *p;&lt;br /&gt;
 unsigned long temps=0;&lt;br /&gt;
 int i;&lt;br /&gt;
 for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
 while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
 stop=0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play all animations */&lt;br /&gt;
&lt;br /&gt;
 void animation_all(void){&lt;br /&gt;
 printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
 animation **a=anims;&lt;br /&gt;
 while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57674</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57674"/>
				<updated>2018-05-16T06:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;time.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Global variables&lt;br /&gt;
&lt;br /&gt;
 /* Values for each LED sets */&lt;br /&gt;
 unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
 /* Definition of LED sets */&lt;br /&gt;
 int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe3[]={&lt;br /&gt;
   22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation2 */&lt;br /&gt;
 variation_params v_tous= {.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
 animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation3 */&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
 /* Variables for animation settings */ &lt;br /&gt;
 int quantum=1000;&lt;br /&gt;
 int stop;&lt;br /&gt;
&lt;br /&gt;
 // Functions&lt;br /&gt;
 //&lt;br /&gt;
 /* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
 void user_input(void){&lt;br /&gt;
 if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d  quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -=  QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Wait some time */&lt;br /&gt;
&lt;br /&gt;
 void wait_us(unsigned long delay){&lt;br /&gt;
 static unsigned long start;&lt;br /&gt;
 if(delay==0) start=micros();&lt;br /&gt;
 else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
 int taille_groupes(int leds[]){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
 return i;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Set luminosity value to a set of LEDs  */&lt;br /&gt;
&lt;br /&gt;
 void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(1){ if(leds[i]&amp;lt;0) break;  groupes[leds[i++]]=valeur; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la  variation se trouve-t-on ?&lt;br /&gt;
 long instant=temps%periode;&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		 // Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p- &amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
 else 						 // Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
 long nb=temps/periode;				 // Quel groupe de LED est concerné ?&lt;br /&gt;
 nb=nb%taille_groupes(leds);&lt;br /&gt;
 int instant=temps%periode;			 // Quelle est la phase courante de la variation ?&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play an animation */&lt;br /&gt;
&lt;br /&gt;
 void animation_play(animation *a){&lt;br /&gt;
 static unsigned char init;&lt;br /&gt;
 if(init==0){   init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
 animation *p;&lt;br /&gt;
 unsigned long temps=0;&lt;br /&gt;
 int i;&lt;br /&gt;
 for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
 while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
 stop=0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play all animations */&lt;br /&gt;
&lt;br /&gt;
 void animation_all(void){&lt;br /&gt;
 printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
 animation **a=anims;&lt;br /&gt;
 while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57673</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57673"/>
				<updated>2018-05-16T06:39:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;time.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Global variables&lt;br /&gt;
&lt;br /&gt;
 /* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
 /* Definition of LED sets */&lt;br /&gt;
 int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe3[]={&lt;br /&gt;
   22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
 };&lt;br /&gt;
 int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation2 */&lt;br /&gt;
 variation_params v_tous= {.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
 animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation3 */&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
 /* Variables for animation settings */ &lt;br /&gt;
 int quantum=1000;&lt;br /&gt;
 int stop;&lt;br /&gt;
&lt;br /&gt;
 // Functions&lt;br /&gt;
 //&lt;br /&gt;
 /* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
 void user_input(void){&lt;br /&gt;
 if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d  quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -=  QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Wait some time */&lt;br /&gt;
&lt;br /&gt;
 void wait_us(unsigned long delay){&lt;br /&gt;
 static unsigned long start;&lt;br /&gt;
 if(delay==0) start=micros();&lt;br /&gt;
 else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
 int taille_groupes(int leds[]){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
 return i;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Set luminosity value to a set of LEDs  */&lt;br /&gt;
&lt;br /&gt;
 void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(1){ if(leds[i]&amp;lt;0) break;  groupes[leds[i++]]=valeur; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la  variation se trouve-t-on ?&lt;br /&gt;
 long instant=temps%periode;&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		 // Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p- &amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
 else 						 // Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
 long nb=temps/periode;				 // Quel groupe de LED est concerné ?&lt;br /&gt;
 nb=nb%taille_groupes(leds);&lt;br /&gt;
 int instant=temps%periode;			 // Quelle est la phase courante de la variation ?&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play an animation */&lt;br /&gt;
&lt;br /&gt;
 void animation_play(animation *a){&lt;br /&gt;
 static unsigned char init;&lt;br /&gt;
 if(init==0){   init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
 animation *p;&lt;br /&gt;
 unsigned long temps=0;&lt;br /&gt;
 int i;&lt;br /&gt;
 for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
 while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
 stop=0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play all animations */&lt;br /&gt;
&lt;br /&gt;
 void animation_all(void){&lt;br /&gt;
 printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
 animation **a=anims;&lt;br /&gt;
 while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57672</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57672"/>
				<updated>2018-05-16T06:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;time.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Global variables&lt;br /&gt;
&lt;br /&gt;
 /* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
 /* Definition of LED sets */&lt;br /&gt;
 int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe3[]={&lt;br /&gt;
   22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
 int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
 int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
 int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animations1 */&lt;br /&gt;
 variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
 variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
 animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation2 */&lt;br /&gt;
 variation_params v_tous= {.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
 animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
 /* Animation3 */&lt;br /&gt;
 variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
 variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
 animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
 /* Variables for animation settings */ &lt;br /&gt;
 int quantum=1000;&lt;br /&gt;
 int stop;&lt;br /&gt;
&lt;br /&gt;
 // Functions&lt;br /&gt;
 //&lt;br /&gt;
 /* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
 void user_input(void){&lt;br /&gt;
 if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d  quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -=  QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Wait some time */&lt;br /&gt;
&lt;br /&gt;
 void wait_us(unsigned long delay){&lt;br /&gt;
 static unsigned long start;&lt;br /&gt;
 if(delay==0) start=micros();&lt;br /&gt;
 else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
 int taille_groupes(int leds[]){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
 return i;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Set luminosity value to a set of LEDs  */&lt;br /&gt;
&lt;br /&gt;
 void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
 int i=0;&lt;br /&gt;
 while(1){ if(leds[i]&amp;lt;0) break;  groupes[leds[i++]]=valeur; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la  variation se trouve-t-on ?&lt;br /&gt;
 long instant=temps%periode;&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		 // Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p- &amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
 else 						 // Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
 void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
 variation_params *p=arg;&lt;br /&gt;
 long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
 long nb=temps/periode;				 // Quel groupe de LED est concerné ?&lt;br /&gt;
 nb=nb%taille_groupes(leds);&lt;br /&gt;
 int instant=temps%periode;			 // Quelle est la phase courante de la variation ?&lt;br /&gt;
 if(instant&amp;lt;=p-&amp;gt;deltac){				 // Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
 else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play an animation */&lt;br /&gt;
&lt;br /&gt;
 void animation_play(animation *a){&lt;br /&gt;
 static unsigned char init;&lt;br /&gt;
 if(init==0){   init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
 animation *p;&lt;br /&gt;
 unsigned long temps=0;&lt;br /&gt;
 int i;&lt;br /&gt;
 for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
 while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
 stop=0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Play all animations */&lt;br /&gt;
&lt;br /&gt;
 void animation_all(void){&lt;br /&gt;
 printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
 animation **a=anims;&lt;br /&gt;
 while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57671</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57671"/>
				<updated>2018-05-16T06:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57670</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57670"/>
				<updated>2018-05-16T06:28:35Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void set_LED_Drivers(unsigned int   pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH    output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK  output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as  stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Functions &lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
 int zx_getreg(int reg){&lt;br /&gt;
 int ret;&lt;br /&gt;
 i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
 i2c_write(reg);&lt;br /&gt;
 i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
 ret=i2c_readNak();&lt;br /&gt;
 i2c_stop();&lt;br /&gt;
 return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
 int zx_get_model(void){&lt;br /&gt;
 int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
 return model;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 /* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
 unsigned char zx_gesture_ready(void){&lt;br /&gt;
 int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
 return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
 void zx_get_positions(int *x,int *z){&lt;br /&gt;
 *x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
 *z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /* Get gesture */&lt;br /&gt;
 int zx_get_gesture(void){&lt;br /&gt;
 int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
 return gesture;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57669</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57669"/>
				<updated>2018-05-16T06:25:35Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
 Include files&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
 // Global variables&lt;br /&gt;
 // Functions&lt;br /&gt;
 void init_LED_Drivers(int nb){&lt;br /&gt;
  // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) |   (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH   output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH  output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57668</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57668"/>
				<updated>2018-05-16T06:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
&lt;br /&gt;
 Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57667</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57667"/>
				<updated>2018-05-16T06:23:21Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TLC5947 LEDs driver &lt;br /&gt;
&lt;br /&gt;
Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57666</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57666"/>
				<updated>2018-05-16T06:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 TLC5947 LEDs driver &lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57218</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57218"/>
				<updated>2018-05-15T14:46:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:Rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57213</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57213"/>
				<updated>2018-05-15T14:43:45Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:RapportProjet18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57212</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57212"/>
				<updated>2018-05-15T14:43:04Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:RapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_P18.odt&amp;diff=57210</id>
		<title>Fichier:Rapport P18.odt</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_P18.odt&amp;diff=57210"/>
				<updated>2018-05-15T14:41:40Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57209</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57209"/>
				<updated>2018-05-15T14:41:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapport_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57196</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57196"/>
				<updated>2018-05-15T14:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;i2cmaster.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Functions &lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture register value */&lt;br /&gt;
&lt;br /&gt;
int zx_getreg(int reg){&lt;br /&gt;
int ret;&lt;br /&gt;
i2c_start_wait(ZX_ADDR|I2C_WRITE);&lt;br /&gt;
i2c_write(reg);&lt;br /&gt;
i2c_rep_start(ZX_ADDR|I2C_READ);&lt;br /&gt;
ret=i2c_readNak();&lt;br /&gt;
i2c_stop();&lt;br /&gt;
return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get ZX gesture model number */&lt;br /&gt;
&lt;br /&gt;
int zx_get_model(void){&lt;br /&gt;
int model=zx_getreg(ZX_REG_MODEL);&lt;br /&gt;
return model;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a position ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_position_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_POSITION)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Is a gesture ready to be read ? */&lt;br /&gt;
&lt;br /&gt;
unsigned char zx_gesture_ready(void){&lt;br /&gt;
int status=zx_getreg(ZX_REG_STATUS);&lt;br /&gt;
return (status&amp;amp;ZX_BIT_GESTURE)?1:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get X and Z positions */&lt;br /&gt;
&lt;br /&gt;
void zx_get_positions(int *x,int *z){&lt;br /&gt;
*x=zx_getreg(ZX_REG_XPOS);&lt;br /&gt;
*z=zx_getreg(ZX_REG_ZPOS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get gesture */&lt;br /&gt;
int zx_get_gesture(void){&lt;br /&gt;
int gesture=zx_getreg(ZX_REG_GESTURE);&lt;br /&gt;
return gesture;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57195</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57195"/>
				<updated>2018-05-15T14:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57194</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57194"/>
				<updated>2018-05-15T14:18:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57193</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57193"/>
				<updated>2018-05-15T14:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Un capteur de distance et de mouvement ZX est installé sur le bois du mandala.&lt;br /&gt;
Nous utilisons des capteurs pour controler les changement de l'animation du mandala et la vitesse du changement.&lt;br /&gt;
Lorsque le geste sur le coté droit est détecter, g=1 et la valeur du quantum plus 100 ,ce qui signifie que accélérer de la vitesse du luminance des LEDs.&lt;br /&gt;
Lorsque le geste sur le coté gauche est détecter, g=2 et la valeur du quantum moins 100 ,ce qui signifie que diminuer de la vitesse du luminance des LEDs.&lt;br /&gt;
Chaque fois qu'un geste up est détecté, g=3 et le mandala va changer un animation.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57188</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57188"/>
				<updated>2018-05-15T14:05:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
Voila un extrait du code pour réaliser ces 3 animation.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
#include &amp;quot;zxgesture.h&amp;quot;&lt;br /&gt;
#include &amp;quot;animations.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
/* Values for each LED sets */&lt;br /&gt;
unsigned int groupes[NB_GROUPES];&lt;br /&gt;
&lt;br /&gt;
/* Definition of LED sets */&lt;br /&gt;
int groupe1[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe2[]={&lt;br /&gt;
  5,9,39,43,63,48,57,20,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe3[]={&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,-1&lt;br /&gt;
  };&lt;br /&gt;
int groupe4[]={&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,-1&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
int groupe5[]={&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,-1&lt;br /&gt;
};&lt;br /&gt;
int groupe6[]={&lt;br /&gt;
  1,3,28,36,46,69,54,16,-1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int tous[]={&lt;br /&gt;
  23,10,7,40,61,70,55,13,&lt;br /&gt;
  5,9,39,43,63,48,57,20,&lt;br /&gt;
  22,24,8,29,30,33,38,42,60,64,67,49,52,58,14,18,&lt;br /&gt;
  0,4,6,26,31,34,37,44,47,65,68,50,53,59,15,19,&lt;br /&gt;
  2,11,25,27,32,35,41,45,62,66,71,51,56,12,17,21,&lt;br /&gt;
  1,3,28,36,46,69,54,16,&lt;br /&gt;
  -1&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animations1 */&lt;br /&gt;
variation_params v1={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v2={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v3={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=256};&lt;br /&gt;
variation_params v4={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v5={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
variation_params v6={.deltac=500,.deltad=500,.deltap=2000,.min=0,.max=1024};&lt;br /&gt;
animation a1[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v1,variation_groupes},&lt;br /&gt;
  {500,60000,groupe2,&amp;amp;v2,variation_groupes},&lt;br /&gt;
  {1000,60000,groupe3,&amp;amp;v3,variation_groupes},&lt;br /&gt;
  {1500,60000,groupe4,&amp;amp;v4,variation_groupes},&lt;br /&gt;
  {2000,60000,groupe5,&amp;amp;v5,variation_groupes},&lt;br /&gt;
  {2500,60000,groupe6,&amp;amp;v6,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation2 */&lt;br /&gt;
variation_params v_tous={.deltac=100,.deltad=100,.deltap=0,.min=0,.max=255};&lt;br /&gt;
animation a2[]={&lt;br /&gt;
  {0,40000,tous,&amp;amp;v_tous,variation_groupe},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
/* Animation3 */&lt;br /&gt;
variation_params v21={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v22={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v23={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=256};&lt;br /&gt;
variation_params v24={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v25={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
variation_params v26={.deltac=500,.deltad=500,.deltap=0,.min=0,.max=1024};&lt;br /&gt;
animation a3[]={&lt;br /&gt;
  {0,60000,groupe1,&amp;amp;v21,variation_groupes},&lt;br /&gt;
  {0,60000,groupe2,&amp;amp;v22,variation_groupes},&lt;br /&gt;
  {0,60000,groupe3,&amp;amp;v23,variation_groupes},&lt;br /&gt;
  {0,60000,groupe4,&amp;amp;v24,variation_groupes},&lt;br /&gt;
  {0,60000,groupe5,&amp;amp;v25,variation_groupes},&lt;br /&gt;
  {0,60000,groupe6,&amp;amp;v26,variation_groupes},&lt;br /&gt;
  {-1,-1,NULL,NULL,NULL}&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
animation *anims[]={a1,a2,a3,NULL};&lt;br /&gt;
&lt;br /&gt;
/* Variables for animation settings */ &lt;br /&gt;
int quantum=1000;&lt;br /&gt;
int stop;&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
//&lt;br /&gt;
/* Handle the user input */&lt;br /&gt;
&lt;br /&gt;
void user_input(void){&lt;br /&gt;
if(zx_gesture_ready()){&lt;br /&gt;
  int g=zx_get_gesture();&lt;br /&gt;
  printf(&amp;quot;geste=%d quantum=%d\n&amp;quot;,g,quantum);&lt;br /&gt;
  switch(g){&lt;br /&gt;
    case ZX_GEST_RIGHT:&lt;br /&gt;
      if(quantum&amp;gt;QUANTUM_MIN) quantum -= QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_LEFT:&lt;br /&gt;
      if(quantum&amp;lt;QUANTUM_MAX) quantum += QUANTUM_PAS;&lt;br /&gt;
      break;&lt;br /&gt;
    case ZX_GEST_UP:&lt;br /&gt;
      stop=1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wait some time */&lt;br /&gt;
&lt;br /&gt;
void wait_us(unsigned long delay){&lt;br /&gt;
static unsigned long start;&lt;br /&gt;
if(delay==0) start=micros();&lt;br /&gt;
else&lt;br /&gt;
  while(1){&lt;br /&gt;
    unsigned long now=micros();&lt;br /&gt;
    unsigned long delta=now-start;&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(delta&amp;gt;=delay) break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Get a set of LEDs size */&lt;br /&gt;
&lt;br /&gt;
int taille_groupes(int leds[]){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(leds[i]&amp;gt;=0) i++;&lt;br /&gt;
return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Set luminosity value to a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void valeur_groupes(int leds[],unsigned int valeur){&lt;br /&gt;
int i=0;&lt;br /&gt;
while(1){ if(leds[i]&amp;lt;0) break; groupes[leds[i++]]=valeur; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Compute variation of luminosity for a set of LEDs */&lt;br /&gt;
&lt;br /&gt;
void variation_groupes(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;	// Dans quelle phase de la variation se trouve-t-on ?&lt;br /&gt;
long instant=temps%periode;&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min;&lt;br /&gt;
  calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  } &lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max;&lt;br /&gt;
  calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  valeur_groupes(leds,calc);&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  valeur_groupes(leds,p-&amp;gt;min);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variation set by set */&lt;br /&gt;
&lt;br /&gt;
void variation_groupe(int leds[],void *arg,long temps){&lt;br /&gt;
variation_params *p=arg;&lt;br /&gt;
long periode=p-&amp;gt;deltac+p-&amp;gt;deltad+p-&amp;gt;deltap;&lt;br /&gt;
long nb=temps/periode;				// Quel groupe de LED est concerné ?&lt;br /&gt;
nb=nb%taille_groupes(leds);&lt;br /&gt;
int instant=temps%periode;			// Quelle est la phase courante de la variation ?&lt;br /&gt;
if(instant&amp;lt;=p-&amp;gt;deltac){				// Cas de la phase de croissance de p-&amp;gt;min à p-&amp;gt;max&lt;br /&gt;
  long calc=(long)p-&amp;gt;max-(long)p-&amp;gt;min; calc=calc*instant/p-&amp;gt;deltac+p-&amp;gt;min;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else if(instant&amp;lt;=p-&amp;gt;deltac+p-&amp;gt;deltad){		// Cas de la phase de décroissance&lt;br /&gt;
  long calc=(long)p-&amp;gt;min-(long)p-&amp;gt;max; calc=calc*(instant-p-&amp;gt;deltac)/p-&amp;gt;deltad+p-&amp;gt;max;&lt;br /&gt;
  groupes[leds[nb]]=calc;&lt;br /&gt;
  }&lt;br /&gt;
else 						// Cas de la pause&lt;br /&gt;
  groupes[leds[nb]]=p-&amp;gt;min;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play an animation */&lt;br /&gt;
&lt;br /&gt;
void animation_play(animation *a){&lt;br /&gt;
static unsigned char init;&lt;br /&gt;
if(init==0){ init_LED_Drivers(NB_DRIVERS); init_time(); init=1; }&lt;br /&gt;
animation *p;&lt;br /&gt;
unsigned long temps=0;&lt;br /&gt;
int i;&lt;br /&gt;
for(i=0;i&amp;lt;NB_GROUPES;i++) groupes[i]=0;&lt;br /&gt;
while(stop==0){&lt;br /&gt;
  unsigned char actif=0;&lt;br /&gt;
  wait_us(0);&lt;br /&gt;
  for(p=a;p-&amp;gt;depart&amp;gt;=0;p++){&lt;br /&gt;
    user_input();&lt;br /&gt;
    if(temps&amp;gt;p-&amp;gt;arret) continue;&lt;br /&gt;
    actif=1;&lt;br /&gt;
    if(temps&amp;lt;p-&amp;gt;depart) continue;&lt;br /&gt;
    p-&amp;gt;fun_anim(p-&amp;gt;groupes,p-&amp;gt;params,temps-p-&amp;gt;depart);&lt;br /&gt;
    }&lt;br /&gt;
  if(!actif) break;&lt;br /&gt;
  set_LED_Drivers(groupes,NB_DRIVERS);&lt;br /&gt;
  wait_us(quantum);&lt;br /&gt;
  temps++;&lt;br /&gt;
  }&lt;br /&gt;
stop=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Play all animations */&lt;br /&gt;
&lt;br /&gt;
void animation_all(void){&lt;br /&gt;
printf(&amp;quot;Play all\n&amp;quot;);&lt;br /&gt;
animation **a=anims;&lt;br /&gt;
while(*a!=NULL) animation_play(*a++);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57183</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57183"/>
				<updated>2018-05-15T14:02:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57182</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57182"/>
				<updated>2018-05-15T13:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57181</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57181"/>
				<updated>2018-05-15T13:59:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
/#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57180</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57180"/>
				<updated>2018-05-15T13:58:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
{/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57179</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57179"/>
				<updated>2018-05-15T13:57:32Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Et nous avons trouvé le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57177</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57177"/>
				<updated>2018-05-15T13:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57176</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57176"/>
				<updated>2018-05-15T13:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code et le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
/** TLC5947 LEDs driver **/&lt;br /&gt;
&lt;br /&gt;
// Include files&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;tlc5947.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Global variables&lt;br /&gt;
&lt;br /&gt;
// Functions&lt;br /&gt;
&lt;br /&gt;
void init_LED_Drivers(int nb){&lt;br /&gt;
                        // LED drivers I/O as outputs&lt;br /&gt;
  DDR_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK) | (1&amp;lt;&amp;lt;PIN_DLED_DATA) | (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void set_LED_Drivers(unsigned int pwm[],int nb){&lt;br /&gt;
  int c,b;&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
  // 24 channels per TLC5947&lt;br /&gt;
  for(c=DLED_CHANNELS*nb-1;c&amp;gt;=0;c--){&lt;br /&gt;
    // 12 bits per channel, send MSB first&lt;br /&gt;
    int v=pwm[c];&lt;br /&gt;
    for(b=0;b&amp;lt;12;b++){&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
      PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set DATA as stated by bit #b of c&lt;br /&gt;
      if(v &amp;amp; 0x0800)&lt;br /&gt;
        PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
      else&lt;br /&gt;
        PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_DATA);&lt;br /&gt;
&lt;br /&gt;
                        // Set CLOCK output HIGH&lt;br /&gt;
      PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
      v &amp;lt;&amp;lt;= 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                        // Set CLOCK output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_CLOCK);&lt;br /&gt;
&lt;br /&gt;
                        // Set LATCH output high&lt;br /&gt;
  PORT_DLED |= (1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
                        // Set LATCH output low&lt;br /&gt;
  PORT_DLED &amp;amp;= ~(1&amp;lt;&amp;lt;PIN_DLED_LATCH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57174</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57174"/>
				<updated>2018-05-15T13:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code et le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57173</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57173"/>
				<updated>2018-05-15T13:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code et le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57172</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57172"/>
				<updated>2018-05-15T13:47:33Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Pour trouver les dispositon des LEDs, nous avons fait un programme de pilote des LEDs qui peut allumer des LEDs une à une dans  l'ordre du première sortie jusqu’au dernière.&lt;br /&gt;
Voici un extrait du code et le position des LEDs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:RapportP18.odt&amp;diff=57171</id>
		<title>Fichier:RapportP18.odt</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:RapportP18.odt&amp;diff=57171"/>
				<updated>2018-05-15T13:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57170</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57170"/>
				<updated>2018-05-15T13:45:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Nous avons trouvé les disposition des LEDs pour les programmer.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapportP18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57165</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57165"/>
				<updated>2018-05-15T13:33:09Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Nous avons trouvé les disposition des LEDs pour les programmer.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Pour la programmation, l'IDE Arduino utilise du c++ qui n'est pas assez efficace pour un micro-controôeur qui ne dispose que de 16Ko pour le programme et 2Ko de RAM.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapport_du_projet_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_du_projet_P18.odt&amp;diff=57161</id>
		<title>Fichier:Rapport du projet P18.odt</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_du_projet_P18.odt&amp;diff=57161"/>
				<updated>2018-05-15T13:30:34Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57160</id>
		<title>IMA4 2017/2018 P18</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P18&amp;diff=57160"/>
				<updated>2018-05-15T13:30:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lzhang2 : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le mot mandala vient d‘une très ancienne langue indienne.Il signifiant：&lt;br /&gt;
&lt;br /&gt;
# disque, cercle, sphère ; &lt;br /&gt;
# toute figure géométrique apparentée au cercle ; &lt;br /&gt;
# structure, forme d'organisation ; &lt;br /&gt;
# dessin que l'on trace sur le sol ou sur un autre support à l'occasion de divers rites.  &lt;br /&gt;
&lt;br /&gt;
Il s'exprime dans un dessin circulaire, convergeant vers un centre porteur d'infini. &lt;br /&gt;
Dans la tradition orientale, le cercle représente le Divin, sa manifestation, sa création. &lt;br /&gt;
Ce symbole du cercle se retrouve dans toutes les cultures et toutes les traditions, tant occidentales qu'orientales. &lt;br /&gt;
&lt;br /&gt;
Le cercle est le symbole de la vie: la naissance, la maturité, la mort et la résurrection ou la renaissance.&lt;br /&gt;
Dans le bouddhisme, il est utilisé surtout pour la méditation. &lt;br /&gt;
Le diagramme est dans tous les cas rempli de symboles; il peut être associé à une divinité.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
L'objectif est de réaliser un mandala électronique.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_kit_noel.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Xiaojingling1.png|thumb|300px|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Originalité de notre mandala==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
Notre mandala est un élément de décoration et, avec des animations adaptées, peut être un objet de relaxation.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Le mandala réagissant aux gestes du visiteur, des gestes lents conduisent à des animations relaxantes.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Durant la présentation de notre projet les deux questions suivantes nous ont été posées.&lt;br /&gt;
&lt;br /&gt;
===Première question===&lt;br /&gt;
&amp;lt;b&amp;gt;Combien de LEDs le mandala va-t-il comporter, combien de groupes de LEDs indépendants pour les animations ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons fait une première esquisse de notre mandala :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_mandala_brouillon.jpg|thumb|200px|center]]&lt;br /&gt;
&lt;br /&gt;
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 :&lt;br /&gt;
* un premier cercle de 32 LEDs oranges ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs jaunes ;&lt;br /&gt;
* un troisième cercle de 32 LEDs bleues ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs oranges ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs oranges.&lt;br /&gt;
&lt;br /&gt;
===Seconde question===&lt;br /&gt;
&amp;lt;b&amp;gt;Le mandala sera alimenté de quelle façon pour quelle autonomie ?&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Extension de fonction==&lt;br /&gt;
&lt;br /&gt;
Utiliser avec ZX Distance et Gesture Sensor&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
L'objet final sera constitué des composants ci-dessous.&lt;br /&gt;
&lt;br /&gt;
# une peinture de type mandala sur une planche de contre-plaqué réalisée à la gouache ;&lt;br /&gt;
# une carte électronique centrale à base de micro-contrôleur utilisant des pilotes de LEDs ;&lt;br /&gt;
# 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 ;&lt;br /&gt;
# les boitiers de piles sont aussi à fixer à l'arrière du mandala ;&lt;br /&gt;
# pour la détection des gestes nous utiliserons une carte &amp;quot;ZX Distance et Gesture Sensor&amp;quot; de SparkFun.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
Inkscape: pour dessiner un dessin mandala&lt;br /&gt;
&lt;br /&gt;
Frizing: dessiner tous les circuits imprimés et PCBs&lt;br /&gt;
&lt;br /&gt;
Ardunio: programmation informatique pour contrôler les LEDs&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
Les tâches à effectuer pour ce projet sont :&lt;br /&gt;
&lt;br /&gt;
# 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 ;&lt;br /&gt;
# choisir un dispositif pour contrôleur les LEDs (registre à décalage ou pilote de LEDs) ;&lt;br /&gt;
# concevoir le circuit à base de micro-contrôleur pour contrôler les très nombreuses LEDs ;&lt;br /&gt;
# réaliser (souder) la carte électronique et la tester ;&lt;br /&gt;
# concevoir les cartes électroniques porte LEDs et les réaliser ;&lt;br /&gt;
# Programmer des animations pouvant être déclenchées par le capteur de gestes.&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!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&lt;br /&gt;
|-&lt;br /&gt;
| Dessin du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Contrôle des LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du circuit principal&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation des circuits porte-LEDs&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Réalisation du mandala&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| Programmation des animations&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
Nous avons établi une première liste de matériel nécessaire pour le mandala.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi utilisé le logiciel inkscape pour dessiner les éléments artistiques du mandala. Le fichier vectoriel est disponible : &lt;br /&gt;
[[Media:2018_P18_Mandala Drawing.svg]], l'image ci-dessous en donne un aperçu.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala Drawing.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Nous allons utiliser 8 accumulateurs à 1,2v nous disposons donc d'une tension d'alimentation de 9,6v. &lt;br /&gt;
&lt;br /&gt;
Chaque sortie des pilotes va donc pouvoir contrôler 4 LEDs à 2v et 2 LEDs à 3,3v. &lt;br /&gt;
&lt;br /&gt;
Pour nos cinq cercles de LEDs cela donne donc les nombres suivant de sorties nécessaires :&lt;br /&gt;
* un premier cercle de 32 LEDs rouges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un deuxième cercle de 32 LEDs oranges (2v), soit 8 sorties nécessaires ;&lt;br /&gt;
* un troisième cercle de 48 LEDs bleues (3v), soit 16 sorties nécessaires  ;&lt;br /&gt;
* un quatrième cercle de 64 LEDs jaunes (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* un cinqième cercle de 64 LEDs rouges (2v), soit 16 sorties nécessaires ;&lt;br /&gt;
* enfin un dernier cercle de 32 LEDs jaunes (2v), soit 8 sorties nécessaires.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018-P18-Montage-TLC59771.png|thumb|right|300px]]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Voici le montage sur plaque d'essai pour allumer 8 LEDs alternativement en utilisant 4 sorties (2 LEDs par sortie). Et ça marche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la carte électronique principale nous utilisons le logiciel Fritzing. &lt;br /&gt;
&lt;br /&gt;
Ce logiciel ne possède pas d'empreinte pour le TLC5947. Nous devons la créer nous même. &lt;br /&gt;
&lt;br /&gt;
Nous avons étudié la façon pour créer de nouvelles empreintes. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour cette séance nous nous sommes occupés de la vue &amp;quot;plaque d'essai&amp;quot; et de la vue &amp;quot;schématique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*schéma de la vue &amp;quot;breadboard&amp;quot; : [[Fichier:2018 P18 TLC5947 breadboard.png|thumb|400px|center]]&lt;br /&gt;
*schéma de la vue &amp;quot;schematic&amp;quot; : [[Fichier:2018 P18 TLC5947 schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
Le fichier du nouveau composant est disponible : [[Media:2018_P18_TLC5947_v3.zip]]. &lt;br /&gt;
&lt;br /&gt;
Pour l'utiliser il faut renommer le fichier en &amp;lt;code&amp;gt;.fzpz&amp;lt;/code&amp;gt; et l'importer dans la fenêtre &amp;quot;composants&amp;quot; de Fritzing.&lt;br /&gt;
&lt;br /&gt;
Nous avons commencé à concevoir la carte principale avec cette nouvelle empreinte.&lt;br /&gt;
&lt;br /&gt;
Voila la vue &amp;quot;plaque d'essai&amp;quot; de notre circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_breadboard.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le circuit avec les composants placés mais non routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_PCB_CP_nonroute.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Le schématique du circuit principal :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_schematic.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et le circuit finalement routé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_CP_PCB.png|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Le fichier Fritzing du circuit principal est disponible : [[Media:2018 P18 CP.zip]].&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe.png|thumb|400px|left]]&lt;br /&gt;
[[Fichier:2018_P18_Mandala_Decoupe_Anneau.png|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Circuit porte 2 LEDs : [[Fichier:2018_P18_Porte2LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit porte 4 LEDs : [[Fichier:2018_P18_Porte4LEDs_PCB.png]]&lt;br /&gt;
&lt;br /&gt;
Circuit lune porte 4 LEDs : [[Fichier:2018_P18_Lune.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les fichiers Fritzing sont disponibles : [[Media:2018_P18_Porte2LEDs.zip]] [[Media:2018 P18 Porte4LEDs.zip]] [[Media:2018_P18_Lune.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons terminé tous les dessins sur l'ordinateur, cette semaine nous avons imprimé notre dessins sur la blaque de bois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Et nous avons soudé des LEDs CMS aux PCBs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:lesPCB.jpg|thumb|300px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
Nous avons continué le travail de soudage et vérifié le bon soudage avec un multimètre.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bois1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Démonstration du bon fonctionnement du circuit principal.&lt;br /&gt;
&lt;br /&gt;
[[Media:2018_P18_demo_TLC5947.mp4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Nous avons essayé de tester le capteur ZX DISTANCE AND GESTURE SENSOR.&lt;br /&gt;
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.&lt;br /&gt;
Z (hauteur au-dessus du capteur) et X (position d'un côté à l'autre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ZX_tset.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mandala_decoration.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:connection_cables.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 11 et 12==&lt;br /&gt;
&lt;br /&gt;
Il reste une petite partie du travail au cours des deux semaines précédentes, et nous allons le terminer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:support_mandala2.jpg|thumb|400px|left]]&lt;br /&gt;
[[Fichier:support-mandala3.jpg|thumb|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le support du Mandala est disponible: [[Media:Support_mandala.zip]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
Nous avons trouvé les disposition des LEDs pour les programmer.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LEDs_Position.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé le travail de programmation et réalisé le changement de l'ensemble du modèle Mandala contrôlé par des capteurs détectant différents gestes.&lt;br /&gt;
&lt;br /&gt;
S'il vous plaît voir les documents rendus pour le code.&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu trois méthodes de transformation.&lt;br /&gt;
&lt;br /&gt;
Dans le premier type, les lumières sont allumées de l'intérieur vers l'extérieur;&lt;br /&gt;
&lt;br /&gt;
Le deuxième type, les lumières s'allument une à une dans le sens antihoraire et l'ordre du cercle intérieur à extérieur;&lt;br /&gt;
&lt;br /&gt;
Le troisième type, toutes les lumières sont allumées en même temps.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
[[Fichier:rapport_du_projet_P18.odt]]&lt;br /&gt;
&lt;br /&gt;
[[Media:led_code.zip]]&lt;/div&gt;</summary>
		<author><name>Lzhang2</name></author>	</entry>

	</feed>