Go Down

Topic: truc bizarre (Read 405 times) previous topic - next topic

f1apy

bonjour à tous,

voilà, j'ai un projet de générateur HF à base de DDS 9851,
j'utilise une mega avec un shield lcd+ 5 boutons de chez DFROBOT,
j'en suis à la navigation dans un menu et je rencontre des problèmes.

Pour info, les boutons sont en série avec un pont résisitif et sont connectés à l'entrée ADC0 de la mega.
gros avantage on ne mobilise qu'une seulre entrée pour 5 boutons,
cependant j'utilise pour la lecture switch et case, cela fonctionne correctement sauf à un endroit, voir le code joint,
loop est le début et ne sert qu'a la sélection de fonctions de base: géné pour générateur simple,
sweep pour un géné tracking et calib pour la calibration. pour l'instant seule la fonction géné est écrite,
lorsque que l'on fait ce choix, on bascule sur un sous menu ou l'on gère un curseur qui permet de modifier la fréquence du dds.
l'appui sur btnSelect permet de sortir de la boucle de la fonction géné, et le problème semble le scanning de ce bouton, j'ai essayé également avec une clause IF à la place de case mais même problème la boucle est parcourue une seule fois et ensuite exit et retour à loop, je comprends pas :-(
si je commente le case spécifique à btnSelect ou le IF, pas de pbroblèmes, j'arrive a utiliser les boutons de nav pour modifier la fréquence, par contre bien évidémment je ne retourne pas au menu principal.
Si quelqu'un avait une idée ou pouvait me dire ou je pêche ce serait fb,
le code est attaché
Cordialement,
Jacques

fdufnews

Le même bouton fait passer du menu principal au menu secondaire et permet aussi de quitter le menu secondaire.
Il faudrait tester le relâchement du bouton lorsque tu entres dans le menu secondaire avant de faire le premier read_LCD_buttons(); idéalement avant le do de la boucle de lecture du bouton.

f1apy

Merci fdufnews,

j'ai compris mon problème,
la clause delay doit se trouver avant l'appel du sous menu,
sinon effectivement mon doigt n'est pas assez rapide par rapport à la vitesse de la méga  :smiley-mr-green:
j'ai solutionné le problème en déplaçant la ligne concernée avant l'appel au sous-menu.
tout fonctionne maintenant parfaitement bien
encore un grand merci, c'est toujours des petit trucs comme ça qui te plantent et te mangent du temps hi
Bonne soirée

fdufnews

Quote
la clause delay doit se trouver avant l'appel du sous menu,

Ce n'est pas sûr de jouer sur les délais. Il est de loin préférable de faire une boucle avec un analogRead() pour attendre le relâcher du bouton avant de continuer. Comme ça si l'utilisateur laisse le doigt sur le bouton il n'y a pas de problème. Sauf évidemment si tu as l'intention de gérer des appuis longs et des appuis courts.

f1apy

hi ,

justement j'étais entrain de modifier le code en conséquence, du moins pour cette touche là, pour les touches up,down,left & right, ce n'est pas la même chose car je veux laisser la possibilité du repeat, défilement des valeurs
merci encore des suggestions,
cordialement,
Jacques

Go Up