Aide Aide programmation Arduino

G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
Pour le debug,
encore une fois je n'y connais rien, mais pour ce que j'ai fait jusqu'à présent je me suis débrouillé sans, avec des leds pour vérifier l'état des sorties, et surtout beaucoup de Serial.Print et le moniteur......je pense qu'un debug commence à être utile à partir d'un certain niveau de complexité, je me trompe ? de toutes façons pour l'instant je n'ai pas la possibilité, à voir pour la suite....
 
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
Il faudra me trouver dans les messages précédents où un débutant a demander de l'aide sur un GOTO...
 
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
Pour le debug sous IDE,
Pouvoir aller lire une variable à un moment du programme aide bien...

Et vu le nombre de membres qui utilisent l'IDE pour programmer leur Arduino


Ils doivent avoir le même besoin...

Ou alors ils sont super bon et leur programme fonctionne du premier coup...
Je les envie...


J'ai trouvé qqch au sujet du debbug sous IDE 2.xx...
mais ils parlent d'un Arduino Zéro...
Qqun connait ?
 
J

JLMa

Apprenti
19 Déc 2013
60
NANTERRE
Il faudra me trouver dans les messages précédents où un débutant a demander de l'aide sur un GOTO...
Je suis vraiment désolé de ce pataquès avec mon intervention qui se voulait effectivement du second degré

Cordialement Jean-Luc
 
Reactions: wika58
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
Oui pas grave ... mais pour certains la science c'est comme la confiture...

J'espère que ca clôt le sujet... sinon je demande à la modo...
 
F

fredcoach

Compagnon
11 Jan 2013
1 450
Hautes Alpes
Lorsque le sujet a été abordé, mieux vaut bien l'expliquer, non? Plutôt que de laisser des questions en suspens.
En résumé, ce qui est à retenir par un débutant qui a entendu parler du goto, c'est qu'il ne faut pas y toucher.
 
G

greg_elec

Compagnon
24 Jan 2019
1 629
VIVOIN (72)
Lorsque le sujet a été abordé, mieux vaut bien l'expliquer, non? Plutôt que de laisser des questions en suspens.
En résumé, ce qui est à retenir par un débutant qui a entendu parler du goto, c'est qu'il ne faut pas y toucher.
touche pas à ça ptit c.n ! (Pitivier la7eme compagnie )
 
F

f6exb

Compagnon
13 Juin 2013
3 797
Ou comme dans l'aviation : bouton inconnu, touche à ton cul.
 
F

furynick

Compagnon
29 Jan 2017
1 219
Portet-sur-Garonne
Les zéro c'est les nouvelles générations d'Arduino en archi 32bits.
Il doit y avoir un connecteur et/ou un circuit spécialisé qui permet le débug à moins que le uC le supporte nativement.

J'ai toujours vu du débug sur la ligne série faute d'autre chose.
J'avais essayé le debug avec du STM32 mais c'était une usine à gaz, plus rapide de faire du debug série.
 
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
OK merci...

D'où est-ce que j'aurais ce souvenir de mettre des points d'arrêt et de pouvoir visualiser les variables alors...
La programmation d'automates remonte à bcp plus longtemps...
Mais bon avec l'âge...
 
Dernière édition:
C

coredump

Compagnon
8 Jan 2007
5 241
FR-06
Le connecteur de debug c'est celui marqué JTAG en haut, il y a ensuite un chip qui gère ca via l'usb.
Quasi tout les micro 32 bits ont je jtag. Les AVR ont leur propre protocole sur un fil.
On ne débugue pas avec un port série, on imprime des logs, alors qu'avec un JTAG on a accès a toute la memoire et a l'execution (et des fois a la trace d'execution comme sur les cortex M0+).
 
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
OK merci pour la précision...

Et en pratique ça se passe comment, il faut un editeur performant ... pas l'IDE...
 
C

coredump

Compagnon
8 Jan 2007
5 241
FR-06
VScode/platformio prend en charge le debug, mais uniquement avec les cartes/sonde de debug qu'ils supportent (c'est le point faible de platformio).
 
