Bonjour, je souhaite créer un grand afficheur 7 segments avec 84 leds WS2812B. Soit 12 leds par segments.
Toutes les leds sont reliés par un fil de données (DI, DO).
Ce sont des leds WS2812B-5050 5V 12mA. 5mm x 5mm.
Donc, si j'allume toutes les leds blanches, ce qui fait une consommation 12x3x84 = 3024mA, soit 3 A.
Ma question est est-ce qu'avec la bibliothèque Fastled, je peux allumer et éteindre un segment un par un plutôt que d'allumer tous les segments (84 leds) afin de réduire la consommation ?
C'est à dire plutôt que d'allumer les 84 leds en même temps, j'allume 12 leds, puis 12 autres leds très rapidement ?
Est-ce que le fait d'allumer seulement 12 leds blanches sur 84, la consommation est réduite ?
Salut
Par défaut, la luminosité est maximale : 255.
Mais si tu jettes un oeil de plus près à cette librairie, tu constateras que la classe CFastLED possède une méthode setBrightness().
A pars le caractère 8, tu n'allumera pas tous tes segments ?
Hors mi que la meilleur solution est d'utiliser la fonction cité par @hbachetti.
De la même façon que tu sélectionne les segments que tu allume en fonction du caractère que tu veux afficher, tu pourrais définir une sorte d'animation d'allumage de tes segments a une fréquence indétectable par l'œil humain(supérieur à 30 état par second).
C'est ça, une sorte de perception rétinienne. Si j'allume segment par segment d'un chiffre "8" très rapidement, je réduit considérablement ma consommation. C'est l'objectif.
Normalement je peux le faire avec la bibliothèque Fastled ?
Sinon oui, la solution d'au dessus pour la luminosité je le savais mais pour faire un tableau de score je dois afficher mes leds avec une bonne luminosité.
Je ne connais pas le code de la librairie, mes ce que tu veux faire c'est justement la fonction setBrightness
En tout cas, c'est comme ça que je l'aurais codé en soft.
l'avantage justement de la fonction, c'est que au lieu d'avoir un multiple de 8 en fonction de la fréquence de rafraichissement, tu peux choisir exactement le niveau de luminosité.
Le driver intégré dans chaque WS2812B sait gérer la luminosité des LEDs donc le courant consommé. Ce sera sans doute plus efficace de passer par cette fonction intégrée que de faire clignoter à haute fréquence les segments
Mais je ne vois pas en quoi la luminosité va diminuer en fonction du temps d'allumage ?
Le multiplexage consiste à allumer chaque led le plus rapidement possible sans jouer sur la luminosité ?
Je ne veux pas utiliser la fonction setbrightness car cela réduirait la luminosité de mes leds.
Quelle est la luminosité perçue d.une LED éteinte ?
La persistance rétinienne fait que vous voyez la led allumée mais moins brillante que si elle était allumée en permanence avec la même brillance. Si vous allumez les LEDs une fois sur 8 elles seront 8 fois moins brillantes
Bien sur que réduire de temps d'allumage va réduire la luminosité apparente. Sinon en poussant les choses il suffirait d'allumer une ampoule 1µS toutes le 10 ms pour avoir une lumière quasi gratuite. C'est le principe de la commande des leds en PWM
Je ne sais pas de quelle façon est géré la luminosité des WS2812 mais je suis prêt à parier de c'est un PWM ce qui va donner le même résultat en luminosité qu'un multiplexage.
Est ce que tu as fait un essai avec les WS2812. A la luminosité maximale elles sont vraiment très lumineuses. Peut être qu'une luminosité moindre suffit.
Sinon je ne vois pas d'autre moyen que d'utiliser une alimentation adaptée.
Si tu multiplexes les segments d'un afficheur tu diminues (en gros) la puissance lumineuse dans un rapport 1:7. Donc, toujours en gros, si tu règles setBrightness() à 38 tu devrais diviser la consommation par 7 et avoir, environ, la même luminosité.
Maintenant, si tu fais un grand afficheur c'est sans doute pour qu'il soit lisible de loin donc il va falloir qu'il soit quand même assez lumineux, ne pas oublier que la puissance lumineuse est inversement proportionnelle au carré de la distance.
Personnellement, un afficheur de 20-30cm de hauteur qui consomme 3A ça ne me choque pas plus que ça.
Dans la mesure où la librairie permet de paramétrer la puissance des LEDs unitairement ou globalement (voir la doc de la librairie) le plus simple c'est de voir sur site ce que cela donne.
Ok parfait pour tous ces commentaires. Je prends note.
J'attends la fabrication de ma carte avec mes 84 leds que j'ai fais faire par une société chinoise.
Je ferais mes premières expériences dessus et je vous tiens au courant.
Sur 4 afficheurs de 7 segments, j'ai donc 4 x 7 = 28 segments. Un segment contient 12 leds RGB WS2812B. Soit 84 leds par afficheur.
Si j'allume toutes les leds blanches à fond (luminosité à 255) pour obtenir le chiffre 8888, j’obtiens une consommation max de : 20 mA x 3 couleurs x 336 leds = 20160 mA, soit 20 A.
Si j'allume un segment de 12 leds seulement sur le 1er afficheur, j'obtiens une consommation de 20mA x 3 couleurs x 12 leds = 720 mA.
Pour finir, si j'allume les 28 segments, segment par segment toutes les 10 ms, ma consommation reste toujours à 720 mA.
SEG1 ON ---> 10 ms ---> SEG1 OFF - SEG2 ON ---> 10 ms ---> SEG2 OFF SEG3 on ---> ... ---> SEG27 OFF - SEG28 ON
Est-ce correct jusque là ? est-ce possible avec cette bibliothèque ?
Je sais que la luminosité plus faible permet de réduire aussi la consommation, mais je ne saurais pas si le fait d'allumer partiellement quelques leds pleine puissance est mieux que de tout allumer et réduire la luminosité ?