Sonde température + Horloge/Chronométre

Walter
sam, 04/11/2020 - 19:42
Bonjour,
Bien que projet, soit un bien grand mots, pour mon petit montage, c'est je pense le meilleur endroit pour le poster.
Il s'agit donc d'un montage pour afficher la température ambiante, ainsi qu'une horloge(hh:mm) ou un chronomètre.
En fonction du mode, la température et l'heure/chrono est affiché alternativement toutes les 5s.
Il y a donc un afficheur composé de 4 afficheur 7 segments, une horloge temps réel, 3 boutons, une sonde dht11.
Le premier bouton permet de passer entre les 4 modes (°C/horloge, °C/chrono, changer heures, changer minutes).
Le deuxième bouton permet de démarrer le chrono, d'incrémenter les heures, d'incrémenter les minute suivant le mode.
Le troisième bouton permet de décrémenter les heures ou les minutes suivant le mode.
Le schéma:
Ortalain
dim, 04/12/2020 - 01:39
Intéressant Walter.
Anonyme
dim, 04/12/2020 - 08:40
Bonjour à quoi servent les cellules RC sur les BP ?
Puis j'ai essayé de compiler le code et je ne comprends pas pourquoi il y a au moins une dizaine de problèmes
Tu n'as aucun problème de compilation chez toi ?
Et pour finir pourquoi autant de complications pour un code qui pourrait être somme toute être beaucoup plus simple ?
Si tu pouvais expliquer la logique que tu as utilisée se serait vraiment intéressant.
Walter
dim, 04/12/2020 - 20:17
Ce n'est pas a proprement parler des cellules RC, car il n'y a pas de signal fréquentiel.
La résistance est là pour polariser l'entrée numérique associée au bouton et le condo pour éviter les rebonds.
Non je n'ai aucune erreur, uniquement des warnings pour m'avertir que l'ESP8266 gére les timer en milli-seconde et non en micro-seconde.
Si tu est obligé de changer la casse, c'est que ce n'est pas le bon fichier.
C'est un truc chiant avec Arduino, il y a tellement de librairie différente, qu'il faut préciser celle que l'on utiilisent.
j'utilise la librairie ds3231FS, uTimerLib, TM1637.
ts est définie dans ds3231.h, donc si tu n'utilise pas le même, cela peut expliquer que celui que tu utilise n'ai pas la bonne déclaration.
SI il y a des points a optimiser, je suis ouvert à toutes propositions.
Je ne sais pas trop par ou commencer.
Dans les deux premiers mode, je veux afficher en alternance la température et l'horloge, avec un changement toutes les 5s.
Pour la température rien de spécial, pour l'horloge je veux que le séparateur clignote toutes les secondes.
J'ai donc un timer répétitif qui se déclenche toutes les 500ms, cela pourrait du coup être 1000ms, mais au début, j'avais une LED à 2Hz.
Comme il s'agit d'une interruption, je me contente de mettre à jour les variables concernée, pour passer le moins de temps possible dans la fonction(blink).
Dans les deux autres modes, j'affiche l'horloge et fait clignoter les heures ou les minutes en fonction du mode, toujours avec le même timer, donc en plus du séparateur.
Les trois boutons sont gérés par une intérruption et une fonction dédiée.
Quand l'un des boutons est relaché la fonction dédié est appelée, comme pour la fonction blink, uniquement la variable associé est modifiée, toujours pour passer le moins de temps possibles dans la fonction.
Surtout que l'on utilise une librairie dont on ne maitrise pas l'implémentation et le temps passé pour récupérer ou changer l'heure.
Je pense avoir décrit le principal, mais n'hésitez pas à me poser des questions, si j'ai oublié quelque chose.
hercule124
dim, 04/12/2020 - 09:30
Bonjour,
Bon boulot,
tu as un but précis derrière la tête , a quoi il va servir .
tu vas le connecter a un réseau ?
Walter
dim, 04/12/2020 - 20:22
Merci Hercule124, non rien de plus, c'est pour afficher la température à l'intérieur du caisson de mon imprimante 3D.
Comme cura estime très mal le temps d'impression, je voulais avoir en plus un chronomètre.
Du coup je ne pense pas le connecter au réseau, à la base je voulais utiliser des digispark(atiny85), mais je ne peux pas les programmer simplement avec mon PC.
Anonyme
lun, 04/13/2020 - 09:20
Pour ce qui est de ton code ceux ce sont pas quelques points qui sont à optimiser mais à le réécrire entièrement, je ne sais pas qui est à l'origine de ce code, mais je ne vois pas trop comment on aurait faire plus compliqué.
Je n'ai pas le temps pour l'instant de le faire, mais je voudrais juste te faire quelques remarques.
Tu prendras peut être mal ces critiques mais ce n'est pas pour te dénigrer, mais simplement pour te donner des pistes, il n'y a rien de méchant dans ces lignes.
Je pense que j'aurais un moment dans la journée pour réécrire un code plus adapté à ce que tu recherches. Mais dis moi c'est vraiment toi qui est à l'origine de ce code ?
Walter
lun, 04/13/2020 - 14:55
Salut,
Je ne comprend pas trop là question, c'est moi qui suis l'auteur, pourquoi?
1) Le principe est justement de passer un minimum de temps dans l'interruption et de ne surtout appeler aucune fonction d'une libraire dans l'interruption.
Effectivement je pourrais aussi lire l'état dans la fonction "loop", mais je pense que c'est dommage d'appeler une fonction qui sera inutile 99% du temps.
2) Cela me permet de gérer les différents état et "clignotement" et d'affichage, peut être que certaines variable son superflue( comme blinkInterval), mais je ne crois pas.
Après je n'ai pas cherché à réduire le nombre de variable.
3) De quel point vue, ergonomie ou rapidité de prise en compte?
4) Système c'est effectivement un peu fort, c'est juste un condensateur, c'est possible mais je ne voulais pas le faire par logiciel. En tout cas avec cette petite capa, je n'ai plus aucun problème.
5) Je n'ai pas évalué le temps d'exécution de chaque fonction, mais ce que tu dis m'intrigue, mon code perso étant très court, le temps passé est dans les print qui n'ont pas vocation à rester et les appels d'affichage et de gestions de l'heure.
Même si je sors les appels des librairies des fonctions, je n'ai pas l'impression que cela rendra mes boutons plus réactif.
Je vais faire des tests pour calculer la réactivité de mes boutons du coup et voir ce que je peux changer.
6) Pas de soucis, à chaque jour suffit ça tâche :)
Pourquoi veux tu que je le prenne mal, si je ne veux pas de remarque, je ne demanderais pas votre avis et conseil.
De plus tes remarques étant très constructives, c'est même un plaisir de les lires.
Anonyme
mar, 04/14/2020 - 08:27
Désolé, je suis un peux surbooké en ce moment.
Comme je n'ai pas le même afficheur que toi peux tu me décrire le fonctionnement exacte de ton projet.
Je ferais le code avec un LCD I2C en utilisant que 5 digits (dont un pour " : ", tu devras l'adapter à ton afficheur que je ne connais pas.
Walter
mar, 04/14/2020 - 16:41
Pas de soucis, mon programme étant pleinement fonctionnel, je n'ai pas d'urgence le concernant, c'est plus pour comparer les façon de voir les choses et de coder qui m'intéresse.
Pour reprendre ma description, le programme permet d'afficher l'heure, un chronomètre, la température ambiante en fonction du mode sélectionné.
Mode Off(0), l'affichage alterne toutes les 5s entre l'heure et la température ambiante.
Mode chrono(1), l'affichage alterne toutes les 5s entre le temps chronométré et la température ambiante.
Mode Heure(2), l'affichage alterne entre l'heure actuel(HH:MM) et (00:MM).
Mode Minute(3), l'affichage alterne entre l'heure actuel(HH:MM) et (HH:00)
quelque soit le mode le séparateur (:) clignote avec une fréquence de 1Hz
Le premier bouton permet de change de mode.
Le deuxième permet de réinitialiser le chrono ou augmenter les heures ou les minutes en fonctions du mode sélectionné.
Le troisième permet de diminuer les heures ou les minutes en fonctions du mode sélectionné.
Anonyme
mer, 04/15/2020 - 13:02
Voilà mon code, il fait 58 lignes de moins, je le trouve plus clair, mais c'est juste mon avis car en plus j'utilise au maximum le français " COCORICO ! " :o)
Tu remarqueras des astuces de programmeur pour ajouter ou soustraire une heure ou une minute à la pendule ! Dans beaucoup de cas la fonction modulo ( % ) fait gagner beaucoup de temps et de ligne de code !
Je me suis permis un changement en mode Chrono le BpMoins permet de remettre le compteur à 0 et BpPlus permet de retrouver le chrono Initial,
Comme je te l'ai annoncé j'utilise qu matériel différent :
Je ne trouve pas dans ce projet la nécessité d'utiliser les interruptions, je réserve ce genre de code à les besoin dévolutions aussi rapide de soudaines !
Si tu veux je peux te faire une vidéo et même commenter mon code.
Walter
mer, 04/15/2020 - 21:12
En premier lieu je tiens a te remercié pour le temps passé.
Je trouve mon code très lisible, mais comme c'est le mien forcement je ne suis pas objectif :)
Mais en tout cas le tien est très lisible.
Par habitude de partagé mon code avec des anglophones, je code ou commit en utilisant uniquement l'anglais, même la documentation :)
C'est vrai que je n'ai pas fait beaucoup d'effort pour réduire les lignes de codes, mais quitte à le publié je voulais aussi qu'il soit facilement réutilisable, lisible et commenté un minimum.
D'ailleurs même si j'ai dû en laisser quelques'un je n'ai pas voulu utiliser d'astuce de codeur, comme les if ternaires ou les modulos, masquage de bit, ....
Effectivement le projet ne nécessite pas des interruptions, après qui peu le plus peu le moins et du coup le code est directement réutilisable pour un projet plus complexe, donc pourquoi s'en privé, surtout que finalement cela ne rajoute pas une grosse complexité de codage.
J'ai tout le matos que tu utilise, donc desque j'ai le temps de refaire le montage, j'essaierais ton code.
Mais bon à la lecture, j'ai déjà une bonne idée de ce qu'il donne.
Et la simplicité du projet ne nécessite pas que tu me commente le code.
Merci encore a toi le temps passé, c'est toujours intéressant de comparer les différentes approche d'un programme.
Anonyme
jeu, 04/16/2020 - 08:56
Tu dis que tu code exclusivement en Anglais pour le partage avec des anglophones, mais pourquoi ne partages tu rien ici ? (même en Anglais) ou peut être peux-tu nous donner le lien du site sur lequel tu partage tes codes !
Pour ce qui est des interruptions tant qu'à les utiliser, il faut le faire avec plus d'efficacité je pense. Pourquoi lancer toutes les interruptions au début du code, alors qu'à cet instant, seul le changement de mode est nécessaire. En plus si tu actionnes les Bp qui n'ont pas encore de raison de l'être au changement de mode tu risques d'avoir des modifications non voulues. Enfin si tu utilises des interruptions comme plus est moins elles devraient être attachées à des fonctions spécifiques à la position dans ton code ce qui te permettrait d'être beaucoup plus efficace, mais c'est juste mo avis.
Pour le temps passé à ma façon de coder de rien c'est avec plaisir !
J'ai commandé le même afficheur que toi (c'est toujours intéressant de voir d'autre système) et si j'ai un moment je te donnerai ma solution qu'en à l'utilisation des interruptions selon mon idée.
Jetfuzz je ne comprends que ne sois pas venu mettre le boxon ici ?
Jetfuzz
jeu, 04/16/2020 - 09:50
et c'est qui qui cherche a foutre le boxon !!!!!
parce que jusque la, tu as été agréable !!!
et que le code c'est pas mon truc.
pourvu que ca dure.
Cordialement
Jetfuzz
Anonyme
jeu, 04/16/2020 - 09:14
J'adore tu démarres au quart de tour je connais tes adresses IP et je sais que tu es connecté pratiquement tout le temps mais comme tes agressions manquent un peu de temps en temps je les relances de temps à autres, ça marche au top !
Jetfuzz
jeu, 04/16/2020 - 09:45
laisse moi rire, j'en ai qu'une !!!
et a moins de t'appeler Alex,qui connais mon nom et prénom, tu es incapable de connaître mon ip .....
pour te mettre sur la voie je suis chez orange , et oui même chez orange on peux avoir une IP fixe.
Anonyme
jeu, 04/16/2020 - 09:38
Oui chez toi ....
Jetfuzz
jeu, 04/16/2020 - 09:47
mais tu es un grand malade toi !!! même quand le post est constructif, tu essaye toujours de foutre la merde !!!!
Anonyme
jeu, 04/16/2020 - 11:16
Si on compare le nombre de mes posts constructifs et tes posts pseudo constructifs, comme dit mon gamin il n'y a pas photo, 80% au moins des tiens sont agressifs même quand je ny réponds pas !
Regarde sans parti pris ce que j'apporte ici et ce que toi tu donnes ! De plus je sais que tu regardes tous mes tutos !
Jetfuzz
jeu, 04/16/2020 - 20:40
mais tu es plus fort que dieux tout puissant !!!
Franchement j'en ai rien a b......r des tes tutos !!!
Walter
jeu, 04/16/2020 - 19:32
Je comprend pas trop ta remarque, a priori tu es développeur, je suppose que tu n'es pas payé pour diffuser ton code sur ce forum ?
J'ai deux "projets" fonctionnels et complets diffusés sur ce forum, je crois que tu en a aucun dans cette section, donc je trouve que ta remarque affirmant que je ne partage rien est plutôt déplacé, voir même mensonger.
Complètement et sachant que je n'ai pas cherché à optimisé, c'est pour ça que j'avais indiqué que "SI il y a des points a optimiser, je suis ouvert à toutes propositions."
Par contre normalement l'action des boutons est actif uniquement si le mode correspondant est sélectionné.
Donc sauf oubli de ma pars, il ne devrait pas y avoir de modification non voulu, sauf appui simultané, mais qui du coup est quelque chose de voulu.
Au départ le mode par défaut devrait être le mode "chronos" donc avec deux boutons actifs(3 avec ton code), de plus je trouvais par la suite plus embêtant d'activer/désactiver les interruptions à tout bout champs en fonction du mode sectionné.
je ne suis pas réellement convaincu que cela soit nécessaire, mais la question se pose effectivement et mérite réflexion.
Oui je suis preneur et intéressé d'avoir une autre façon de faire avec les interruptions.
Walter
jeu, 04/16/2020 - 19:48
Pour le coup c'est toi qui cherche à mettre le boxon avec cette réflexion et je ne comprend pas du tout ce qu'il y a de constructif.
Pourtant tu as à mainte reprise évoquer comme quoi on polluait ce forum, du coup du devrait plutôt être un modèle de vertu et grandeur pour ton gamin,
Je serais curieux que tu nous argumente et documente ses allégation.
Anonyme
ven, 04/17/2020 - 06:59
Disons qu'en ce qui concerne Jetfuzz il vaut mieux que je ne dise pas ce que je pense de lui, sauf que c’est un surexcité et sur vitaminé qui n’a aucun contrôle de lui-même. Pour ce qui est des 80%... tout un chacun peut facilement le vérifier sur l’ensemble de ce site, mais si tu veux je peux faire un récapitulatif de ses posts !
Anonyme
ven, 04/17/2020 - 07:06
Walter où as-tu pris le fait que tu ne partages rien ? Il est vrai que j'ai dit qu'ici je n'ai pas vu grand-chose dans ces pages. Mais comme tu affirmes je cite :
Par habitude de partagé mon code avec des anglophones, je code ou commente en utilisant uniquement l'anglais, même la documentation :)
Je n'ai trouver que cela :
"https://www.les-electroniciens.com/discussions/petite-sonde-temperature-humidite"
J'ai dû mal cherché car je n'ai pas trouvé le code et les commentaires dont tu nous parles ... J'ai pourtant bien fouillé. Mais je suis certainement passé à coté !
Je pense donc que tu partages tes projets ailleurs avec tes amis anglophones puisqu’ici je n'ai pas vu d'anglophone participé à tes créations ... Ce serait sympa comme je te le disais que tu partages aussi le site sur lequel vous échangez. Donc je réitère ma demande.
Tu dis encore que je n'ai rien publié; ???????. C'est vrai que dans cette catégorie je n'ai pas créer de sujet, j'ai préféré les poster sous forme de tutos, il y en a plus d'une douzaine il me semble, sans compter ce que j'ai donné dans d'autres catégories sous forme d'aide.
Tu me traites de menteur, puis je savoir quels mensonges ai-je fait ?
Bien revenons à ce sujet, Walter je viens de recevoir l'afficheur, il faut reconnaître qu'en choisissant ce module tu n'as pas choisi la facilité.
Je reconnais avoir mis un certain temps pour arrivé obtenir l'affichage que je voulais.
Sur le net je n'ai trouvé aucune explication sur les commandes de la library, juste des exemples n'expliquant pas les paramètres des diverses fonctions. Je pense que tu as dû en bavé autant que moi, autrement un grand bravo!, et alors je suis complètement nul.
Maintenant, dans un premier temps je vais faire exactement ton montage, comme toi, avec ton code pour que je puisse voir comment il réagi et par la suite pouvoir coller au maximum à ta réalisation.
Puis j'essayerai de coder ce montage à ma manière avec le même matériel dans le but que tu puisses comparer, nos différences dans la manière de coder comme tu dis trouver cela intéressant.
Walter
ven, 04/17/2020 - 10:31
Ba je l'ai pris dans ton précédent commentaire!
De quoi parle tu???
Je t'ai indiqué qu'il me semble tu ne partageais pas le code que tes commanditaires ou employeur te commandait, mais peut être que j'ai mal compris et que ton métier n'est pas developpeur?
Donc je le re dis avec d'autre mots, dans mon métier je travaille avec des anglophones et nos produits sont vendu à l'international, ce qui implique d'utiliser l'anglais pour le code et la documentation des produits.
Oui je parle bien de cette section, ou tu n'a rien partagé et dans laquelle tu indique que je ne partage rien, dans un post ou justement je partage mon mini projet.
Donc je le redis, cette affirmation "pourquoi ne partages tu rien ici" est déplacé, voir mensonger.
Alors peut être que ce n'est pas ce que tu as voulu dire, mais de la même façon que ma remarque sur ton manque de partage dans cette section peut visiblement t'avoir choqué, je trouve que ta remarque l'est tout au tant.
Concernant l'afficheur, cool que tu l'ai reçu, je l'ai choisit car je trouve qu'il a une bonne lisibilité avec des couleurs sympathiques, par rapport à des afficheurs LCD plus classique que je peux avoir en stock.
Le fichier d'en-tête est très documenté, bien que les commentaires permettent la génération automatique de documentation, je ne crois pas avoir vu sur le github la documentation générée.
Je crois aussi avoir vu la documentation générée quelque pars sur un site WEB.
Oui je te confirme mon intérêt pour un code alternatif au mien.
Anonyme
ven, 04/17/2020 - 12:21
Désolé Walter mais je n'avais pas compris que c'était dans ton métier que tu avais cette habitude, pardonne mon erreur s'il te plait !.
Franchement je n'avais pas compris et sauf une seconde erreur de ma part tu n'en fais pas mention !!
Walter
ven, 04/17/2020 - 13:17
Pas de soucis, non je ne pense pas en faire mention ailleurs.
Anonyme
lun, 04/20/2020 - 08:01
Tu dis que la library est très documentée mais je ne vois pas où. par exemple :
Je suis arrivé à afficher à peu près ce que je voulais, mais par tâtonnement, as tu la signification de tous les paramètres notamment l'affichage des deux points ":" et l'affichage du seul point décimal ".", je suis vraiment très intéressé par la logique de cette library et je n'ai rien trouvé sur le net hors mis des exemples mais non commentés point par point. La seule chose que je trouve c'est si vous utilisez tel valeur, vous obtiendrez tel affichage. Mais toujours aucune signification de chaque paramètre.
Merci pour tes explications !
Walter
lun, 04/20/2020 - 15:45
Tu as regardé le fichier d'en-tête ?
Le mien n'a malheureusement pas les deux : et ., je me suis planté lorsque j'ai fait ma commande.
l'auto documentation de la fonction showNumberDecHex?
Je vais essayé de retrouver la documentation que j'avais trouvé, mais de mémoire c'est simplement la génération de l'auto documentation.
graindesel
ven, 04/17/2020 - 07:33
Bonjour,
Toujours pas de modérateur sur ce forum ? Walter tu n'étais pas intéressé par la fonction ? C'est lourd de voir tous les posts finir sur le même ton, et ca n'avance a rien a part faire fuir les gens matures...
Alex ? tu vois bien qu'il n'y à pas moyen. Il y a une tumeur sur le forum.
Au point ou nous en sommes,même un mauvais modérateur serait moins pire qu'aucun modérateur.
Anonyme
lun, 04/20/2020 - 14:19
Walter plus besoin de document sur la library du TM1637 j'ai fait ma fonction qui permet d'afficher n'importe quelle valeur sur cette afficheur et d'une manière très simple
Exemple :
DigitAff("12:48"), DigitAff("__:36) ou encore DigitAff("24°C") etc... Si tu es intéressé fait moi le savoir !
Walter
lun, 04/20/2020 - 14:31
En voulant commencer l'implantation sur une carte de prototypage à bande, j'ai fait quelque changement sur l'utilisation des broches et j'ai remarqué qu'il y avait du code en doublon.
Anonyme
lun, 04/20/2020 - 15:42
Je n'ai pas encore testé ton code je étais sur l'affichage digital.
Anonyme
mar, 04/21/2020 - 08:53
J'ai fini par trouver le manuel de la library TM1637Display ici robojax-tm1637_display_manual.rar
Mais je te donne ma fonction sous TM1637Display.h qui, pour moi tout du moins, est beaucoup plus simple à utiliser.
Il suffit de créer une Chaîne de 5 caractères au choix dans "0123456789ABCDEF:°-_" puis
String Alpha = "0123456789ABCDEF:*-_H"
et
Ajouter un élément a Car[28] par Car[29]
byte Car[29] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113, 128, 99, 64,0, 118}; //le code décimale des segments BCEFG soit (0 + 2 + 8 + 0 + 16 + 32 + 64 =118
Walter
ven, 04/24/2020 - 10:02
Cette documentation est partielle il manque la fonction showNumberDecEx, qui a un paramètre "dots" en plus pour afficher le séparateur à la position voulue.
Ta fonction est effectivement plus simple à utiliser si on veut combiner alpha et numérique, en évitant de devoir utiliser une combinaison de showNumberDecEx et setSegments.
je me suis permis de modifier ton code pour qu'il prenne en compte mon afficheur qui a des points entre chaque groupes de 7 segments et qui évite d'avoir des résidus d'ancien affichage si on affiche un nombre plus fiable de caractère.
Tu devrais proposer tes améliorations à l'auteur de la librairie.
Anonyme
ven, 04/24/2020 - 15:48
Tu as bien fait toute amélioration est bonne à prendre !
Par contre j'ai abandonné ce que j'avais prévu de faire avec les interruptions, je ne comprends pas pourquoi quand j'appuie sur un bouton avec l'interruption "1" c'est de temps en temps l'interruption "2" ou "3" qui est déclenchée donc comme ce n'est pas fiable j'abandonne.
Walter
ven, 04/24/2020 - 17:02
C'est bizarre, je n'ai pas remarqué ce genre de comportement.
c'est quoi ton code ?
Anonyme
ven, 04/24/2020 - 17:08
Ca ma fichu les boules j'ai tout effacé !
Je reprendrai peut être dans quelques temps !
Walter
ven, 04/24/2020 - 17:16
Lol, des fois quand ca ne marche pas, sans explication, c'est un brin agaçant:)
Anonyme
ven, 04/24/2020 - 17:51
J'ai jeté un oeil sur ta modif, mais je vois que tu ne cherches pas la simplicité, pourquoi aller bricoler avec les adresses mémoires ?
Si tu ne te fâches pas je vais essayer de te proposer ma solution à ton afficheur (si j'y arrive, en ce moment rien est écrit )
Walter
ven, 04/24/2020 - 20:03
J'avoue que je ne comprend pas ce que tu veux dire, de quel bricollage tu parle ?
Tu parle d'adresse mémoire, donc je suppose que c'est le calloc.
Mais je ne vois pas en quoi c'est du bricollage.
Ha non je ne vais pas me fâcher parce que tu propose une autre façon de faire :)
En relisant mon code, j'ai remarqué que je ne t'ai pas envoyé la derniére version de ma modification.
C'est casiment rien, mais la variable data est superflue, on peut utiliser directement la variable D qui est du même type et représente les mêmes données.
Et surtout que je ne libére pas la variable allouée, et c'est MAL.
Anonyme
sam, 04/25/2020 - 09:49
Non je ne parle pas de bricolage, j'aurais dû employer le mot utiliser (j'ai dit bricolage par ce que ce n'est pas à la portée de tout le monde de comprendre )
Voilà ma solution pour ton afficheur (Merci de le tester et de me donner le résultat de ton test) par contre il ne faut plus rien mettre en lieu et place des ":" ou "." s'il ne doivent pas être affichés.
J'ai aussi rajouté des caractères dont j'avais besoin pour une autre appli !
Enfin j'ai testé ton code sur mon afficheur, j'obtiens des "r" à la place des "_" et tu as mis les deux premières lignes et dehors de la fonction !
J'ai trouvé le problème il vient du fait que tu utilises des 'espace' et moi des 'underscore' pour effacer les caractères donc pas de problème après modif !
Voilà ma solution pour ton afficheur (Merci de le tester et de me donner le résultat de ton test) par contre il ne faut plus rien mettre en lieu et place des ":" ou "." s'il ne doivent pas être affichés apr rapport à mon premier code.
Walter
dim, 04/26/2020 - 18:29
J'ai testé ton programme, il fait planté mon ESP8266 avec une erreur de segmentation dû à la tentative d'affichage d'une chaine de plus de 4 caractéres, comme celle-ci:
DigitAff("___-" + String(n) );
Dans le même genre tu utilise le retour de la fonction "indexof" comme index dans le tableau "Car", hors cette focntion peut renvoyer -1 et faire aussi un assez mémoire non voulu, mais qui ne doit pas faire un erreur de segmentation dans ton cas, je pense.
J'ai corrigé les problèmes avec le code suivant:
Je ne comprend pas pourquoi tu utilise les caractéres "_" pour éteindre l'afficheur, surtout qu'il s'agit d"un caractére afficheable avec un afficheur 7 segment.
Tu ne trouve pas que le caractére " " est plus approprié ?
J'avais mis les deux variables "Car" et "Alpha" en dehors de la fonction car comme elle ne change jamais, autant ne pas perdre de temps à les déclarer/affecté à chaque appel de la fonction ou alors les déclarer en static.
Anonyme
dim, 04/26/2020 - 18:56
Si tu mets plus de quatre caractères c'est normal que cela plante l'afficheur n'en a que quatre !
Tu peux utiliser le caractère qui te plait pour éteindre tous les segments, j'utilise les 'underscore' car, pour moi c'est plus facile à compter (visuellement) que des espaces.
Pour les variables c'est comme tu veux, je les ai incluses dans la fonction pour faire une fonction autonome voilà tout. le temps de rafraîchissement et négligeable !
Walter
dim, 04/26/2020 - 19:24
Non je trouve pas ça vraiment "normal" :), c'est quand même mieux lorsque ta fonction ne fait pas rebouter l'ESP quand tu t'es planté dans l'appel de ta fonction, comme dans ton programme.
Surtout si tu propose une amélioration d'une librairie qui peut être mal utilisée par l'utilisateur final.
Avec la correction que j'ai proposée, tu n'a pas de reboot et à l'affichage tu as les 4 derniers caractéres.
Ton affichage ne doit pas être le même que le mien, parce qu'avec ma police de caractère je ne peux pas plus compter les " " que les "_", du coup cela m'ai pas venu à l'esprit.
Oui, tu peux très bien mettre les variables à l'intérieur de la focntion, cela ne change pas réelement les performances dans ce cas précis.
C'est juste que tu y faisait référence à la suite d'un problème d'affichage chez toi et donc expliquer pourquoi je les avait extraites.
Anonyme
mer, 04/29/2020 - 11:24
J'ai trouvé le problème, tout fonctionne parfaitement et d'une manière très simple, mais vu ton changement d'attitude je ne diffuserai pas le code !
Walter
mer, 04/29/2020 - 12:44
Cool, mais tu as trouvé le problème à quoi ? je n'avais aucun problème en cours avec ton code.
C'est toi qui voit, mais je te rappel que tu ne me punis aucunement, puisque mon projet est pleinement fonctionnel avec la librairie TM1637 de base.
Autant j'apprécie de pouvoir échanger avec un autre developpeur, par contre à aucun moment cela impactera ma liberté d'expression.
J'ai pulbié ce micro-projet est espérant que cela puisse être utile à d'autre, c'est la seul chose que j'en attends.
Anonyme
mer, 04/29/2020 - 18:53
Le problème c'était chez moi qu'il avait lieu, comme je te l'ai dit.
Tout fonctionne chez toi : C'est parfait !
Walter
mer, 04/29/2020 - 23:35
Je ne sais pas quel problème tu avais mais super si tu as résolu ton problème et que tout fonctionne simplement et parfaitement chez toi.
Mais du coup tu ne veux pas diffuser le code que tu as déjà donnée et que j'ai corrigé?
J'avoue que je n'arrive pas à voir ou tu veux en venir.
Anonyme
jeu, 04/30/2020 - 08:58
Tu sai très bien quel était mon problème sur les interruptions ! tu y as même fait allusion dans un de tes messages.
Tu n'as rien corrigé du tout, tu l'as adapté à ta façon. C'est à dire rendre transparentes les erreurs de codage, c'est complètement différent ! Moi je préfère que ça plante ou que cela ne donne pas satisfaction, pour que l'on cherche et supprime les erreurs et ne pas laissé un code faux ce qui pour moi est digne d'un développeur du DIMANCHE. A chacun sa façon de voir les choses.
Il faut pensé industriel c'est à dire qu'une tierce personne peut intervenir sur ce code et ne plus rien comprendre.
Walter
jeu, 04/30/2020 - 10:32
Tu aurais pû le mentionner ou préciser que tu as fini le programme, parce que je ne suis pas devin!
Comme tu aime bien la provoque gratuite, tout ceci ne serait pas plutot par peur de montrer tes limitation?
Alors c'est la premiére fois, que j'entend qu'il est normal qu'un programme plante et dans ton ton cas severe car c'est un sgmentation fault qui fait rebouter l'ESP.
Il faudra que tu me présente tes clients qui accepte ce genre de comportement d'un porgramme.
Le seul choix pas digne d'un developpeur du dimanche, serait de renvoyer /ecrire un message d'erreur ou un code d'erreur indiquant que les paramétres sont hors limite et ne peuvent pas être pris en compte.
Donc oui j'ai corrigé le bug dans ton code, complétement non fonctionnel chez moi, puisque c'est toi même qui as mal employé ta propre fonction avec un texte de 5 caractéres.
On peut effectivement considére que la correction n'est pas complête car n'indique pas que le paramètre donné, n'est pas exploitable.
Et après tu ose prétendre que je ne suis pas un developpeur ou de piétre qualité et une "grosse merde" comme tu aime le proclamer.
Je suis impatient d'avoir le retour de tes connaissances consciencieuses et ravie de dialoguer avec eux.
Malheureusement je ne pense pas que tu sois capable d'un méaculpa et que cela ne va qu'augmenter ta véhémence à mon égard et que tu te ferra un malin plaisir à polluer tout le threead ce lesquels j'interviendrais, ce qui au final punira seulement les auteurs de ces threads
Pages