Contrôle de matrice leds, 2014/2015, TD2 : Différence entre versions

De Wiki de Projets IMA
Ligne 63 : Ligne 63 :
  
 
Lors de cette deuxième séance nous avons principalement créé le circuit sur Altium et effectué des tests.  
 
Lors de cette deuxième séance nous avons principalement créé le circuit sur Altium et effectué des tests.  
Dans un premier temps, nous nous sommes rendu compte qu'il fallait que l'on stocke le mot de 8 bits envoyé par le simulateur de bus, pour cela on a utilisé un multiplexeur 1 vers 8 avec un compteur. Le multiplexeur envoie alors le mot généré dans une bascule D qui permet le stockage, une bascule par colonne. Le compteur permet à chaque tour de changer de bascule D. On a donc utilisé un compteur qui compte jusque 7, il suffit donc d'utiliser 3 bits pour compter jusque 7.
+
 
 +
Dans un premier temps, nous nous sommes rendus compte qu'il fallait que l'on stocke le mot de 8 bits envoyé par le simulateur de bus, pour cela on a utilisé un démultiplexeur 1 vers 8 avec un compteur. Le démultiplexeur envoie alors le mot généré dans une bascule D qui permet le stockage du mot, on utilise une bascule par colonne. Le compteur permet de changer de bascule D à chaque tour. On a donc utilisé un compteur 3 bits pour compter jusque 7. On a donc en sortie du multiplexeur un bus de 8 bits, ensuite pour que chaque bit soit envoyé sur une ligne de la colonne, on utilise un multiplexeur 1 vers 8.
  
  
Ligne 71 : Ligne 72 :
  
 
Maintenant que le message voulu sur la colonne a été enregistré puis envoyé, il a fallut trouver un moyen d'envoyer le mot sur la bonne colonne, puis d'éteindre la colonne pour passer au message suivant de la colonne suivante. Pour cela on utilise un registre à décalage. Il permet d'allumer tour à tour les colonnes.
 
Maintenant que le message voulu sur la colonne a été enregistré puis envoyé, il a fallut trouver un moyen d'envoyer le mot sur la bonne colonne, puis d'éteindre la colonne pour passer au message suivant de la colonne suivante. Pour cela on utilise un registre à décalage. Il permet d'allumer tour à tour les colonnes.
 +
 +
 
JPEG schéma final
 
JPEG schéma final
En effet, on lui envoie un message d'initialisation 01H qui allume la première colonne. Ensuite grâce au registre on décale le bit 1 d'un rang. Comme le rang 1 n'a pas de bit avant lui, il faut lui envoyer une valeur, on utilise donc la colonne SLI qui envoie donc le zéro voulu ( ce qui explique la masse à l'entrée de SLI).
+
 
 +
 
 +
En effet, on envoie au registre à décalage un message d'initialisation 01H qui permet d'allumer la première colonne. Ensuite grâce au registre on décale le bit 1 d'un rang. Comme le rang 1 n'a pas de bit avant lui, il faut lui envoyer une valeur, on utilise donc l'entrée SLI qui envoie donc le zéro voulu (ce qui explique la masse à l'entrée de SLI).
 +
Au départ, on utilisait l'entrée LOAD pour remettre à zéro le registre, mais nous avons eu des problèmes et avons décidé de mettre un bouton poussoir pour faire le chargement.
 +
 
 +
JPEG escalier des colonnes
 +
JPEG message envoyé
  
 
A l'état initial: 0000 0001    ->  la colonne 1 est allumée.
 
A l'état initial: 0000 0001    ->  la colonne 1 est allumée.

Version du 19 mars 2015 à 14:22

1. Présentation du projet

Le projet matrice de leds de taille 8x8 consiste à gérer l'allumage des leds. De plus, l'interface web permettra de dessiner sur cette matrice 8x8.

Pour cela nous utilisons:

- une nanoboard;

- une foxboard;

- un banc d'essai;

- une matrice de leds.



2. Première séance


2.1 Partie informatique