Reactions: wika58
G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
D'où est-ce que j'aurais ce souvenir de mettre des points d'arrêt et de pouvoir visualiser les variables alors...
ne serait-ce pas avec AVR.Studio (4 et maintenant plutot 6, mais je retarde sans doute). Ce sont les développeurs de Atmel, mais ne connaissent pas le langage arduino, il faut rester en C/C++. Je les ai sur mon PC mais ne les utilise pas. Trop puissant pour moi....surtout le 6
 
C

coredump

Compagnon
8 Jan 2007
5 241
FR-06
le langage arduino
Arduino c'est du C++ avec des restrictions, on est plus proche du C sans pour autant en être.
Techniquement on peut compiler en arduino et debugger dans un debugger C/C++ sans problème, mais les programme de debug graphique seuls sont de plus en plus rare (Ozone par exemple pour les sondes Segger Jlink).
 
G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
oui je voulais dire que AVR Studio ne connait pas les facilités de langage d'arduino, genre "digitalWrite ou AttachInterrupt....etc". Mais en disant cela, peut-être que je me trompe, "ils" ont peut-être créé les plug in qui vont bien, mes infos datent de 6 ans au moins.....
 
C

coredump

Compagnon
8 Jan 2007
5 241
FR-06
Pour ceux qui font de l'ESP (arduino ou pas), le jour ou vous voulez intégrer un module dans vos montage au lieu d'une carte, je vous conseille ca:

Ca permet de programmer le module sans avoir d'usb/serie sur votre montage, et les modules coutent beaucoup moins cher qu'une carte complète.
Attention néanmoins de garder l'accès au port série et gpio0 pour pouvoir le reprogrammer au cas échéant.
 
G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
je ne connais pas du tout cette bebête ...
c'est le logiciel que Atmel fournit pour aller avec ses µC, toujours sous réserve car c'est ancien, la version de base (déjà puissante) est gratuite. Même si on n'utilise pas, c'est intéressant à connaitre.....
 
C

coredump

Compagnon
8 Jan 2007
5 241
FR-06
C'est en fait l'intégration de l'écosystème arduino (librairies et coeur) qui doit manquer.
C'est étonnant qu'on parle peu de platformio+VScode, j'aime pas les IDE mais ca marche bien a condition d'utiliser une carte/debuguer supporté.
L'avantage de platformio c'est qu'il permet de faire la transition Arduino vers d'autre framework facilement car il en support plein.
Par exemple sur ESP, on peut passer de l'arduino au SDK d'espressif (le fabriquant des ESP) sans changer ses habitudes.
 
G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
platformio+VScode,
j'ai utilisé ça pour voir, c'est vrai que c'est top, j'ai suivi pour cela l'excellent tuto de Mr Eric Peronnin, que l'on peut trouver facilement sur youtube. Mais si j'ai repris l'IDE arduino, c'est d'une part parce que pour l'instant au moins ça me suffit, et surtout les fichiers de sketches étant différents, j'ai peur qu'en peu de temps ce soit le foutoir dans mes dossiers. Déjà comme ça....
Ou alors il y a une bonne façon de faire que j'ignore...?
 
G

gégé62

Compagnon
26 Fev 2013
4 220
Harnes (Pas de Calais)
je ne connais pas du tout cette bebête .
A propos, si quelqu'un veut l'utiliser, je me souviens vaguement que pour télécharger dans arduino je devais utiliser un fichier exe qui s'appelle "sscom32E.exe", je ne pouvais pas télécharger depuis Studio 4 directement.
Tout ça est ancien, je ne garantis pas que c'est toujours valable.

pour revenir sur platformio+VScode, il est vrai que le temps de chargement du logiciel et des fichiers est très court par rapport à l'IDE arduino, du moins ma version qui est ancienne.
 
W

wika58

Compagnon
17 Déc 2006
12 735
FR-54560 Lorraine
hello tous le monde,

j'ai repris le cours MOOC µControleur et comme chaque semaine il y a 2 exercices de programmation à faire.

