Go Down

Topic: Besoin de conseils pour faire mon programme et mon circuit (Read 4950 times) previous topic - next topic

bestel

Bonjour tout le monde.

Je travaille actuellement sur un projet à base d'arduino uno pour piloter des afficheurs 7 segments et une matrice de leds, mais comme je n'ai aucune formation en électronique (il me reste juste quelques lointains souvenirs de mes cours de physique à l'école, mais à part la loi d'ohm, il ne restait pas grand chose  :(), je me débrouille en cherchant sur le net à chaque nouveau problème que je rencontre.

J'aurais besoin de vos conseils sur 2 points : la façon de controler la matrice, et la conception de mon circuit.

Déjà pour présenter mon projet, la fonctionnalité principale est de faire un système permettant de gérer les temps de tir lors de compétitions de tir à l'arc.

Il y aura donc 5 afficheurs 7 segments (3 pour le chrono, et 2 pour indiquer quels archers doivent tirer), et une matrice de 24*8 leds, mais qui seront utilisées par "blocs" de 8*8, pour en fait faire un feu tricolore.

Pour le moment, j'ai donc 8 74hc595 pour controler les afficheurs, et les colonnes de ma matrice, et un 4017 pour les lignes de la matrice.

J'envoie la commande shiftout sur le premier 74hc controlant un afficheur, et ceux controlant ma matrice sont "en bout de chaine".

Ma première question est donc de savoir, puisque ma matrice ne doit m'afficher que des pavés de 8*8, comment coder cela le plus simplement possible. Il existe des centaines d'exemples de controles de matrice sur le net, et j'ai vu que le controle du 4017 est synchronisé dans des boucles avec l'envoi de valeurs aux 74hc. Mais dans mon cas, les 74hc ne recevront de nouvelles valeurs que toutes les secondes ... donc est ce qu'il est possible que le 4017 soit commandé indépendamment de ce que j'envoie aux 74hc ?

Ma deuxième question, est concernant une évolution future du système (c'est pas pour demain mais j'aime autant le prévoir tout de suite). J'envisage d'utiliser exactement le même circuit, mais d'ajouter en plus de la fonctionnalité de base la possibilité d'afficher l'heure sur les 7 segments et utiliser la matrice comme "vraie" matrice de texte défilant. Dans ce cas, est-ce qu'il vaut mieux laisser les 74hc tous chainés ensemble (et si oui, est-ce qu'il vaut mieux que la matrice soit en début, ou en bout de chaine des 74hc), ou est-ce qu'il faut que je sépare ceux des afficheurs et de la matrice ?

J'espère que j'ai été assez clair dans mes explications, si vous avez besoin de précisions, n'hésitez pas à me demander.

Merci d'avance de vos réponses.

A+

68tjs

Archer je te salue.
Une solution simple tu défini dans un tableau de 10 lignes les segments à allumer
ex chiffre[4] = 0b10100101  // c'est écrit au pif mais c'est pour le principe.
Pour ces affectation j'aime bien l'écriture binaire c'est visuel.

Pour afficher le chiffre "4" sur un 7 segment il suffit d'utiliser la fonction arduino shiftout  et d'envoyer chiffre[4] dans un registre à décalage.     ---> voir la "Référence Arduino"
Il faut 1 registre à décalage 8 bits par afficheur pas besoin d'autres composants et mettre les bonnes résistances en série avec les segments et les sorties du registre à décalage   -> calcul de courant dans une led classique.

Important il faut utiliser un registre à décalage avec latch :
- cela évite les états intermédiaires
- cela permet de rythmer exactement le défilement des secondes.

Gestion registre par registre ou registres chainés :
Un registre demande 3 signaux : data, horloge et latch.
Registres chaînés : 3 signaux quelquesoit le nombre de registres.
Registre indépendants : 3 signaux PAR registre , éventuellement le latch peut être commun.
A toi de voir combien il te reste d'I/O de disponibles. Perso je choisirais des registres chainés même s'il faut renvoyer l'ensemble des bits a chaque actualisation car les I/O viennent vite à se faire rares : tu as la télécommande de l'arbitre à gérer, l'affichage AB/CD ABC etc.....

Quote
mais à part la loi d'ohm, il ne restait pas grand chose

Déjà si tous les débutants la connaissait cela serait bien.  :smiley-mr-green:
Je te conseille de commencer petit pour te faire la main, ce ne sont pas les problèmes qui vont manquer tu ne risque pas de t'ennuyer.
Essaye déjà d'avoir une première maquette fonctionnelle capable de décompter les première 30 s puis les 120 s ou 240 s de tir ainsi qu' AB/CD ; ABC.
Ensuite il faudra une maquette pour la télécommande de l'arbitre et que les deux maquettes dialoguent.
Quand tout sera fonctionnel tu pourra envisager quelque chose de plus évolué et notement changer les afficheurs 7 segments par un véritable affichage visible à au moins 20 m en salle et à 70m face au soleil pour l'extérieur -> beau défit.

bestel

Ami archer, je te salue également  ;)

C'est vrai que je n'ai pas donné beaucoup de détails, mais j'avais commencé avec juste l'arduino et un shield lcd pour faire toute la partie paramétrage, et ensuite mis qq leds sur une breadboard.

J'en suis maintenant dans une phase "maquette", ou j'ai déjà des afficheurs 7 segments et une version "light" de la matrice (juste les leds 'extérieures' de chacun de mes blocs 8*8 ).

J'avais mis un post sur le forum integralsport il y a qq mois (http://www.integralsport.com/viewtopic.php?t=29316), j'en posterais un nouveau lorsque cette maquette fonctionnera correctement.

Tout fonctionne concernant la partie gestion et affichage du temps, de la rotation des archers, etc ... il ne manque que la gestion du 4017 car pour l'instant il est câblé mais non géré, et il fait donc un peu comme il a envie ... des fois une ligne en haut, des fois en bas ...  :P

Puisque tu connais le sujet, le but n'est pas de concurrencer les valises chronotir, mais de permettre à chaque club de se fabriquer son système pour pouvoir s'entrainer en conditions "réelles", voir de gérer de petits concours ... mais pas plus.

En tout cas merci de ta réponse, peut etre à un de ces jours sur les pas de tirs  :smiley-mr-green:

68tjs

Tu as prévu une télécommande ?

Et je n'ai pas compris l'utilité du 4017.

bestel

Pour l'instant je n'ai pas prévu de télécommande.

Tout se fait par les boutons de mon shield, mais je n'utilise pas tous les ports de l'arduino, je pourrais donc en ajouter une par la suite.

Le 4017 sert a gérer les lignes de la matrice pour le feu tricolore.

Je fais la matrice à cathodes communes, il met séquentiellement au 0V la cathode de chaque ligne en synchro avec les 74hc qui eux n'alimentent que les leds à allumer sur la ligne en cours.

lve123

Bonjour
Une suggestion pour simplifier le câblage (et ce n'est qu'une suggestion) pourquoi ne pas utiliser des matrices identiques pour afficher les scores et  le numéro du tireur et le feux d'artifice ?
A+

68tjs


Bonjour
Une suggestion pour simplifier le câblage (et ce n'est qu'une suggestion) pourquoi ne pas utiliser des matrices identiques pour afficher les scores et  le numéro du tireur et le feux d'artifice ?

Petite introduction pour les "étrangers"   :smiley-mr-green:
Temps : Une séquence de tir dure 120s (3 flèches) ou 240s (6 flèches). On affiche le temps restant pour les tireurs.

Pavés de couleur :
rouge --> tir interdit.
orange --> tir autorisé mais  il ne reste plus que 30 s ou moins.
vert  --> tir autorisé.

AB /CD  -> en salle (tir à 18m) une "butte de tir" comprend 4 "blasons" de 40cm x 40 cm, 4 tireurs  tirernt sur la même butte.
Dans un gymnase on peut mettre  entre 10 et 14 buttes..
Mais comme dans un gymnase il n'y a pas beaucoup de place  seulement 2 tireurs peuvent tirer simmultanément sur la même butte.  Les 2 blasons du haut sont pour les tireurs A et B, les 2 blasons du bas sont pour les tireurs C et D.

En extérieur tir à 50m ou 70m les tireurs se partagent le même blason qui fait 120cm x 120cm. Comme on tire sur des terrains de foot ou de Rugby il y a de la place et 3 tireurs peuvent tirer simmultanément sur la même butte d'où le mode "ABC", le mode AB/CD est aussi pratiqué en extérieur.



@bestel
Peut-tu être plus explicite sur ce qui te pose problème parce que même moi qui connait le matériel que tu veux cloner je n'arrive pas bien à y voir clair.

"AB", "CD" ou "ABC"  ne sont que des lettres à afficher il ne me semble pas qu'une matrice compléte soit nécessaire, quelques leds bien disposées devraient suffire. De plus si tu ne compte utiliser ce feu de tir qu'en salle je pense que le cas "ABC" est inutile.
Les lettres "A" et "C" n'ont pas beaucoup de points commun mais entre "B" et "D" il n'y a que peu de leds à allumer ou à éteindre.

Les pavés Rouge, Orange et Vert ne sont que trois  paquets de leds  à activer 1 par un, il ne devrait pas y avoir de difficultés.
A la limite avec des diodes bicolores Rouge/Vert un seul pavé suffit : l'orange étant obtenu en activant simmultanément le rouge et le vert   ----> pour que ce soit possible il faut des diodes à 3 pattes !


Le compteur lui est formé de chiffres donc on reste en 7 segments. Mais qu'elle est la taille que tu veux donner aux chiffres.
L'afficheur de tableau est trop petit, il reste la taille officielle FFTA ou une taille intermédiaire.
Quelle que soit la solution choisie je ne pense pas qu'on puisse trouver des segments tout faits.
Un segment n'est jamais qu'une suite de leds un peu puissante (ou une double rangée )  alimentées soit en série soit en série//parrallele.
Ce ne devrait être pas trop compliqué d'en réaliser, du moins coté électronique, coté mécanique c'est à voir.

bestel

Salut.

Tu fais bien d'expliquer le principe de nos compétitions pour que tout le monde comprenne, sinon ça risquait de finir dans une discussion entre initiés ou personne d'autre n'aurait pu s'imiscer.

Quand je me suis lancé dans ce projet, c'était plus pour le fun et pour un défi personnel, j'ai donc eu envie de gérer à la fois des afficheurs, et une matrice (en ayant déjà dans l'idée de pouvoir l'utiliser comme un journal lumineux), d'ou le mix de ces deux types de matériel (pour l'instant l'affichage AB/CD est fait sur les afficheurs 7 segments).

Pour ce qui est de la taille des afficheurs, j'en ai acheté un de 10cm de haut pour tester le rendu visuel en conditions réelles, mais mon choix n'est pas encore arrêté. Je vais déjà faire en sorte que ma maquette fonctionne, je me pencherais sur cette question par la suite.

Pour en revenir au 4017, comme à l'origine je regardais les tutos expliquant comment faire des matrices, je me suis basé sur celui ci http://www.instructables.com/id/Make-a-giant-LED-sign/#intro pour l'élaboration du circuit, ou les colonnes de leds sont donc gérées par les 74hc, et les lignes par le 4017. Le code fourni est prévu pour une utilisation en texte défilant, je ne veux donc pas l'utiliser tel quel (la priorité reste une utilisation type chronotir), d'ou ma première question sur la simplification du code pour la gestion du 4017 :
Dans son code, le controle de l'entrée clock du 4017 est imbriquée dans une série de for qui, si j'ai bien compris, envoient aux 74hc les sorties à activer pour allumer les leds, ligne par ligne. Les 74hc et le 4017 sont donc synchronisés pour que le symbole choisi s'affiche correctement.

Dans mon cas, c'est une fonction appellée toutes les secondes qui se charge de renvoyer les valeurs aux 74hc, je ne peux donc pas commander le 4017 aussi peu souvent, donc je me demandais à quel endroit dans mon code je peux mettre les lignes           digitalWrite(clock,HIGH); et digitalWrite(clock,LOW); ?
Est-ce que je peux les mettre au début de ma boucle loop ? ou est-ce que ça le mettra à jour trop souvent ? est-ce qu'il faut que je fasse une fonction spécifique qui le mettra à jour toutes les x millisecondes ?

Voilà, j'espère que je me suis mieux fait comprendre ?  ;)

A+

Carolyne

Salut les Guillaume Tell, Si vous voulez faire un afficheur géant: En perçant des trous au diamètre des diodes dans du polystirène extrudé de 40 (traçage et perçage par la face avant); et en faisant des départs aux diodes en fil rigide, ce qui permets, en faisant de "S" avec le fil de coiiincer la diode et même de la faire un peu dépasser de la surface; avec un coup de noir mat sur le panneau. Et ban, ça va bien. (faire des essais de perçage sur des chutes et un avant-trou.)
Bricoli...Bricola trois p'tits tours et puis s'en va...

68tjs

Comment construit tu la fréquence 1 Hz ?
Si c'est avec un timer il en reste 2 autres de disponibles.

C'est un peu jeu de devinettes ton truc, nous n'avons pas de boule de cristal alors si tu publiais ton code (ente balise code "#" voir l'article de Jean-François) tu obtiendrais plus de réponcesqualifiées.
Ici tout se passe au grand jour.

bestel

Salut.

Pour le 1hz, en fait je mémorise la valeur millis, et je met à jour quand je suis à ma valeur mémorisée + 1000.

Ce n'est peut etre pas le moyen le plus fiable de mesurer le temps, mais avant ton dernier message, je n'avais pas encore entendu parler des timers de l'arduino.

J'ai trouvé pourquoi mon 4017 n'en faisait qu'à sa tête ... j'ai honte de le dire, mais grosse erreur de débutant ... je me suis un peu mélangé les pinceaux dans mes pistes, et donc le clock était pas câblé sur la bonne pin de l'arduino !!!!! il était mis sur une pin utilisée par le shield lcd !

Du coup je l'ai recâblé comme il faut, et je me suis penché sur les timers. J'en ai donc utilisé un pour rafraichir le 4017 indépendament de ce que fait mon code, et ça marche très bien.

Je vais mettre au propre mon code, vérifier mes commentaires, et posterais ensuite dans la section Réalisations et projets finis.

En tout cas merci de vos réponses  ;)

Go Up