Advertisements

Aide Besoin de conseils pour programation Arduino

M
Mandrak
Apprenti
30 Janvier 2015
202
Le Sud
  • Auteur de la discussion
  • #1
Bonjour a tous

Je viens de faire l’acquisition depuis peu d'un Arduino Mega2560 afin d'essayer de réalisé un projet pour ma moto, jusqu’à lors je ne connaissais pas les immenses possibilités de cette petite carte, c'est incroyable, je me suis documenté au travers de divers tuto, vidéo, ect.., mais voila si le coté hardware est simplifier par le peu de composant qu'il faut pour une réalisation un peu simpliste, ce qui ne me pose pas de problème, le coté software n'est franchement pas simple pour une personne comme moi qui na jamais fait de programmation, bon je mis met petit a petit, mais la logique du langage C me déroute franchement, arrivé a un certaine age on perd plus de neurone que l'on en gagne, donc pas simple.
J'aurais besoin d'aide afin de réalisé mon projet que je vais exposé, sure que pour les pro de la programmation ça devrait être un jeu d'enfant, mais chacun son métier.

Le projet:
A partir de deux boutons poussoir, avec le premier je voudrais allumer trois Led successivement, puis avec le second les éteindre successivement, avec une particularité.

je détail:
avec le premier bouton.
un appui=> led1 allumé.
un second appuis=> led1 allumé+led2 allumé.
un troisième appui=> led1 allume, led2 éteint led3 allumé.
et inversement avec le second bouton.

j'ai un bout de code que je mettrais en Pj, je ne vous cache pas que c'est du copier coller de ce que j'ai trouver sur la toile, j'ai quand même réussi a le bidouiller un peu, ça fonctionne mais pas comme je le voudrais, je n'arrive pas a éteindre la Led2 quand Led3 est allumé.
Suis je peux être partie d'un mauvais exemple ???.

Merci d'avance a ceux qui peuvent mettre un peu de lumières a mon étage.

Ps:
Soyer indulgent avec moi si ce que j'ai modifier sur ce code n'est pas dans les normes, c'est mon premier code...
 
Advertisements
V
vibram
Compagnon
15 Mars 2014
3 616
FR-74
Salut
Peux tu détailler ce que va faire le bouton 2 (de manière plus précise que "inversement") histoire d'être sur de partir sur de bonnes bases :wink:
Je vais regarder ce soir
 
M
Mandrak
Apprenti
30 Janvier 2015
202
Le Sud
  • Auteur de la discussion
  • #3
Bonsoir vibram

Merci d'avoir répondue si rapidement, pour inversement:

Pour le deuxième bouton:
premier appuis => led3 éteint, led2 allumé.
second appuis => led3 et led2 éteint, led1 allumé.
troisième appuis=> toutes les led éteinte.

@+ Cordialement
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Salut Mandrak

Avec un pseudo comme celui-ci, rien ne doit être impossible pour toi!
langage C me déroute franchement, arrivé a un certaine age on perd plus de neurone que l'on en gagne, donc pas simple.
Rassures-toi, je m'y suis mis à ~62 ans!
Excellent programme pour débuter. Un premier conseil, essaie dabord de lire un bouton poussoir pour te rendre compte combien d'impulsions tu généres avec une pression!
Celà va transformer tes leds en sapin de Noël!. Donc il faut traiter les rebonds. Vaste programme. Tout celà pour en arriver à un truc essentiel, dans la programmation d'un Arduino, les bibliothèques. Autant commencer tout de suite d'un bon pied.
Pour les boutons, c'est Boutton.h
Si tu est interessé, je rechercherai les références.

Cordialement
jpbbricole
 
P
psemel
Ouvrier
21 Mars 2009
384
oise
bonsoir,

un K2000 manuel pour moto:lol:

L'exemple est compliqué, il y a un moyen plus simple sans utilisé trop de variable.
En complément du post précédent que ce passe t'il si led 1 et 2 sont allumées et que tu appuis sur le bouton -: reste à définir exactement tes besoins.

