Aide Aide programmation Arduino

W

wika58

Compagnon
Qu'est ce qu'on en apprend sur ce post... 8-)

Merci aux "sachants" :smileJap:
 
W

wika58

Compagnon
Petite question.
Dans le MOOC qu'on suit (et où je rame comme un fou avec les opérations de decalage sur des octets... :hang: ) il y a une question dans le quiz de la sem.3 où le format donné m'est inconnu. Rien dans le cours et rien trouvé sur le Net.
IMG_20240123_210446.jpg

A quoi correspond ce H'24 ? :7hus5:
 
M

midodiy

Compagnon
Comme tu le dis, c’est une notation qui n’existe pas. La bonne notation, c’est 0x24. 24 en hexa!
Donc cette réponse n’est pas à cocher...
 
W

wika58

Compagnon
Aah bon... si en plus il mettent des réponses aux choix multiples qui ne veulent rien dire...
Ca va pas aider...

Merciii...
 
V

Vik'TheBike

Nouveau
la syntaxe correcte pour la déclaration d'un static est la suivante (type et valeur à changer en fonction des besoins) :
static uint8_t var = 0;

Comme déjà dit en effet, les variables static n'ont qu'une portée locale mais leur espace mémoire est réservé globalement donc la valeur n'est pas perdue à la sortie de la fonction.

Pour préciser un peu le comportement des variables locales il faut comprendre le mécanisme d'allocation mémoire.
En très vulgaire, le compilateur va déterminer un espace mémoire nécessaire pour chaque fonction.
Lorsque cette fonction sera appelée, la quantité de mémoire nécessaire sera allouée et libérée à la fin de la fonction.
C'est pour cette raison qu'il est impératif d'initialiser les variables à leur première utilisation car, d'une fonction à l'autre, c'est potentiellement le même espace mémoire qui est utilisé et on peut ainsi retrouver les valeurs des variables d'une précédente fonction dans les variables locales d'une autre fonction.

Dans le même état d'esprit, il est aussi important d'éviter les cascades d'appel de fonction ou pire, les fonctions récursives (qui s'appellent ell-même). Tant qu'une fonction ne s'est pas terminée, son espace mémoire n'est pas libéré et la nouvelle fonction appelée va consommer elle aussi de la mémoire. Il y a donc un risque de saturation mémoire qui malgré tout est assez limitée sur un µC.
Les variables statiques sont initialisées à 0 par défaut, c'est dans les standards C.
Cela étant dit, même superflue dans certains cas précis, ça reste une bonne pratique d'initialiser toutes les variables qu'on déclare.
 
F

furynick

Compagnon
Exact mais en codage comme dans la vraie vie, quand c'est explicite c'est toujours beaucoup plus clair.

La notation H'24 ça me dit qqch, peut-être du Basic ou des vieux langages comme Cobol ou Fortran.
 
W

wika58

Compagnon
Je trouve un peu "pas cool" qu'il mette ca dans les choix multiples du Quiz qui permet de valider une semaine de cours.... alors qu'ils n'en ont jamais parlé dans le cours...

Encore merci.
 
F

furynick

Compagnon
C'est le principe du QCM, mettre des choix débile.
T'as jamais regardé "Qui veut gagner des millions" ?
 
W

wika58

Compagnon
T'as jamais regardé "Qui veut gagner des millions" ?
Et non... :spamafote:
Et je vois bien les exemples auxquels tu fais référence.

Mais que faire si on considère que cette reponse est bonne (si on la ramène à 0h24) qui repond à la question posée..
Je repond que cette reponse est OK ou pas... :meganne:
 
Dernière édition:
P

pascalp

Compagnon
Si une mauvaise réponse ne te pénalise pas, au pire tu réponds au pif.


Quand j'ai passé l'examen radioamateur, c'était un QCM et pas de la tarte, les mauvaises réponses étaient sanctionnées -1.
Il y a une technique pour optimiser, en ayant bien sur révisé avant.

