je suis fan d'horloge, et je fabrique pour des amis, des trucs personnalisé, enfin, je me demande (pour un but de personnalisation si je peux remplacer un classique afficheur 7 segments par un autres 13 segments de ce type :
je viens de l'inventer ... chercher pas ... ca n'existe pas dans le commerce ...
je pense que je doit modifier dans mon code cette partie :
//Digits Matrix - 0 a 9
byte num[] = {
B01111110, // Zero
B00110000, // One
B01101101, // Two
B01111001, // Three
B00110011, // Four
B01011011, // Five
B01011111, // Six
B01110000, // Seven
B01111111, // Eight
B01111011, // Nine
};
Je vais pas vraiment répondre à ta question mais j'ai déjà vu des afficheurs 16 segments où tu as une flèche vers le haut et une vers le bas.
J'ai pas mon ordi sous la main pour te faire un schéma mais je ne sais pas si tu vois. Mais en tout cas tu pouvais afficher toutes les lettres de l'alphabet en minuscule majuscule et tout les chiffres.
oué je connais ... mais trop compliquer a a fabriquer soit même ... en + j'ai pas besoin d'afficher des lettres ... donc au final j'ai juste besoin de 13 segments ...
je suis fan d'horloge, et je fabrique pour des amis, des trucs personnalisé, enfin, je me demande (pour un but de personnalisation si je peux remplacer un classique afficheur 7 segments par un autres 13 segments de ce type :
je viens de l'inventer ... chercher pas ... ca n'existe pas dans le commerce ...
je pense que je doit modifier dans mon code cette partie :
//Digits Matrix - 0 a 9
byte num[] = {
B01111110, // Zero
B00110000, // One
B01101101, // Two
B01111001, // Three
B00110011, // Four
B01011011, // Five
B01011111, // Six
B01110000, // Seven
B01111111, // Eight
B01111011, // Nine
};
mais pas seulement ...
c'est possible ?
Merci
bonjour
un afficheur c'est simplement un arrangement de led
par simplicité le choix est souvent de travailler en cathodes ou anodes communes pour faire du multiplexage.
dans ton cas il faut travailler sur 13 bits au lieu de 7 (ou 8 si le point est utilisé)
un byte (8 bits) ne suffit plus à la declaration , il faut passer pour confort à une déclaration de 16 bits
Artouste:
bonjour
un afficheur c'est simplement un arrangement de led
par simplicité le choix est souvent de travailler en cathodes ou anodes communes pour faire du multiplexage.
dans ton cas il faut travailler sur 13 bits au lieu de 7 (ou 8 si le point est utilisé)
un byte (8 bits) ne suffit plus à la declaration , il faut passer pour confort à une déclaration de 16 bits
Artouste:
bonjour
un afficheur c'est simplement un arrangement de led
Bonjour;
Oui c'est vrai, c'est un arrangement de led (ou de segments). Existe t'il une solution pour arranger (ou créer) soi même autant de segments que l'on veut (dans des tailles raisonnables).
le problème c'est plus compliquer .. je contrôle actuellement l'affichage de mon horloge (4 digits multiplexé) via deux 74HC595 ... les modifications risque d’être interminable !
non ?
Déjà il faut definir le poids binaire de chaque segment et donc affecter arbitrairement ce poids.
ensuite definir les pins de sorties de ton MCU correpondant à chaque segment (tu veux utiliser quoi comme arduino ?)
avec l'exemple choisi arbitrairement pour l'exemple et pour
afficher le 0 , le code binaire arbitraire pourrait etre 0000000011111111
afficher le 1 , le code binaire arbitraire pourrait etre 0000101100000000
Artouste:
...
avec l'exemple choisi arbitrairement pour l'exemple et pour
afficher le 0 , le code binaire arbitraire pourrait etre 0000000011111111
afficher le 1 , le code binaire arbitraire pourrait etre 0000101100000000
bon ...
supposons que je reste sur votre proposition et éliminons cet "arbitraire" .. ceci implique :
//Digits Matrix - 0 a 9
byte num[] = {
B1111111100000, // Zero
B0000110011010, // One
B0110111010101, // Two
B1111110000100, // Three
B0011000100101, // Four
...
};
c'est pas ce que vous proposer ... je place normalement un 1 pour un digit allumé non ? ... je place le B au début ??
esloch:
le problème c'est plus compliquer .. je contrôle actuellement l'affichage de mon horloge (4 digits multiplexé) via deux 74HC595 ... les modifications risque d’être interminable !
non ?
Pas vraiment interminables. Au pire il suffit d'ajouter un registre à décalage et tu gagnes 8 bits supplémentaires.
Il faut 1 HC595 de plus pour faire les 16 bits nécessaires aux 13 segments.
Remarques:
-vous voulez un 1 spécial avec 3 segments parmi les 13 qui ne serviront qu'à ce 1 et qui seront activés en même temps (que pour ce 1), es 3 ne font donc qu'un.
les 2 segments horizontaux du haut fonctionnent toujours en même temps, ils ne font donc qu'un.
Idem pour les 2 segments horizontaux du bas et du milieu.
-Vous avez un code pour le point, si vous n'utilisez pas le point il peut être affecté par exemple au 3 segments que vous avez inventé pour le 1.
Résultat, si je ne dis pas de bêtise, votre 13 segments ne fait en fait qu'un 7 ré arrangés.
jeanfranlec:
Il faut 1 HC595 de plus pour faire les 16 bits nécessaires aux 13 segments.
Remarques:
-vous voulez un 1 spécial avec 3 segments parmi les 13 qui ne serviront qu'à ce 1 et qui seront activés en même temps (que pour ce 1), es 3 ne font donc qu'un.
les 2 segments horizontaux du haut fonctionnent toujours en même temps, ils ne font donc qu'un.
Idem pour les 2 segments horizontaux du bas et du milieu.
-Vous avez un code pour le point, si vous n'utilisez pas le point il peut être affecté par exemple au 3 segments que vous avez inventé pour le 1.
Résultat, si je ne dis pas de bêtise, votre 13 segments ne fait en fait qu'un 7 ré arrangés.
bien vu jeanfranlec ... bravo ... mais j'ai pas tous dit :-[ ... mon horloge qui affiche aussi la température et l’humidité ... donc j'ai besoin d'afficher aussi un °C et un %
donc finalement ... la solution d'ajout d'un autres HC595 je pense est mieux adapter ... enfin si j'arrive à le faire ...
Edit : je pense que je dois suivre ce tutorial ... non ?
Tu choisi judicieusement de faire du multiplexage car tu gére en réalité (d'aprés ce que j'ai vu de tes réalisations) 4 afficheurs x segments.
Donc tu a besoin de 4 bits pour adresser tes 4 afficheurs.
Alors, dans la théorie, si tu souhaite 4 afficheurs 13 segments, c'est bien 3 HC595 qu'il faut en serie car il te faut
13 bits pour choisir le segments de l'afficheur
4 bits pour choisir l'afficheur
= 17 bits
Soit 3 registres (HC595) de 8 bits
Aprés, pour le codage je ne suis pas assez caler pour te dire comment remplir tes registres bit à bit (SoS J-M-L?)
J'aime bien l'expression "Ce n'est pas faux", et je dirais que ton schéma n'est pas faux.
En tout cas pour les pins 9 et 14 c'est OK
Après c'est toi qui vois comment tu désire arranger tes "mots" au niveau de ton codage.
Il faudra de toute façon que tu remplisse tes registres avec 3x8 = 24 bits alors que n'a besoin que de 13+4 = 17 bits.
Arranger tes mots veux décrit, pour moi, comment tu gère les vides, c'est à dire les bits qui ne te servent pas, ou les mets tu?
Au début, à la fin, un peu partout?
C'est juste pour te faciliter le travail au niveau de la compréhension du code.
Je reprends, si tu a un mot de 17 bits, tu eux imaginer, pour la facilité de ton code, et pour coller aussi avec le hard tout de même que tu remplisse tes regisytres de cette façon
a b c d e f g h - i j k l m 0 0 0 - A1 A2 A3 A4 0 0 0 0 = 3 mots de 8 bits pour décrire l'états de tes segments et de ton multiplexage.
Tu remplace les lettre par l'état 0 ou 1 selon que tu veuille activer ton segment ou afficheur
Tu peux imaginer toutes sortes d'autres arrangements plus ou moins judicieux.
La sortie Qa inutilisée des registres est éventuellement discutable. Pour la position des 4 anodes, le plus simple est de les laisser comme elles étaient dans la version précédente ainsi on limite l'impact sur la librairie.