Aide Besoin de conseils pour programation Arduino

J

jpbbricole

Compagnon
Salut Mandrak
Pour résumer!!!
Dans un programme Arduino, par convention on a toujour la void setup() et la void Loop().
Bien qu'elles s'écrivent structurellement la même chose, void Setup() ne s'exécute qu'une fois alors que void Loop() tourne en permanence en attendant qu'il se passe quelque chose.
Mais ceci est uniquement décidé par les concepteurs du concept.
une void (vide) ne retourne rien ce serai plutôt une commande ou sous routine.

A l'inverse des "non void" qui peuvent commencer par n'importe quelle type de variable:
int nomDeLaFonction()
string nomDeLaFonction()
byte nomDeLaFonction()
...
...
se terminent toujours par un return valeurAretourner.

Dans ces structures, on peut faire tout ce que l'on veut (ou à peu près) sauf créer d'autres structures. Mais par contre on peut appeler d'autres sous-routines ou fonctions. Au retour, on continue à la ligne suivante de l'appel.
>>Appel sous-routine ledTraitement(LOW); // Si le clignotement est arrêté quand le led est ON, l'éteindre.
}
}

>>Instruction suivante if (boutonState == 1 && etat_bouton == 0)

Les sous routines ou commandes sont très utiles pour "aérer" le programme et ainsi rendre la chose plus visible.
Dans le programme des LED, j'ai placé l'appel void ledTraitement(int ledEtat) dans loop alors qu'il suffirai de mettre digitalWrite(ledPin, ledEtat);.
C'est surtout pour l'exemple, comme l'allumage des leds est une opération essentielle du programme, en "centralisant" ainsi la gestion, si tu veux faire un modification dans la gestion des led, c'est seulement à cet endroit que tu vas le faire. Tu remarquera, au passage, que, dans l'appel de void ledTraitement(int ledEtat) on transmet, en même temps, l'état à afficher. On pourrai transmettre la couleur si on avait des RGB, par exemple.

peut on faire tourné en boucle une autre fonction appeler voidxxx?
Par elle-même non. Après tu peux faire toutes sortes de boucles dans une structure comme For, do While ... regarde Langage Reference.

void clignotant, void phares, void démarreur et de les utilisé, ou faut elles quelles soit obligatoirement utilisé avec void loop?
Non. Si tu veux un programme bien structuré et de par de là facile à debugger et à entretenir, tu crée des void séparées pour chaque chapitre, de telle façon qu'il fonctionnent comme tu veux. Après il suffit de les appeler depuis la partie du programme qui en a besoin (ce n'est pas forcément depuis void Loop().

Si tu as encore des questions.....

Cordialement
jpbbricole
 
Dernière édition par un modérateur:
M

Mandrak

Apprenti
Bonsoir vibram et jpbbricole

@vibram
Tu peux visiblement faire plusieurs loops de cette manière
Apparemment oui, je viens de faire le test, es-ce la bonne façons de procédé?, ça c'est
une autre histoire.

Et selon moi un void fonction1, void fonction 2 c'est la manière propre de faire.
Effectivement ca rend les choses plus clair, je n'ai pas encore assez de maitrise pour en arrivé la.

Ce qui me déroute c'est qu' il y a 1001 façons d’écrire un programme pour un même résultat, j'ai bien compris aussi qu'il faut tenir compte de la capacité de stockage de l'arduino qui n'est pas sans limite.

@jpbbricole

je viens de lire ta réponse, merci pour tes explications, si je comprend bien un voidxxx est une structure indépendante de void loop dans laquelle on y trouve des fonctions, instructions, variables, pointé par ce qui ce trouve dans la boucle void loop qui elle tourne en boucle.
Ca donne une quantité infini de combinaison, je comprend mieux ce que tu veut dire:"Mais ceci est uniquement décidé par les concepteurs du concept."
A ce niveau je pense que seul l’expérience est un atout.