Il ne faut pas perdre de temps pour traiter, au mieux, le maximum de questions, épreuve chronométrée.
1 premier balayage rapide pour se faire une idée générale.
1 passage où on répond aux questions directes, dont on est sur de la réponse.
1 passage où on traite les questions (dont on est sur) qui demandent du calcul pour la résolution.
1 passage où on compte le nombre de réponses (à priori bonnes).
- si on a le quota mini ou plus, on ne touche à rien.
- si on est court, pas le choix il faut prendre des risques sur les questions où on est incertain (mais le moins incertain possible).
 
Dernière édition:
W

wika58

Compagnon
Si une mauvaise réponse ne te pénalise pas, au pire tu réponds au pif.
Justement, tu dois avoir 80% au quiz de fin de semaine.
Pour vailider la semaine écoulée tu as un Quiz et 2 exos de programmation a soumettre.
Cette formation peut être 'diplomante' si tu en fais la demande en début d'inscription et que tu paies qqch.
Ce n'est pas mon cas, mais j'essaie de me prendre au jeux.
 
P

pascalp

Compagnon
Ma réponse est donc, revois tes cours. Si cette "réponse" n'apparait nulle part, c'est qu'elle est volontairement aberrante dans le QCM, c'est un piège à ne pas cocher.
 
F

furynick

Compagnon
Tout pareil, si tu as été suffisamment assidu sur tes cours si qqch t'es totalement étranger tu n'en aura aucun souvenir donc c'est forcément hors contexte.
 
W

wika58

Compagnon
C'est bien le cas. Aucune trace dans le cours et dans les annexes.
Mais si on fait des recherches 0h24 est bien une réponse à la question.
Et comme je rame un peu sur cette semaine avec toutes ces notions de decalage/travail sur des registres... j'aimerais viser juste pour les réponses.
En plus normalement, il y a un forum sur le cours où on peut poser des questions. Mais malheureusement il a l'air mort pour cette session du MOOC...
 
P

pascalp

Compagnon
Dans ton image, il est écrit H'24, si la syntaxe stricte possible n'est pas respectée, pour moi c'est un piège.
 
W

wika58

Compagnon
Je dois refaire le quiz cet aprèm... je pars avec cet idée.
Mais il y a 4 autres réponses dans la question... et il est difficile de savoir lesquelles des precedentes reponses on été OK ou non.
On a juste un OK/NOK sur la question.

Je mettrais bien la copie de la question et des réponses ici... mais dans le quiz il'est demandé de certifier qu'on répond seul à la question puisque le MOOC peut être diplomant...
 
M

mvt

Compagnon
Si tu ne vise pas le diplôme et que cela reste exceptionnel, ça peut se faire aussi en MP.
Pas de notation H'24 en Cobol !
 
W

wika58

Compagnon
Ca y est je viens de refaire le Quiz et c'est OK pour les 80 %... :smt041
encore une erreur sur la dernière question convenant des séries d'opérations sur des nombres... mais pas grave.:spamafote:

Un exo de signal Morse à faire et je passe à la semaine 4... 8-)
 
F

furynick

Compagnon
Si jamais t'as besoin d'explications que t'aurais pas dans tes cours pour comprendre tes erreur hésites pas.
 
W

wika58

Compagnon
C'est bien dans l'optique de ce forum et de cette section. :smt023

Merci bcp...
Je prends bonne note.:smileJap:

J'ai fait le programme de SOS Morse.
Il fonctione, mais je reconnais que je l'ai fait avec une série de 'delay'...
Qui je sais n'est pas Top pour nos applications.

Je suis en train d'essayer d'écrire le programme sans 'delay' (avec les Millis..) et avec des routines/macros.
J'aurais surement des questions...
Mais je veux d'abord essayer par moi moi-même.
 
Dernière édition:
F

furynick

Compagnon
Il y a une règle d'or en informatique et de mon point de vue elle est applicable à tous les domaines :
KISS
Keep It Super Simple

Si ça fait le taf avec du delay c'est la bonne solution.

Pour les techniques un peu plus avancées tu verras plus tard.
 
W

wika58

Compagnon
Oui c'est ce que je me suis dit aussi pour le devoir...
Le but est de faire clignoter un SOS sur une LED et il n'est rien demander d'autre pendant ce temps.
Donc ca répond à l'énoncée du devoir... CQFD...
 