remarque sur les commentaires dans ton programme
High = led allumée Low= Eteint

Une mega est surdimensionner pour faire cela.
 
5
59JAG
Apprenti
7 Février 2010
183
59 chti nord
Bonjour
pourquoi ne pas mettre l etat de chaque led dans les conditions

if(valeur_recue = 1)
{
digitalWrite(led_0, LOW);
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
}
if(valeur_recue = 2)
{
digitalWrite(led_0, LOW);
digitalWrite(led_1, LOW);
digitalWrite(led_2, HIGH
}
if(valeur_recue = 3)
{
digitalWrite(led_0, LOW);
digitalWrite(led_1, HiGH);
digitalWrite(led_2, LOW);
}
 
M
Mandrak
Apprenti
30 Janvier 2015
202
Le Sud
  • Auteur de la discussion
  • #7
Bonsoir a tous

@jpbbricole

Rassures-toi, je m'y suis mis à ~62 ans!
Respect, j'en 5 de moins que toi.

Avec un pseudo comme celui-ci, rien ne doit être impossible pour toi!
Tu sais se qu'on dit sur le "Canada dry"...:lol:

Celà va transformer tes leds en sapin de Noël!
Oui tu a tout a fait raison, j'en ai fait l’essaie sur ma breadbord et effectivement au lieu d'allumer les led une a une c’était une cacophonique,
j'y ai trouver un remède hardware en y rajoutant un condo de filtrage de10n, ca fonctionne, je sais qu'il existe une solution sofware que j'ai trouver sur ce site mais j'ai ete incapable de le mettre en place.

Si tu est interessé, je rechercherai les références.
Volontiers, il est vrai que le monde d'Arduino est passionnant, de plus j'ai d'autres projet mais plus compliqué, pour cela il faudra vraiment que je maitrise plus le langage C.


@psemel
un K2000 manuel pour moto
Non... pas ca.., je vais remplacer les led par des transistors de puissance afin de commander les feux avant (et arrière aussi) de la moto, si tu suis la logique de ce que j'ai écrit dans le post initial tu comprendra.

L'exemple est compliqué, il y a un moyen plus simple sans utilisé trop de variable.
Oui certainement, mais je par de zéro.

Une mega est surdimensionner pour faire cela.
Tout a fait, c'est pour cela que j'ai aussi acheter une nano pro avec plug usb, 4€ !!, c'est même pas le prix des composants pour réalisé ce montage en traditionnelle.

@59JAG
J'ai essayer ca, mais sa ne fonctionne pas, la led 1 s’estompe mais ne s’éteint pas.
if(valeur_recue = 3)
{
digitalWrite(led_2, LOW);
digitalWrite(led_1, HiGH);
}


Cordialement a tous
 
V
vibram
Compagnon
15 Mars 2014
3 616
FR-74
je vois que pas mal de monde a proposé des choses
voici ma proposition:
https://circuits.io/circuits/2606856-3-led-mandrak

Essaie de le mettre en oeuvre avec ton filtre sur le BP, ca doit fonctionne je pense.
Au cas ou tu ne veux pas t'inscrire sur circuits.io

Attention à adapter les pin des boutons aux pin sur ton mega, ce ne sont pas les memes pour les int pullup il me semble
et le code:
Si la solution fonctionne et te convient, je commente afin que tu comprennes ce que jai fait :wink:
Screenshot from 2016-08-25 20-23-14.png
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Salut Mandrak
Je te mets le fichier ZIP de la bibliothèque Button.h
Tu décompresses le fichier ZIP et tu mets le répertoire Button dans le répertoire où est installé ton IDE Arduino, sous répertoire libraries.
Voici un exemple d'utilisation pour tes données.
En tête du code 1 lien utile.
Si tu as des questions, problème(s)....

Bonne soirée
jpbbricole

Voir la pièce jointe Button_Librairie.zip
 
Dernière édition:
M
Mandrak
Apprenti
30 Janvier 2015
202
Le Sud
Re bonsoir a tous

@
coredump
Je vois que tu es sur la Cote d'Azur, nous somme voisin, je suis du haut Var.
Vu que je suis pas franchement alaise avec le langage C je n'es pas essayer ton bout de code car je ne comprend pas trop ce que tu a voulu dire.

@Paul
ca doit fonctionne je pense.
Au cas ou tu ne veux pas t'inscrire sur circuits.io
Oui.... excellent ça fonctionne a merveille, et si ça ne t’ennuie pas trop de me le commenter
serais fortement utile pour comprendre le mécanisme car j’ai bien vu que tout le code a changer mais sans pour autant comprendre.
Je me suis inscrit sur circuit.io, mais ça a tendance a planter mon navigateur (Firefox).

@jpbbricole
Merci pour le lien et la bibliothèque, pour l'installer ça je sais faire, il faut bien que j'arrive a faire quelque chose tout seul avec Arduino:lol:.
J'essaierais ton code demain, il se fait tard et je n'ai plus d'aspirine:mrgreen:.
Il y a une chose qui me turlupine, a lire ton code et celui de Paul il ne se ressemble absolument pas pour un même résultat, le C c'est déjà pas facile, alors si chacun peu y faire sa recette ca va ce compliqué.

Un grand merci a vous tous pour m'avoir aidé a faire avancé le smilblik, du coup je me sent moins seul avec mes petits carte Arduino.

Bonne fin de soirée.
@+
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
M
Mandrak
Apprenti
30 Janvier 2015
202
Le Sud
Bonjour a tous

@Paul
Merci pour tes commentaires, j'ai a peu près tout compris, il reste cependant une zone obscure, attachInterrupt, RISING, et cli, je vais me documenter.
Il y a une variante entre ton code et celui je jppbbricole, hier je me suis un peu enflammer, tout content de voir qu'enfin il sortais de cette carte quelque chose dont j'avais besoin pour mon projet,
après avoir tester plus en détail, il y a une fonction qui fonctionne pas comme je l'aurais souhaité ,
j'explique:
tout va bien a la monté, led1on, led1on+led2on, led2off+led3on, quand on fait l'inverse aussi mais uniquement dans cette ordre, quand je suis dans la période de descente et a l’état led1on+led2on et que je veut remonter a l’état led1off+led3on je suis obligé de presser deux fois le bouton monter pour changer d’état.
J’espère ne pas être trop confus dans mon explication.

@jpbbricole
j'ai essayer ton code, la version plus aboutie, c'est tout a fait ce qu'il me faut, ca fonctionne très bien, j'ai décortiqué le code afin de comprendre le fonctionnement, la j'ai plus de mal a pigé, le code de Paul est pour mon niveau plus clair, je met en Pj ton code que j'ai commenter avec divers interrogations.
Entre temps et deux tube d'aspirine plus loin, j'ai pris une cours sur le langage C sur le site OpenClassrooms, ça commence a renter dans mon neurone, la ou j'ai encore du mal c'est sur la structure ou hiérarchie du programme, c'est la patauge.
Je compte faire évolué mon projet en y rajoutant une centrale clignotant toujours a l'aide de deux bouton poussoir supplémentaire,je vais essayer de faire le code comme un grand, histoire de voir si j'ai tout bien compris.

A suivre.

Cordialement
 
V
vibram
Compagnon
15 Mars 2014
3 616
FR-74
attention quand tu tag "paul" c'est un autre utilisateur :wink:
Comme a bien dit jpb, son code est nettement plus propre, moi il aboutit au résultat que du m'a indiqué. Maintenant que ta volonté se complique un peu, il faut voir si le code peut s'adapter, pas si evident que cela à faire !

Tu as des infos ici pour le attachinterrupt:
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.AttachInterrupt

je te conseille donc de partir sur le code de jpb, meme si je vais voir si j'arrive à adapter le mien pour le fun
 
La dernière réponse à ce sujet date de plus de 6 mois
Advertisements
Haut