Tout d'abord je precise que Je suis debutant dans la programmation des arduino (mega 2560) mais j'ai de tres bonnes base en electronique je suis donc autodidacte et j'essais d'aprendre seul mais parfois une aide est indispensable alors je fais appel a vous qui avez plus d'experience que moi. Premierement
J'ai besoin de savoir et comprendre comment faire pour n'executer qu'une seule et unique fois une fonction dans mon programme? J'ai bien pensé à copier l'ensemble de mes instructions de la bouche void loop a void setup mais je ne pense pas que cela soit tres academique. je souhaiterai par exemple appeler une fonction et quand cette fonction à deja ete appelée qu'elle ne s'execute plus.
Deuxieme point
j'ai branché sur une entrée analogique une serie de poussoir et je lis la valeur de cette entrée pour executer une fonction (celles que j'ai evoquée ci dessus) Le probleme est que lorsque j'appuie trop longtemps ou que je remplace un poussoir par un detecteur numerique (qui envoi un HIGH ou un LOW mais avec une resistance serie sur la sortie du module qui me permet d'avoir des valeurs differentes) la fonction est repetée plusieurs fois, c'est a dire, tant que l'actionneur est actif Cela me pose un probleme car j'envoie par Infra rouge un code a un recepteur et celui-ci me donne un code d'erreur quand il reoois plusieurs fois la meme information.
Si vous avez des reponses avec des exemples merci d'avance pour votre aide.
ptit: Premierement
J'ai besoin de savoir et comprendre comment faire pour n'executer qu'une seule et unique fois une fonction dans mon programme? J'ai bien pensé à copier l'ensemble de mes instructions de la bouche void loop a void setup mais je ne pense pas que cela soit tres academique. je souhaiterai par exemple appeler une fonction et quand cette fonction à deja ete appelée qu'elle ne s'execute plus.
Si tu veux exécuter une partie de code qu'une fois dans loop, il suffit de mettre un FLAG (drapeau). En d'autre terme, une variable que tu mets à 1 (par exemple) lorsque tu es dans ton code. Lors d'un nouvel appel tu vérifies l'état de ta variable avant d'exécuter la partie du code. Pour faire simple un simple if.
Par exemple :
Dans setup
ptit: Deuxieme point
j'ai branché sur une entrée analogique une serie de poussoir et je lis la valeur de cette entrée pour executer une fonction (celles que j'ai evoquée ci dessus) Le probleme est que lorsque j'appuie trop longtemps ou que je remplace un poussoir par un detecteur numerique (qui envoi un HIGH ou un LOW mais avec une resistance serie sur la sortie du module qui me permet d'avoir des valeurs differentes) la fonction est repetée plusieurs fois, c'est a dire, tant que l'actionneur est actif Cela me pose un probleme car j'envoie par Infra rouge un code a un recepteur et celui-ci me donne un code d'erreur quand il reoois plusieurs fois la meme information.
Dans le traitement de ta lecture boutons poussoirs, il faut que tu gères l'appui long. Il suffit de mettre, par exemple, un delay(xxx) (attente) car le nono est bien plus rapide que toi. Mais il existe d'autres solutions.
@+
Une des plus plus basique et tout simplement d'attendre le relâchement du bouton :
if(digitalRead(Boutton)==LOW) {
MonrProgramme();
while (digitalRead(Boutton)==LOW) ; // tant que le bouton est appuyé, ça boucle
delay(50); // petit delay qui permet de gérer les effets de rebonds
}
Meci a tous je vais essayer de faire ca seulement la gestion du temps long par une boucle me parait pas adapté, car je vais mettre 'a la place des BP un detecteur IR numerique donc 5 ou 0 Volts si toutefois une personne restait devant le detecteur alors la boucle ne servirait a rien. je test est reviens vers le post pour donner des news merci
Merci encore j'ai posé des "drapeaux" sur mes 6 fonctions comme tu m'as expliqué et CA MARCHE c'est cool Merci Je ne connaissais pas cette astuce et je n'ai pas encore tres bien compris a quoi sert le point d'exclamation avant la variable dans
..........................
if (!VerifSipremiereFoisT1)
Japprend Icare j'apprend je te rappel seulement que je debute que depuis moins d'un mois donc je sais j'ai de la route a faire avant de devenir pro ! Ce qui n'est pas d'ailleur mon objectif a 51 ans . Comme j'ai des problemes avec la langue de Shakespeare je n'air pas l'intention non plus de l''apprendre je prefere me trouner vers des gars qui sont deja plus expert il est toujours bon d'avoir un prof plutot que de chercher desesperement dans des pages que je ne comprend pas ni la langue ni les informations. 9a sert a ca aussi la communauté d'un forum je me trompre
cordialement et encore merci !!!