J'ai fait le premier et il tourne.
Le résultat est celui demandé (qui serait validé par le robot/simulateur qu'ils utilisent).
Mais je me doute que je n'ai pas programmé de la meilleure façon.
j'aimerais avoir vos avis de comment feraient les "sachants" Arduino pour optimiser le code.
Je comprends qu'il doit y avoir autant de façon que de programmeurs... mais si je peux m'améliorer...

Les données de l'exercice sont :

Et voici mon code :


Merci de vos retours.
 
Dernière édition:
M

midodiy

Compagnon
24 Sept 2009
11 890
Reims
Pour faire cet exercice, j'ai utilisé un tableau. Pour allumer / éteindre les leds, j'ai pas utilisé de digitalwrite qui est long et ne garanti pas la simultanéité des commutations.
 
Dernière édition:
F

furynick

Compagnon
29 Jan 2017
1 219
Portet-sur-Garonne
Quelques principes de base pour essayer de coder proprement et durable :
A) Pour éviter les programmes tentaculaires il faut prendre soin de bien distinguer les fonctionnalités du code.
Dans ce cas on a deux fonctionnalités :
  1. Lecture des BP
  2. Commande des bobines
Il faudra donc séparer le code de ces deux fonctionnalités pour éviter de créer un pb sur l'une lorsqu'on fait des modifs sur l'autre.

B) Pour la lisibilité du code il faut impérativement respecter l'indentation.
Il existe des outils en ligne si l'éditeur ne le fait pas nativement (https://tools.arantius.com/tabifier)
Perso j'utilise des indentations de 2 espaces (pas d'utilisation de la tabulation qui change l'apparence d'un éditeur à l'autre)

C) Essayer de raisonner au niveau binaire et non en décimal
Les changements d'état peuvent souvent se faire avec des opération de décalage ou d'opération binaires
La séquence 00 ; 10 ; 11 ; 01 doit pouvoir se résoudre avec un XOR (alternativement 10 et 01 par ex.)
Si ça n'est pas possible, le tableau de valeurs comme suggéré par midodiy est une très bonne alternative.

D) Choisir une "école" pour coder, il y en a au moins deux :
  1. Faire du générique/portable
  2. Faire du spécifique
Dans le 1er cas le même code pourra être utilisé sur plusieurs µC mais le code sera plus complexe et plus difficilement maintenable
Dans le 2nd cas le code sera plus simple et plus efficace mais ne pourra fonctionner que sur un nombre limité de µC.
 
F

furynick

Compagnon
29 Jan 2017
1 219
Portet-sur-Garonne
Ensuite il faut bien déterminer le comportement de l'appui d'un bouton et les signaux électrique qui en découlent.
Le plus simple est un INPUT_PULLUP comme tu l'as fait avec le BP relié au GND.
Le cahier des charges stipule qu'un pas devra être envoyé à chaque "impulsion" ce terme est important, ça signifie qu'il faut que le bouton soit pressé puis relâché.
Le problème de ce type de matériel c'est les rebonds, mécaniquement, la lame qui va bouger lorsque le bouton sera actionné va vibrer. Le signal électrique va donc osciller pendant un très court laps de temps mais la vitesse d'horloge étant comparativement très rapide, les différents rebonds seront interprétés comme des impulsions distinctes.
Il est donc impératif d'ajouter une temporisation.
 
F

furynick

Compagnon
29 Jan 2017
1 219
Portet-sur-Garonne
Dans un second temps il faut commander les bobines.
Comme l'a fait remarquer midodiy le digitalWrite n'est pas le meilleur candidat mais je pense que ça fonctionnera tout de même.
Le plus efficace sera d'utiliser les ports directement pour positionner plusieurs pins simultanément (PINA par ex. à choisir en fonction du datasheet du µC).
 
F

furynick

Compagnon
29 Jan 2017
1 219
Portet-sur-Garonne
De mon point de vue ton code souffre de quelques pb :
pas de tempo à la lecture des BP
pas de gestion de l'impulsion, le pas est passé dès que le bouton est pressé mais ça pourrait être une interférence
le calcul de la commande est fait au sein de la détection d'impulsion
 

Sujets similaires

W
Réponses
122
Affichages
11 869
Arduino
Philippe85
N
Réponses
3
Affichages
885
Arduino
jpbbricole
Réponses
0
Affichages
470
T
Réponses
1
Affichages
271
T
D
Réponses
0
Affichages
257
Siemens
dodochef
D
Réponses
14
Affichages
38 778
Général langage MMBASIC
Réponses
8
Affichages
1 150
J
Réponses
12
Affichages
594
R
P
Réponses
33
Affichages
18 878
W
T
Réponses
2
Affichages
28 154
Autres logiciels FAO
Tristan l'apprenti
T
Réponses
0
Affichages
365
Réponses
21
Affichages
2 940