Lors de cette première séance, nous avons commencé par nous intéresser à l'interface web, avec javascript et canvas. L'utilisateur utilise cette page pour voir l'état de la matrice de LEDs (lesquelles sont allumées ou non), et pour interagir avec. Il peut, en cliquant sur la représentation de cette matrice, allumer celle(s) qu'il veut, voir en changer la couleur. Par défaut, la matrice utilisée est de taille 8x8, mais l'utilisateur doit pouvoir être en mesure de choisir une autre taille. Cependant, on suppose que la matrice voulue est carrée. Pour changer la taille, nous avons mit en place un bouton qui fait appel à la fonction changeTaille lorsque l'on clique dessus. Cette fonction demande à l'utilisateur le nombre total de LED de la matrice, puis relance la fonction d'ajoutDisque, qui dessine les disques. Pour arriver à dessiner le nombre voulu de LEDs, la fonction ajoutDiqsues a été modifiée de la sorte qu'elle créée un tableau de la taille de la matrice et dans chaque case, elle créée un canvas, qui sera ensuite dessinée. Il reste à réussir à changer la couleur des LEDs.


2.2 Partie Electronique

Lors de cette première séance, nous avons commencé par comprendre le fonctionnement de le matrice de LEDS. Comme la matrice de LEDs se compose que de 16 entrées, on peut afficher qu'une seule colonne ou ligne à la fois. Nous avons choisi l'affichage colonne par colonne. Pour cela, on divise les entrées en deux catégories, 8 entrées serviront à choisir la colonne à allumer et les 8 autres restantes serviront à envoyer le message voulu sur la colonne. Pour permettre une observation de la matrice dans son intégralité, on allume les colonnes une par une à une fréquence élevée. Cela permet entre autre une économie d'énergie.


Nous avons donc commencé à réfléchir sur le circuit électrique à réaliser sur ALtium, et ses éléments.

Nous avons choisis les éléments suivants:

- un simulateur de bus;

- un multiplexeur 1 vers 8;

- un compteur qui permet de gérer la colonne à allumer;

- un simulateur d'horloge;

- un registre à décallage.



3.Deuxiéme séance

3.1 Partie Informatique


3.2 Partie Electronique

Lors de cette deuxième séance nous avons principalement créé le circuit sur Altium et effectué des tests.

Dans un premier temps, nous nous sommes rendus compte qu'il fallait que l'on stocke le mot de 8 bits envoyé par le simulateur de bus, pour cela on a utilisé un démultiplexeur 1 vers 8 avec un compteur. Le démultiplexeur envoie alors le mot généré dans une bascule D qui permet le stockage du mot, on utilise une bascule par colonne. Le compteur permet de changer de bascule D à chaque tour. On a donc utilisé un compteur 3 bits pour compter jusque 7. On a donc en sortie du multiplexeur un bus de 8 bits, ensuite pour que chaque bit soit envoyé sur une ligne de la colonne, on utilise un multiplexeur 1 vers 8.


JPEG


Maintenant que le message voulu sur la colonne a été enregistré puis envoyé, il a fallut trouver un moyen d'envoyer le mot sur la bonne colonne, puis d'éteindre la colonne pour passer au message suivant de la colonne suivante. Pour cela on utilise un registre à décalage. Il permet d'allumer tour à tour les colonnes.


JPEG schéma final


En effet, on envoie au registre à décalage un message d'initialisation 01H qui permet d'allumer la première colonne. Ensuite grâce au registre on décale le bit 1 d'un rang. Comme le rang 1 n'a pas de bit avant lui, il faut lui envoyer une valeur, on utilise donc l'entrée SLI qui envoie donc le zéro voulu (ce qui explique la masse à l'entrée de SLI). Au départ, on utilisait l'entrée LOAD pour remettre à zéro le registre, mais nous avons eu des problèmes et avons décidé de mettre un bouton poussoir pour faire le chargement.

JPEG escalier des colonnes JPEG message envoyé

A l'état initial: 0000 0001 -> la colonne 1 est allumée.

A l'état suivant: 0000 0010 -> la colonne 1 est alors éteint et la colonne 2 s'allume.

Et ainsi de suite, ce qui nous permet d'obtenir le fonctionnement de l'affichage voulu.

JPEG :


NB:Nous aurions pu utiliser un multiplexeurs comme pour l'enregistrement des mots. Mais le registre à décalage nous permet d'éviter le compteur.