M

midodiy

Compagnon
Ce qui est demandé, c’est d’utiliser des fonctions. Ils n’interdisent pas l’instruction delay.
J’ai fait une fonction S et une fonction O. Dans la boucle principale, j’appel S, j’appel O, j’appel S, delay 1,2s et ça recommence.
 
W

wika58

Compagnon
Ce qui est demandé, c’est d’utiliser des fonctions. Ils n’interdisent pas l’instruction delay.
Ils suggèrent l'utilisation de fonction...

Mais comme la correction se fait normalement par un "robot/simuateur" celui-ci ne regarde pas comment est construit le programme... du moment que le SOS respecte les impositions de timing des point, barre, silences...

Et comme je dois avancer vu que j'ai mis un peu de temps à assimiler le cours de la sem. 3 ... J'ai utilisé le principe KISS de Furynick...

J’ai fait une fonction S et une fonction O. Dans la boucle principale, j’appel S, j’appel O, j’appel S,...
C'est comme ca que j'ai commencé ma version 2.
Je fais cette v2 pour moi-même.
Je voudrais assimiler les notions de millis, fonction, switch case... et me familiariser avec cette syntaxe un peu rebarbative au début...

A suivre...avec des questions de débutant...
 
Dernière édition:
W

wika58

Compagnon
Un complement de question sur les variables...

Je vois que lors des declarations de ces variables c'est parfois précédé du terme "const"
Je suppose que c'est quand la valeur qui est dans la variable est la même pendant toute l'execution du programme... et en vue de reduire l'espace RAM utilisé ?
 
G

greg_elec

Compagnon
Les millis c'est pratique moi je l'ai utilisé dans un systeme à clavier et LCD pour que le rétroeclairage reste on 5 secondes après le dernier appui touche et en meme temps il me fallais lire un capteur que 1 fois par minute donc avec millis pas soucis
 
W

wika58

Compagnon
Une question pour la gestion de tempo sans utilser l'instruction 'delay' mais avoir qqch d'assez simple dans le programme...

On ne pourrait pas utiliser une fonction avec un paramètre d'entrée qui serait le temps en ms et un paramètre de sortie qui serait un bit à changer d'etat quand la tempo est finie...
Une sorte d'instruction 'MonDelay' mais qui ne bloquerait pas le uC dans une boucle d'attente inutile...
Je ne sais pas si je me fais bien comprendre...
L'idée etant de ne pas avoir ces longues phrases "if (preciousMillis-Millis < maTempo) {}...à tout bout de champ dans le programme principal... 8-)
 
Dernière édition:
V

Vik'TheBike

Nouveau
Un complement de question sur les variables...

Je vois que lors des declarations de ces variables c'est parfois précédé du terme "const"
Je suppose que c'est quand la valeur qui est dans la variable est la même pendant toute l'execution du programme... et en vue de reduire l'espace RAM utilisé ?
Oui c'est bien ça, tu déclares une constante, et si par erreur plus loin dans le code tu essaies de modifier la valeur de cette variable, tu auras une erreur de compilation.
Par contre, ça ne veut pas dire que ta variable ne sera pas stockée sur la pile / chargée en RAM.
 

Sujets similaires

W
Réponses
122
Affichages
10 811
Philippe85
Philippe85
N
Réponses
3
Affichages
837
jpbbricole
jpbbricole
lolo
Réponses
0
Affichages
442
lolo
T
Réponses
1
Affichages
218
Teddy55
T
D
Réponses
0
Affichages
240
dodochef
D
osiver
Réponses
14
Affichages
37 455
osiver
osiver
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
1 048
Dudulle
Dudulle
J
Réponses
12
Affichages
534
Robert
R
P
Réponses
33
Affichages
17 506
wika58
W
T
Réponses
2
Affichages
26 782
Tristan l'apprenti
T
esloch
Réponses
0
Affichages
352
esloch
esloch
altitude
Réponses
21
Affichages
2 883
laboureau
laboureau
laurenttanguy
Réponses
0
Affichages
560
laurenttanguy
laurenttanguy
Haut