J'ai quand même un peu progressé, grâce a ton bout de code (clignotant) j'ai réussi a faire fonctionner une deuxième led qui clignote sur le principe de la première et a intégré la fonction coupe circuit (un appui led on, un appui led off), l'essai fonctionne comme je le souhaite.
Je pense qu'il y a moyen d’alléger le code ou de l’écrire différemment mais ca a le mérite de fonctionné, après chaque chose en son temps.
Je met le code en Pj, j’attends vos critiques (aller y doucement quand même :axe:) pour ce qui est de la fonction phare je verrais plus tard, la j'en ai trop dans la citrouille, pause...

Si tu as encore des questions.....
Oui, concernant les librairies, mais plus tard, j'ai déjà bien d'autre chose a digéré.

Bonne soirée
@+ Cordialement
 
V

vibram

Compagnon
j'avoue que j'ai la flemme de lire le code et d'essayer de l'améliorer, s'il fonctionne et répond à tes exigences... c'est le principal
Cool pour ton experience moto, moi j'ai fait un peu de rallye en street R, super experience !
Juste une chose qui me saute à l'esprit concernant le coup circuit:
De mémoire sur ma bandit c'etait bouton poussoir,m quoi que, à vérifier, mais en terme de securité ce ne serait pas mieux de mettre un vrai switch ?
je sais que si on s'en sert, souvent on a tendance à oublier et a regarder partout pourquoi ce p**** de moteur ne s'allume pas ! Mais generalement lorsqu'on s'en sert, c'est pour une raison particuliere (urgence etc etc) donc est-ce que tu n'aurait pas interet à mettre un simple switch?
C'éest simplement une idée
 
M

Mandrak

Apprenti
Re vibram

j'ai fait un peu de rallye en street R
Pour avoir participé au mototour, je trouve cette discipline relativement dangereuse, comme les courses de cote, mais c'est vrai que c'est une super expérience, de mon coté mon terrain de prédilection c'est la vitesse (circuit)
j'ai été pilote pendant vingt ans, au niveau national et international, pas que ça soit moins dangereux que le rallye mais sur un circuit tu a des dégagements, maintenant ceux qui trouve que c'est très dangereux il ont qu'a faire ping pong :mrgreen:

en terme de securité ce ne serait pas mieux de mettre un vrai switch ?
Tu a raison sur ce point, si toute fois tu ne prévois pas de capteur de renversement, chose que j'ai prévu.

on a tendance à oublier et a regarder partout pourquoi ce p**** de moteur ne s'allume pas !
Hé hé... ca mes arrivé des million de fois, c'est pour cela que dans mon projet j’intègre une led dans le comodo,
Je ferais passer des photos quand ca sera au point.

@++
 
J

jpbbricole

Compagnon
Salut Mandrak
J'ai relu ton programme, c'est pas mal du tout, il est très aéré et facile à lire, sauf à un petit endroit où c'est le b....l!
Je suis un pinailleur :suisse27:, mais c'est essentiel d'aligner les choses correctement si l'on doit rechercher des erreurs. Surtout à la compilation, quand on a oublié une accolade!
Autrement tu est sur la bonne voie.

Bonne hournée
jpbbricole
 
M

Mandrak

Apprenti
Bonjour jpbbricole

J'ai relu ton programme, c'est pas mal du tout, sauf à un petit endroit où c'est le b....l!
Merci, ca met du baume a cœur, pour le bor... je m'en suis aperçu après avoir posté :lol:.

Je suis un pinailleur
Je reconnais bien en toi la précision Suisse:mrgreen:

Aurait tu un lien ou il explique tout ce qui concerne les librairies ?, tout ce que j'ai trouvé ne parle que leurs installation, mais ça je sais déjà faire.
Merci
Cordialement
@+
 
J

jpbbricole

Compagnon
Salut Mandrak
Vaste sujet, je n’ai pas trouvé d’article valable.

