lumières jeu avec Arduino



Inspiré par un de mes amis, J'ai développé un circuit à matrice d'une lumière de DEL. Est-il possible que le pasteur a demandé de réparer une bougie votive, déjà fourni avec les lampes à incandescence. Nous avons fait de mettre les LED blanches en petite puissance. Une clé de passe ou d'un capteur de pièces de monnaie allumer une LED à la fois.

 

Description

Le projet présenté ici il est sans prétention être entièrement fonctionnel, il est solo à des fins éducatives. En fait, il pourrait y avoir des problèmes à résoudre dans la construction finale du projet.


Le banc d'essai démontre la faisabilité. Puis, finalement, dans l'installation il y aura des précautions que la longueur des connexions ne sont pas excessifs, ou que’ puissance est filtré par des perturbations.

Le développement comprend un Arduino UNO V3, une matrice de LED par 6 lignes à 4 colonne. Ces LED sont commandées directement dall'Arduino multiplexé.


Le programme’ agir de l'activation d'un bouton ou la détection de passage d'une pièce de monnaie, commence à clignoter le voyant à côté de la séquence.
Quand il n'y en a pas pas actif, clair qu'à partir de la première partie.

Dans la vidéo, que vous pouvez voir l'adresse ci-dessous décrit, un bouton simple fil mo » a été utilisé.

L'agencement des diodes électroluminescentes de la matrice, une partie d'un carré qui reflète d'une certaine manière les axes cartésiens. Ensuite, la séquence d'allumage commence à partir du bas à gauche et suit la’ augmentation et, jusqu'à concurrence du maximum du numéro d'une colonne. dessous, se déplace vers la colonne suivante. Voir tableau ci-dessous, montrant ce que la séquence d'allumage. A partir de numéro un.

LED pour l'orientation

6

12

18

24

5

11

17

23

4

10

16

22

3

9

15

21

2

8

14

20

1

7

13

19

PCB

Pour simplifier le développement, J'ai organisé une seule face, qui prévoit le raccordement de chaque anode et la cathode. La carte prévoit déjà une expansion de la matrice par 6×6. La figure ci-dessous montre la disposition de la carte. Je quitté l'espace entre anode et cathode de chaque diode, pour permettre d'autres pistes. Malheureusement, il y a des ponts pour passer, étant donné que le routage n'a pas été possible de les réduire.


Il faut noter que les cathodes sont dirigées vers les résistances qui vont tous’ Arduino, tandis que les anodes sont connectées aux collecteurs des transistors. Ainsi, nous voyons le schéma de câblage.

Schéma de câblage

Notez que la’ Arduino peut être placé sur des connecteurs. Je recommande cette façon, afin de l'extraire en cas de reprogrammation.

Dans tous les cas Vous pouvez voir les détails téléchargement paquet qui contient aussi des croquis[*] être chargé sur’ Arduino.

[*] Une esquisse a la période que les LED ne sont allumés et commence à atteindre le nombre maximum de LED. Ceci est appelé matrix_single_time.ino.
la deuxième, matrix_multiple_time.ino, Il fonctionne que chaque LED a une période distincte et se termine avec le temps imparti (TEMPS LIBRE). Aussi, si toutes les lumières saranpas brûler, etARR réinitialiser la durée de la LED quiVRA la plus longue période.
Une note matrix_multiple_time.ino, commence à compter à partir de la position 24 tout’ en arrière.
Il existe également une version qui utilise un MAX7219 avec sa bibliothèque, qui peut gérer jusqu'à 64 lumières. Mais ce n'est pas présent dans l'emballage.

le fonctionnement du programme

Le programme permet une certaine personnalisation, qui sont énumérés dans ses premières lignes. Mis à part cela auquel il est actuellement désigné peut prendre la’ Arduino et mettre en œuvre une matrice 8 lignes à 6 colonne, avec seulement deux lignes de correction. Nous voyons en détail.

la ligne 5 #définir DEBUG définit si pour compiler avec la série connecté pour le débogage (Une fois que vous essayez le circuit, meilleur commentaire sur la ligne). dessous, dans l'esquisse, les lignes 23 e 24 vous pouvez définir les pieds assigner à utiliser avec la série. Il faut une interface TTL USB-RS232 comme indiqué. Ainsi, vous pouvez vous connecter aux jambes encore disponibles selon la façon dont vous voulez assign.