Une librairie est un paquet de ligne de code qui s’intègre à ton programme pour lui offrir des fonctions supplémentaires. Elles sont écrites en C ou C++.
La plus part du temps, elles sont écrites et offertes par des constructeurs de matériel exemple, un affichage LCD, des LEDs RGB, des lecteurs de cartes SD, horloges en temps réel…..
Ou, sans ajout de matériel spécial, pour lire des boutons, gérer des moteurs pas à pas, port série supplémentaires…

Elles évitent, le plus souvent, bien des lignes de codes.

L’IDE d’Arduino contient déjà pas mal de bibliothèques que tu peux essayer en passant par Menu Fichier/Exemple tout ce qui est en-dessous du premier trait de séparation, sont des exemples d’application de bibliothèques.

Un excellent exemple, et la lecture d’un bouton avec tout les problèmes inhérent à la chose.
Le traitement normal, tu le connais est :

longpreviousMillis=0;
longinterval=1000;

if(boutonState!=etat_bouton)
{
unsignedlongcurrentMillis=millis();
if(currentMillis-previousMillis>interval)
{
previousMillis=currentMillis;
……..

Et celà pour chaque bouton que tu lis.

Avec une bibliothèque :

#include<Button.h>
#defineboutonMonterPin6
ButtonboutonMonter=Button(boutonMonterPin,PULLUP); // Paramétrage de la librairie Button.h

if(boutonMonter.uniquePress())

C’est quand même plus clair ainsi !

Et en plus cette bibliothèque t’offre bien d’autres fonctions que tu peux voir ici

Un objet issu d’une bibliothèque a besoin d’entrées pour fonctionner comme ceci :
ButtonboutonMonter=Button(boutonMonterPin,PULLUP);
où on indique le port du bouton et le mode du port par exemple.

Chaque bibliothèque est livrée avec des exemples qu’il est important d’étudier vu que l’initialisation change presque pour chacune d’entre elles.

Voilà, j'aurai essayé:sweatdrop:

Bonne après-midi
jpbbricole
 
M

Mandrak

Apprenti
Bonsoir jppbricole

Mouai, mouai,mouai..., j'ai pas tout compris:smt017.
J'ai trouvé un site qui en parle, il y a plusieurs fichiers apparemment un fichier .h et un .cpp.
On va reprendre ton exemple #include<Button.h>, j'ai explorer les dit fichier (.h et.ccp), j'y ai vue variable, fonction, ect...
Si je comprend bien les fonctions que tu site longpreviousMillis=0;longinterval=1000;, ect ect...
son dans le fichier .h, et le simple fait d'inclure #include<Button.h> dans l’entête de ton programme suffi a ce que la variable if(boutonMonter.uniquePress()) prenne en compte ce qu'il y a dans le fichier .h??
Mais alors si tu change le noms de ta variable boutonMonter.uniquePress par tartenpion.labas, ca ne fonctionnera plus, tu est donc obliger d'utilisé les même nom de variable que celles qui ce trouve dans le fichier .h, je dit variable mais c'est pareil pour les fonctions, sinon faut changer les noms dans les deux fichiers.
Suis je bon ou a coté de la plaque.

Et en plus cette bibliothèque t’offre bien d’autres fonctions
Si ca te dérange pas faut que tu m'explique.

Voilà, j'aurai essayé
Et c'est deja beaucoup, je t'en remercie :wink:

Bonne soirée
@+ Cordialement
 
J

jpbbricole

Compagnon
Salut Mandrake
Tu est pluissssssssssssssssss qu'à coté de la plaque. Je ne suis pas encore un bon "expliqueur" !

On va reprendre ton exemple #include<Button.h>, j'ai explorer les dit fichier (.h et.ccp), j'y ai vue variable, fonction, ect...
Pour parler en bon français, tu te fous COMPLÈTEMENT de ce qu'il y a dans cette bibliothèque, c'est justement le but!
Tu n'utilise que les fonctions (ci-dessous, je parle d'outils) qu'elle t'offre.
En faisant un #include<Button.h>, tu installe une "caisse à outils" dont les outils sont listés ici.
En faisant boutonMonter=Button(boutonMonterPin,PULLUP);, tu dis à la bibliothèque concernée, tu me surveilles le bouton boutonMonter qui est connecté à la pin boutonMonterPin en mettant la résistance PULL_UP.

Dans le cours de ton programme tu fais
if(boutonMonter.uniquePress()) tu utilises un des outils (uniquePress) de bibliothèque.
Bibliothèque qui est spécialisée dans la lecture de boutons et qui t'élimine en s'en occupant elle même, de tout les désagrément dûs à la chose, les rebonds entre autres.

Si je comprend bien les fonctions que tu site longpreviousMillis=0;longinterval=1000;, ect ect...
Dans mon exemple intitulé Aves une bibliothèque, il n'y a justement plus ces variables.

Mais alors si tu change le noms de ta variable boutonMonter.uniquePress par tartenpion.labas
Dans boutonMonter.uniquePress
boutonMonter provient de ta déclaration boutonMonter=Button(boutonMonterPin,PULLUP);
.uniquePress
est un outil de la bibliothèque Button.h comme vu ici.
Donc tartenpion.labas est doublement impossible!

Si tu veux lire (ou surveiller) le bouton boutonDescendre, tu dois le déclarer:
boutonDescendre=Button(boutonDescendrePin,PULLUP);
Et, ensuite, tu pourras faire if(boutonDescendre.uniquePress())

Patience et longueur de temps Font plus que force ni que rage ...

Bonne soirée
jpbbricole
 
M

Mandrak

Apprenti
Re bonsoir jpbbricole

Je ne suis pas encore un bon "expliqueur"
Mais non, mais non....c'est moi, comme tout a chacun on a ses défaut..
je comprend vite mais il faut m’expliquer longtemps :smt021 :smt003

tu te fous COMPLÈTEMENT de ce qu'il y a dans cette bibliothèque, c'est justement le but!
Haaaa... tu m’enlève une épine du pied, que dis je, un oursin.

j'ai compris, du moins je croie:lol:.
je résume en gros, en utilisant l'un des termes employer dans ton programme qui est dans la bibliothèque .h ou .ccp, la bibliothèque le reconnait et fait ce qu'il faut en conséquence.

J'ai modifier un peu le programme pour faire un essai avec la bibliothèque #include <Bounce2.h> la parti principal changer est dans la section coupe circuit moteur, ca fonctionne et il a moins de ligne de code.
Peut tu Stp y jeter un œil et me dire si j'ai pas fais de conn....
Merci
Bonne soirée
@+Co
rdialement
 
J

jpbbricole

Compagnon
Rereresalut Mandrak
je sens que je vais mieux dormir!
Je regarde ça demain matin.

Bonne nuit
jpbbricole
 
Dernière édition:
J

jpbbricole

Compagnon
Salut Mandrak
Yeah! j'y suis arrivé :supz:, tu as presque tout compris.
C'est just pour ~95%.

La seule chose qui est erronée est:
upload_2016-8-30_9-55-33.png

Il y a 2 variables boutonG et boutonD alors qu'une est permise.
debouncer. est en fait l'instance du bouton que tu initialise ici
upload_2016-8-30_9-57-32.png

Ce qui m'amène à une autre remarque, pour nomer tes pin, utilises boutonGpin par exemple, ce qui te "libère" le nom du bouton, boutonG, pour le reste du programme
Alors autant nomer tes instances d'un nom plus en rapport avec ton programme, par exemple boutonG.attach boutonG.interval ....

Et la dernière pour la route;
upload_2016-8-30_10-1-50.png

au lieu de
//-------------------------------------------------------------
Ce genre d'erreur, pour le débutant, génère, à la compilation, des erreurs pas toujourévidentes à comprendre!

Je te mets ma version corrigée

Je ne l'ai pas essayé mais uniquement compilé.
Mais dans l'ensemple, chapeau, tu as très vite compris:prayer:

Alors, la tête dans le guidon et fonce!
(dans ma jeunesse j'étais fan de Florian Camathias et son fantastique side-car BMW Rennsport ainsi qu de Giacomo Agostini et ses superbes MV Agusta)

Si tu as encore des questions....

Bonne journée
jpbbricole
 
M

Mandrak

Apprenti
Bonjour jpbbricole

Les 5 % restant son rentrer dans ma tête.
upload_2016-8-30_9-55-33-png.png

alors qu'une est permise.
Je te croit sur parole, cependant, avec deux variables le compilateur ne me renvoi pas d’échec, alors qu'avec trois j'ai eu un échec ?? je comprend maintenant la logique, vue sur ce lien.

autre remarque, pour nommer tes pin
Ca doit être le manque de pratique, j'ai tendance a m'emmêler les crayons avec les noms de variables.

Et la dernière pour la route
Ta l'oeil :smt108, c'est quand j'ai mis au propre, j'ai zappé:mrgreen:

tu as très vite compris
Pas trop quand même, un peu plus d'une semaine pour allumé trois led....,
ca doit être mon coté inflammable:lol:

Si tu as encore des questions....
Oui.
Dans ta correction, il y a un passage qui me chiffonne
boutonG.attach(boutonGpin,boutonDpin);
boutonG.interval(200);

boutonD.attach(boutonDpin);
boutonD.interval(200);
boutonG.attach(boutonGpin,boutonDpin); Pourquoi boutonDpin ce trouve ici alors qu'il ai signifier deux ligne en dessous ??
Tu a aussi enlevé debouncer.attach(bouton_Dem); !!
Ca serait pas un piège par hasard... :smt068:lol:


Alors, la tête dans le guidon et fonce!
Oui mais ca c’était avant, j'ai arrêter de piloté en 2008 quand je me suis aperçu que les petit jeune me poussé au cu...., il y a un temps pour tout :sad:

(dans ma jeunesse j'étais fan de Florian Camathias et son fantastique side-car BMW Rennsport ainsi qu de Giacomo Agostini et ses superbes MV Agusta)
J'ai eu fait aussi du side-car entre 2003 et 2008 en championnat de France et participé a deux manches de mondial, sur un Lcr Suzuki, (chassie Suisse :smt023) je me suis régaler.
Giacomo est une légende de la moto, difficile de ne pas le connaitre.


Side.jpg





Merci en pour tes précieux conseil, ca m'aide a aller dans le bon sens.

Bonne journée.
@+Cordialement
 
V

vibram

Compagnon
content de voir les avancées, je suis déjà perdu ... !
En tout cas si tu peux penser à mettre des photos une fois la moto finie, ce serait cool !
 
J

jpbbricole

Compagnon
boutonG.attach(boutonGpin,boutonDpin); Pourquoi boutonDpin ce trouve ici alors qu'il ai signifier deux ligne en dessous ??
Tu a aussi enlevé debouncer.attach(bouton_Dem); !!
Oh non,. ce n'est pas un piège, c'est de l'inattention de ma part.
ce doît être:
boutonG.attach(boutonGpin);
Quand à debouncer.attach(bouton_Dem);, c'est simplement oublié....

Mais je vois que tu maitrises ces bibliothèques, tu verras que dans ce type de programmation comme l'Arduino, c'est essentiel.

Bonne après-midi.

Cordialement
jpbbricole
 
M

Mandrak

Apprenti
Re

@vibram
content de voir les avancées, je suis déjà perdu ... !
Je commence a peine a m'y retrouvé.....
Oui je mettrais des photos de l'ensemble fini, la moto na que peut d’intérêt, une 500CB de 2001 qui me sert de labo d'essai.

@jpbbricole
J'ai suivi tes conseils et remis de l'ordre dans le code, ca fonctionne bien, je le remet en Pj pour la forme, si sur les 846 visites du post il y en a qui veulent s'en inspiré.
Merci en tout cas de vos éclaircissement, ca mes bien utile, j’attends quelques morceaux commander sur labay pour continuer.

J'ai lu ton projet https://www.usinages.com/threads/numerisation-tour-proxxon-pd-230e.90773/
c'est du très très beau boulot, félicitation, j'ai moi même construit un petit tour Cn qui me rend bien des services, il est piloter par Linuxcnc.
Si des fois tu a besoin de conseil coté mécanique, n’hésite pas, je te doit bien ca, oublie le coté software tu me bas a plate couture:mrgreen::mrgreen:.

Bonne fin de journée.
@+Cordialement

 
J

jpbbricole

Compagnon
je suis déjà perdu ... !
Je pense que si tu arrives à faire ce que tu veux, comme tu l'a démontré, tu n'est pas si perdu que ça!:wink:

Si des fois tu a besoin de conseil coté mécanique, n’hésite pas
Pour la mécanique, je ne régate pas du tout, je suis tout juste un amateur plus ou moins éclairé. Je n'hésiterai pas à te demander des conseils. Ce tour était surtout un prétexte à concrétiser des idées que j'avais depuis très longtemps. Commander de la mécanique avec de l'électronique tiens, pour moi, toujours de la magie, c'est peut-être pour ça que l'on s'est rencontrés sur ce forum!
Je vais m'attaquer à une petite CNC chinoise à l'aquelle je vais ajouter quelques accessoires de mon cru.

A bientôt et surtout n'hésite pas si......

jpbbricole
 
M

Mandrak

Apprenti
Bonsoir a tous

@jppbricole
Tout aller bien jusque la quand Mr #include<Bounce2> décide de me faire des miser.:mad:
J'ai compiler tout ce qu'on a fait jusque la (veilleuse_code_phare+clignotant_coupe circuit), génial tout fonctionne, sauf que je suis obliger de rajouté deux condos, pour le rebond des boutons veilleuse-code-phare, je m'inspire donc de ce que j'ai fais au préalable ainsi que tes explication pour supprimé les rebonds avec la bibliothèque "Bounce2", et la patatra le compilateur m'affiche "exit status 1 conflicting declaration 'Bounce boutonMonter' ".
Sa doit bien faire trois bonne heures que je cherche l'erreur, mais en vains, elle doit être tellement grosse que je ne la vois pas, j'ai demander a mon copain Google mais sans obtenir de réponse a la porté de mes compétence.
Donc pour la énièmes fois je viens demander une bouée de sauvetage.
Malgré les informations engloutie en peut de temps c'est dernier jours, je dois passer a coté d'une.:sad:
Dans le code (en Pj) j'ai volontairement mis en commentaire les dites fonctions, afin de mieux les repérer.
Quand tu aura un moment dis moi ce qu'il ne va pas.
Merci
Bonne soirée
@+Cordialement

 
V

vibram

Compagnon
Salut,

Peux tu prendre un printscreen et mettre l'image sur le forum?
J'ai installé les deux libraires mais j'ai des erreurs différentes des tiennes lors du debug
 
M

Mandrak

Apprenti
Une petite pour la route.
Pas de bonne qualité, Smartphone pas tout jeune, mais on y vois l'essentielle.


@+
 
J

jpbbricole

Compagnon
Salut Mandrak
Cherche pas j'ai trouvé
Et c'était quoi l'erreur?

Question de curiosité, pourquoi tu utilises 2 binliothèques qui font à peut près le même boulot!
Pourquoi ne pas choisir une seule, ce serai beaucoup plus efficace et surtout, pour 2 fonction identiques, ces bibliothèques utilisent des fonctions fondamentales du processeur comme les timers, donc possibilités de conflits.
Autrement, ne changes rien c'est impeccable, ton programme est claire et facile à lire.

A la prochaine
jpbbricole
 
M

Mandrak

Apprenti
Bonjour a tous

@jpbbricole
Alors l'erreur venait du nom des variables de Bounce "Bounce boutonMonter = Bounce
(); remplacer par Bounce boutonMonterUp = Bounce(); et tout est rentrer dans l'ordre.

Question de curiosité, pourquoi tu utilises 2 bibliothèques qui font à peut près le même boulot!
Certainement par manque de connaissance. :sad:

Pourquoi ne pas choisir une seule, ce serai beaucoup plus efficace et surtout, pour 2 fonction identiques,
Dans un premier temps je n'avais pas inclus la variable Bounce au fonctionnement de Veilleuse-code-phare, et en appuyant sur les bouton j'avais plein de rebond, donc j'en déduis que la bibliothèque Button ne géré pas cette fonction, et c'est pour cela que la bibliothèque Bounce a été crée.
Pourquoi ne pas choisir une seule, ce serai beaucoup plus efficace et surtout, pour 2 fonction identiques,
Désoler la je ne te suis pas!, ou j'ai pas chercher dans la bonne caisse a outil.:mrgreen:

ces bibliothèques utilisent des fonctions fondamentales du processeur comme les timers
Pour toi ca semble évident, normale au vu de tes capacité a maitrisé l'informatique:smileJap:, mais imagine que je te donne un moteur de 1000Gsxr (Suzuki) en pièces détacher en te disant remonte le, tu y arrivera certainement, mais tu risque de monter des composants avant d'autres en t'apercevant qu'il faut les re-démontés car il y en avait un qui aller juste avant, en mécanique il y a des pièces fondamentales a monté avant d'autres.

Autrement, ne changes rien c'est impeccable
Merci.:tumbsupe:

@+Cordialement
 
J

jpbbricole

Compagnon
Salut Mandrak
Pour te rassurer, je suis assez scié de voir à quelle vitesse tu t'est adapté à cette programmation et surtout à la structure de ton programme, on voit le côté "mécanique" qui ressort:smt038
Pour ce qui est du Suzuki 1000Gsxr, ça a l'air d'être un bijoux de mécanique, mais je ne tenterais pas le remontage, justement par respect de cette beauté!
J'ai été et suis encore admiratif devant une belle distribution desmodromique, un beau villebrequin où à l'écoute d'un beau moteur en pleine accélération surtout s'il y a au moins 12 cylindres.
Mais revenons aus choses sérieuses.
En soit ce n'est, en tout cas, pas une erreur, mais dans un programme si bien construit, c'est domage (c'est mon côté pinailleur)!
Les 2 bibliothèque font du debouncing et comme tu as bien compris la Bounce2, c'est mieux de traiter tout tes boutons avec.

Continue comme ça!

Bonne soirée
jpbbricole
 
M

Mandrak

Apprenti
Re

@jpbbricole
Les 2 bibliothèque font du debouncing, c'est mieux de traiter tout tes boutons avec.
Bon ok... je vais modifié tous ca, sa va me prendre quelques heures voir quelques jours (c'est mon coté "lâche pas l'affaire":lol:),
mais comme ca j’apprends.
Merci.
Bonne soirée.
@+Cordialement
 
M

Mandrak

Apprenti
Bonsoir a tous

@jpbbricol

J'ai bien essayer de modifier le code pour y faire fonctionner l’anti rebond avec la bibliothèque Button, mais sans succès, j'en ai même attrapé une migraine, par contre j'ai découvert d'autres choses le fichier keywords qui est bien utiles pour la compréhension du fonctionnement de la bibliothèque concerné, mais certaine bibliothèque ne l'on pas, bref j'ai fouiné a droite a gauche, et ca ma fais avancé, c'est d'ailleurs comme ca que je me suis aperçus que ce que j’ai écrit pour pour le débouncing était faux, c'est corrigé.
Le projet touche a sa fin, du moins le coté software, j’attends un RTC I2C DS1307 pour y intégré une horloge (voir la vidéo), en effet je me suis amusé avec la bibliothèque LiquidCrystal_I2C, l’écran Lcd ne sera dans le projet final, j'attends un oled c'est plus sympa avec des smileys.:wink:

http://www.ebay.fr/itm/262572228208?_trksid=p2055119.m1438.l2649&ssPageName=STRK:MEBIDX:IT

Bonne soirée
@+Cordialement
 
J

jpbbricole

Compagnon
Salut Mandrak
je voulais essayer de faire la modif mais ma petite CNC me prends pas mal de temps. Mais, quand je vois ta vidéo, pas de regrets!, tu as maîtrisé ton sujet, BRAVO!. Je me réjouis de voir l'écran OLED. Le RTC ert aussi super à programmer, toujours grâce à une bibliothèque, mais ça, maintenant, tu connais!

Bonne nuit
jpbbricole
 
V

vibram

Compagnon
bien !!
Penser à eviter de faire des fautes au moins sur le lcd :D
Veilleuse allumée, code allumé etc, je chipote mais comme l'ensemble a l'air nickel, on peut se le permettre :wink:
 
M

Mandrak

Apprenti
Bonsoir a tous

Penser à eviter de faire des fautes au moins sur le lcd :D
Exact..la grammaire fait parti d'une de mes lacunes, on ne peut pas avoir que des qualités :mrgreen::mrgreen:

l'ensemble a l'air nickel
Merci, c'est encouragent.:wink:

bibliothèque, mais ça, maintenant, tu connais!
Disons que je commence a comprendre plus ou moins leurs fonctionnement, la bibliothèque lcd est relativement pas trop compliqué.

tu as maîtrisé ton sujet, BRAVO
Pas si vite.., je l'aurais maitrisé quand je serais capable d’écrire un programme tous seul, pour le moment c'est du bricolage ou de l’empilage, je suis encore bien loin de maitrisé la chose.
J'arrive plus ou moins a lire le code quand il a été écrit par un autre, et comprendre son fonctionnement du moins pour des codes pas trop compliqué.
Mais l’écrire, c'est franchement pas gagné, je saurais dire ce qu'il doit faire mais l'interprété en C j'en suis loin d’être capable, pour exemple,
J'ai essayer de modifier le code que tu ma fait pour les clignotants, en effet après plusieurs essais il y a quelque chose qui me gène, quand le clignotant gauche est allumé il faut d'abord l’éteindre avant d'allumé le droite et inversement.
j'ai voulu modifier le code en lui disant,
" si le clignotant gauche est allumé et que l'on appuis sur le bouton du clignotant droite, alors éteindre le clignotant gauche et allume le clignotant droite, et si clignotant droite est allumé et que l'on appui sur le bouton du clignotant gauche, alors éteindre le clignotant droite et allume le clignotant gauche"
et pour éteindre le clignotement appuyer sur le bouton qui la allumé (comme ca fonctionne actuellement).:oops::oops:

Alors après plusieurs essais, soit j'avais des erreurs de compilation soit ça ne fonctionner pas, ou des réactions des Led qui ne sont pas inscrit dans le manuel.:lol:
En fait je n'arrive pas a construire la hiérarchie des variables et des fonctions.

Apres ce projet j'en avais un autre un peu plus ardu, je craint le pire....:wink:

Bonne soirée
@+Cordialement
 
J

jpbbricole

Compagnon
Salut Mandrak
Peux tu remette ton code en ligne?
Bonne soirée.
jpbbricole
 

Sujets similaires

V
Réponses
3
Affichages
923
vibram
V
F
Réponses
6
Affichages
25 595
fraiddy
F
G
Réponses
88
Affichages
8 784
gaston83
G
G
Réponses
31
Affichages
42 240
gaston83
G
G
Réponses
123
Affichages
19 023
gaston83
G
G
Réponses
0
Affichages
574
gaston83
G
zygo4619
Réponses
34
Affichages
35 391
zygo4619
zygo4619
Moi33
Réponses
3
Affichages
47 955
speedjf37
S
V
Réponses
62
Affichages
5 196
vibram
V
Mcar
Réponses
65
Affichages
11 571
Mcar
R
Réponses
55
Affichages
49 853
jacounet
jacounet
U
Réponses
85
Affichages
7 107
Hubert86
H
2
Réponses
27
Affichages
905
jean-jacques
J
Haut