la ligne 12 #définir INBTN A0, nous permet d'insérer les’ entrée que vous souhaitez utiliser pour activer le compte. Au moins pour ce projet est prévu dans le circuit imprimé un bloc de fixation à vis, pour relier le bouton. Mais pour une autre utilisation est la possibilité d'attribuer un nouveau poste. Sauf ceux’ Arduino sont numérotés 0 une 13, dont ils sont ceux qui sont utilisés pour pousser la matrice de diodes électroluminescentes.

la ligne 13 #définir TMPRESS 20, sert à définir la période pendant laquelle’ entrée doit rester faible pour être validé. Vous devrez peut-être la’ ajustement pour définir la sensibilité. La valeur est en 2,5 millisecondes. Cela correspond à la période de mise à jour des LED.

la ligne 14 #définir TIMEOUT 7200, Elle établit combien de temps ils restent tous les voyants allumés, une fois qui a atteint le nombre maximum de mises en chantier. La mesure est en secondes, pour ainsi il, il a été considéré comme une période de deux heures. Dans la fonction compte à rebours le retard est 998 millisecondes, que vous devrez peut-être ajusté pour avoir la bonne période.

les lignes 15 e 16 définir le nombre de colonnes numcols et le nombre de lignes nbreLignes que pour le projet sont 4 e 6 respectivement.

à ce qui suit 3 lignes est calculé par les paramètres du programme, en fonction des valeurs définies pour les lignes et les colonnes, au-dessus. (Il changent également une utilisation différente du programme).

A la ligne 20 #définir NUMBLINKS 8, Il peut varier le nombre de fois avant clignotantes de rester allumé la LED. Veillez à ce que ne peut être un nombre pair, phrase extrémités du comte avec sa LED éteinte.

la ligne 21 #définir COMMON_ANODE, nous permet d « choisir d'utiliser des niveaux élevés ou faibles pour les sorties des lignes. Pour ce cas, vous vouliez interposer le transistor tampon oucircuits Ppur intégré ULN2804, Cela vous permet de modifier les sorties de compilation et inverse.
Si l'on voulait que les hautes sorties actives, tout commentaire la ligne,
putting //.

Le même vaut également pour la ligne 22 #définir COL_ACTIVE_LOW, Il nous permet d'inverser les sorties de la logique pour les colonnes. Je me mis à piloter le 2N2907A, donc ils avaient besoin actif bas.

la ligne 25 #définir INTERVALLE 2500, Il est celui qui détermine la fréquence de rafraîchissement de la matrice et le balayage des colonnes. La période en microsecondes. En fait ici la fonction est appelée rafraîchir chaque 2,5 millisecondes. Vous pouvez régler, l'augmentation de la valeur, de réduire légèrement la luminosité des LEDs, mais il risque de fuite » d dans un scintillement gênant. J'ai essayé avec 5 millisecondes et n'a pas de scintillement. La réduction pourrait compromettre davantage la performance des autres tâches de’ Arduino.

Pour le reste, vous pouvez également adapter le programme à conduire un affichage numérique 7 segments, avec jusqu'à 6 chiffres. Ou une matrice 8×6 colonne. Voilà pourquoi le programme est un engagement à l'enseignement, apprendre quelques astuces de programmation. Un détail à noter est d'utiliser une routine d'interruption pour être en mesure d'avoir la’ Mise à jour de LED lumineux.
Comme quand je pris les revues électroniques, presque je ne copiait l'ensemble du projet, Je me suis intéressé à obtenir des idées pour mes idées.

des tests visuels

Il ne pouvait pas manquer épreuve du feu.

avec’ intention qui peut servir la communauté, avoir du plaisir.

11 réponses
  1. Et Tel
    Et Tel dit :

    Bonjour,
    J'ai réussi à faire fonctionner le circuit matrix_single. J'ai du mal à faire fonctionner le MAX7219. J'ai une épingle 2 comme entrée et broche DATAIN 5, Broche CLK 3 ,Goupille de charge 4, GND et 5V. Est-ce que je manque quelque chose ?
    J'ai aussi une question pour toi , le même concept peut-il être appliqué à l'utilisation de fastLED.h et WS2812B ?
    Merci

    • Picmicro675
      Picmicro675 dit :

      Le dernier croquis devrait fonctionner pour le MAX 7219. J'ai répété la compilation et elle se compile très bien. J'ai testé le croquis uniquement avec le simulateur.
      Pour WS2812B, c'est une histoire plutôt différente, mais le style pour avoir cet effet reste le même. Vous devez maintenir les tableaux pour mémoriser chaque vie de LED. J'ai écrit même pour ça une source pour un PIC12F1822 / 40, en proton basique, mais il suit un style différent.

      • Et Tel
        Et Tel dit :

        salut, Merci pour votre réponse rapide. J'ai encore du mal à faire fonctionner le MAX7219. J'utilise le module d'affichage du module LED du microcontrôleur du module à matrice de points MAX7219 comme test. Aucune suggestion ?

        • Picmicro675
          Picmicro675 dit :

          Vous devez fournir quelques détails sur votre assemblage afin de commenter et de vérifier que vous n’avez pas été oublié.
          En utilisant Arduino, vous pouvez utiliser la bibliothèque spécifique comme le propose le croquis et connecter les broches comme écrit dans ce croquis. Je ne sais pas si cela fonctionnera correctement Je n'ai actuellement ni le matériel ni le temps de prouver mon croquis.
          Je vous suggère d'ouvrir une nouvelle discussion sur votre fabrication.

    • Picmicro675
      Picmicro675 dit :

      Je suis heureux que vous soyez intéressé par mon projet. Donc pour le 8×8 schémas c'était juste un peu de copier-coller pour ajouter deux colonnes supplémentaires. Je ne suis pas entré dans l'esquisse et la disposition du PCB. Alors tu devrais essayer un peu de toi. Au cas où vous seriez dans un tas de difficultés, je vais développer quelque chose pour vous. Actuellement pour réviser ce projet en 8×8 layout J'ai eu quelques développements avec le MAX7219. Cela devrait déjà être inclus depuis la publication.
      Le 8×8 vous pouvez le trouver ici Télécharger.

      • Et Tel
        Et Tel dit :

        Merci beaucoup pour votre réponse très appréciée. Je vais d'abord essayer avec 24 LED la progression vers 64. Je n'ai pas pu accéder au lien de téléchargement fourni pour le 8 X 8 disposition.
        Pour utiliser le 8 X 8 quelles broches supplémentaires sur Arduino sont disponibles. J'aimerais aussi ajouter 2 X 8 Affichage LCD, des idées?

        • Picmicro675
          Picmicro675 dit :

          Désolé pour le lien incorrect, J'ai quelque chose de désordonné en cours de route. Maintenant est corrigé. Vous trouverez le schémas.
          Quoi qu'il en soit, vous pouvez résoudre le cas et utiliser tout le PORTD pour traiter plus de colonnes. Mais comme je l'ai dit, vous pouvez opter et utiliser un CD4028 pour convertir l'adressage en utilisant uniquement 3 morceaux.
          Ici l'esquisse MAX7219, la dernière version.

          Désolé pour les commentaires en italien.

          • Et Tel
            Et Tel dit :

            Merci pour votre temps et votre patience. Votre connaissance approfondie de ce sujet est tout simplement incroyable. J'ai commandé les pièces et j'essaierai la configuration pendant le week-end et vous informerai du résultat. La configuration du MAX7129 est moins compliquée que les circuits de commande de transistor.

  2. Picmicro675
    Picmicro675 dit :

    En fait, je l'ai encore adopté la méthode d'utilisation d'un double affichage 7 segments dans un autre projet.
    Le projet est une minuterie qui n'a pas été prouvée, mais la simulation oui. Dois-je obtenir un moment pour le mettre à l'épreuve.
    En fait, il utilise tous PORTC pour écrire un octet. Avec le 7 segments, mieux si vous utilisez un tableau de données qui représentent les symboles à afficher.

  3. Amilcare
    Amilcare dit :

    Non, je doute que j'aimé l'idée et encore plus apprécié la simplicité de mise en œuvre. Je vole l'idée en tant que point de départ pour d'autres usages, mais pour le moment je suis occupé avec mon Charlieplexing va étudier l'avenir vient de terminer un en cours.

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire