Aide Aide programmation Arduino

5

59JAG

Ouvrier
fail :
index = 0
direction = -1
index += direction ( = 0b11111111)
index &= 0b11 ( = 0b11111111)
val &= seq[0b11111111] ==> out of range/memory exception

Les seules valeurs possibles pour index sont 0, 1, 2 et 3.
Faux
index = 0
direction = -1
index += direction ( = 0b11111111)
index &= 0b11 ( = 0b11)
val &= seq[0b11]

il y a juste une erreur
dans mon prog
par contre ta fonction ne fonctionne pas
 
F

furynick

Compagnon
Yes, t'as raison !
Le binaire de tête c'est pas encore au point on dirait :wink:

par contre c'est PINB = val, pas PORTB = val.
PORTB sert à positionner le mode des pins, PINB à positionner les valeurs des pins.
 
5

59JAG

Ouvrier
non PORTB sert à écrire sur les broches lorsque que il sont configurer en sortie et PINB pour la lecture
Capture d'écran 2024-02-17 234206.png
 
Dernière édition:
5

59JAG

Ouvrier
Sortie moniteur serie
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101010
direction -1 val=101000 index[1] =1 PINB=101010
direction -1 val=101000 index[0] =0 PINB=101010
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101010
direction -1 val=101000 index[1] =1 PINB=101010
direction -1 val=101000 index[0] =0 PINB=101010
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101010
direction 1 val=101000 index[3] =10 PINB=101010
direction 1 val=101000 index[0] =0 PINB=101010
direction 1 val=101000 index[1] =1 PINB=101010
direction 1 val=101000 index[2] =11 PINB=101010
direction 1 val=101000 index[3] =10 PINB=101010
direction 1 val=101000 index[0] =0 PINB=101010
direction 1 val=101000 index[1] =1 PINB=101010
direction 1 val=101000 index[2] =11 PINB=101010
direction 1 val=101000 index[3] =10 PINB=101010

avec ma fonction
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101011
direction -1 val=101000 index[1] =1 PINB=101001
direction -1 val=101000 index[0] =0 PINB=101000
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101011
direction -1 val=101000 index[1] =1 PINB=101001
direction -1 val=101000 index[0] =0 PINB=101000
direction -1 val=101000 index[3] =10 PINB=101010
direction -1 val=101000 index[2] =11 PINB=101011
direction 1 val=101000 index[3] =10 PINB=101010
direction 1 val=101000 index[0] =0 PINB=101000
direction 1 val=101000 index[1] =1 PINB=101001
direction 1 val=101000 index[2] =11 PINB=101011
direction 1 val=101000 index[3] =10 PINB=101010
direction 1 val=101000 index[0] =0 PINB=101000
direction 1 val=101000 index[1] =1 PINB=101001
direction 1 val=101000 index[2] =11 PINB=101011
direction 1 val=101000 index[3] =10 PINB=101010
direction 1 val=101000 index[0] =0 PINB=101000
direction 1 val=101000 index[1] =1 PINB=101001
direction 1 val=101000 index[2] =11 PINB=101011
direction 1 val=101000 index[3] =10 PINB=101010
 
F

furynick

Compagnon
Encore raison, j'ai toujours eu du mal avec ces 3 là, j'ai jamais réussi à piger pkoi y'avait deux registres pour faire la même chose (parce que je suis une quiche en électronique).

Du coup, il vaudrait mieux lire l'état sur PORTB et pas sur PINB.
 
W

wika58

Compagnon
@59JAG
Merci pour le code... :smileJap:

Je teste et déchiffre ajdh...
Mais ça a déjà l'air plus digeste pour un débutant :smt047
 
Dernière édition:
W

wika58

Compagnon
j'ai toujours eu du mal avec ces 3 là, j'ai jamais réussi à piger pkoi y'avait deux registres pour faire la même chose
Si tu veux, je te retrouve dans le cours l'endroit où ils en parlent... c'est bien expliqué. :smileJap:
Et si pour une fois que je pouvais t'apporter qqch sur le sujet ce sera avec plaisir...:lol:
 
F

furynick

Compagnon
L'explication je l'ai déjà eu tkt, c'est juste que je dois faire un blocage parce que pour moi c'est redondant.
A chaque fois que j'en ai besoin il faut toujours que je retourne voir la doc et même comme ça j'arrive encore à me planter.
Y'a des trucs comme ça, y'a rien à faire ça veut pas rentrer.
 
W

wika58

Compagnon
Hello,

J'ai fini l'Exo 2 de la semaine 4 et il fonctionne 8-)
Mais à la façon d'un débutant.:oops:

Pourrais-je encore vous solliciter pour commenter/optimiser mon code et donc apprendre.:smileJap:

L'énoncée:

Serrure codée​

En utilisant seulement deux boutons-poussoirs, il faut un peu d'astuce pour réaliser une serrure codée ! Nous allons détecter précisément les pressions et relâchements.

Pour allumer la LED L1, il faudra successivement :
  • appuyer sur P1
  • relâcher P1
  • appuyer à nouveau sur P1
  • appuyer sur P2 (sans relâcher P1)
  • relâcher P2
  • relâcher P1 : c'est alors que L1 devra s'allumer durant trois seconde.
La vitesse d'exécution de la séquence n'est pas importante. Toute autre manipulation est considérée comme fausse. Après une séquence (juste au fausse) le programme doit :
  • attendre jusqu'à ce que plus aucune touche ne soit pressée
  • attendre encore une seconde
  • reprendre sa détection.


Mon code:

D'avance merci.
 
W

wika58

Compagnon
Merci.
Je vais l'essayer.

Pour info, suite à nos discussions sur un autre post, malgré mes réticences (mais il n'y a que les imbéciles qui ne change pas d'avis), j'ai fait une tentative ChatGPT et il m'a fourni un code



mais il ne fonctionne pas...:spamafote:
 
Dernière édition:
W

wika58

Compagnon
Ton code fonctionne si j'utilise la bonne séquence.

Mais il y a un petit bug si j'appuie dans tous les sens...
Si appui BP2 puis relaché, puis appui BP2 maintenu et BP1 appuyé puis relaché... la LED s'allume...

Il faut que je teste cette combinaison sur le mien...
 
V

vibram

Compagnon
Ce que je t'ai donné vient de chatgpt :wink:

J'ai la version payante donc en théorie un peu plus performante.
Comme je t'avais dit, il. Ne faut pas prendre ça comme du pain béni mais plutôt une assistance. Je m'en sers souvent au boulot pour du VBA ou du SQL. Généralement soit il me sort quelque chose de juste au premier coup sinon je lui donne le message d'erreur avec la ligne et il se corrige. J'ai rarement besoin de plus de 2 tentatives pour arriver à mes fins. Avec arduino c'est un peu plus galère mais souvent il me donne une piste.
Merci.
Je vais l'essayer.

Pour info, suite à nos discussions sur un autre post, malgré mes réticences (mais il n'y a que les imbéciles qui ne change pas d'avis), j'ai fait une tentative ChatGPT et il m'a fourni un code



mais il ne fonctionne pas...:spamafote:
 
W

wika58

Compagnon
Ce que je t'ai donné vient de chatgpt :wink:
Je m'en doutais un peu ... :wink:
sinon je lui donne le message d'erreur avec la ligne et il se corrige.
Mais je n'ai pas de msg d'erreur à la compilation... C'est juste la Led qui ne s'allume jamais...

J'ai testé le bug... et j'ai qqch de similaire sur le mien...

Comme le but est d'apprendre en synthétisant ce qui a été enseigné la semaine, je me force à rédiger mon code avant de demander à qqun d'autre...
Bon là début de la sem. 5 (Timers, Interruptions, Analogique).

S'il y a d'autres sachants qui veulent bien regarder cet Exo...:smileJap:

A suivre...
 
Dernière édition:
V

vibram

Compagnon
Dans ce cas là, il faut lui répondre en expliquant succinctement le problème.

Après je ne m acharne pas non plus, c'est soit ça fonctionne pas au bout de quelques aller retours, soit je garde la base et je retravaille moi même. Parfois il se perd...notamment quand j'avais mon projet de diviseur en utilisant l. Algorithme de bresenham, il avait eu du mal...
 
W

wika58

Compagnon
Je viens d'essayer 3 fois... Il me fait un nouveau code en s'excusant et en m'expliquant qu'il a modifié... mais tjrs aucune LED allumée...

J'arrête.
 
F

furynick

Compagnon
C'est rassurant ... on en est pas encore au scénario Terminator :D
 
D

Dudulle

Compagnon
Personnellement j'ai essayé plusieurs fois ChatGPT pour coder, et j'ai surtout perdu du temps.
Avec le recul il doit surement être performant pour faire les étapes une à unes (et on se débrouille pour faire le lien entre chaque), mais il ne faut surtout pas lui demander de faire un code complet.
 
W

wika58

Compagnon
Je crois aussi... et il y a un post dédié au codage Arduino par ChatGPT...

Revenons à l'aide des sachants envers les non-sachants...

Une question:
Au cours MOOC, ils nous ont appris à assigner les Pins par :
#define BP2 3
Mais je vois dans bcp de codes que l'assignation est faite ainsi:
const int P2 = 3;
Quelle différence ? Avantages/Inconvenients?

:7hus5:
 
W

wika58

Compagnon
Merci Dom. :smileJap:

Pourquoi Led2... ils demandent d'activer Led1...
 
Dernière édition:
W

wika58

Compagnon
Je m'autocritique...:smt021

Dans mon code j'ai oublié l'antirebond comme discuté auparavent... :oops:
je vais modifier mon code pour vous le soumettre a nouveau...
 
F

furynick

Compagnon
Je crois aussi... et il y a un post dédié au codage Arduino par ChatGPT...

Revenons à l'aide des sachants envers les non-sachants...

Une question:
Au cours MOOC, ils nous ont appris à assigner les Pins par :

Mais je vois dans bcp de codes que l'assignation est faite ainsi:

Quelle différence ? Avantages/Inconvenients?

:7hus5:

Je crois qu'on l'avait déjà évoqué auparavant, le pb vient de l'absence de typage des define (à moins que ce soit explicite).
Du coup le compilo ne peut pas dépister d'éventuelles anomalies de types.
 
W

wika58

Compagnon
oui mais comme j'avais 2 leds sur le montage, j'en ai mis une pour débugger...
C'est laquelle qui fait la fonction demandée.

Attention (ce n'est pas le cas à cette session-ci puisqu'on arrive pas à soumettre nos codes)... normalement la validation de nos codes est faite par un robot/simulateur et donc si ce ne sont pas sorties demandées le code est déclaré comme NOK...
 
5

59JAG

Ouvrier
bonsoir
pour la serrure codée je procéderai comme ceci
je défini 5 états

#define nochange 0
#define appuiP1 1
#define relacheP1 2
#define appuiP2 3
#define relacheP2 4

je cree un tableau avec la sequence voulu
byte sequence[] = {appuiP1, relacheP1, appuiP1, appuiP2, relacheP2, relacheP1};
dans le loop j appel un fonction qui scan les 2 touches et qui renvoi 0 si pas changement 1 si appuiP1 .....ect
puis une test de la touche avec le tableau si ok index du tableau +1 sinon index =0
arrive a la fin tu tableau ok allume led
 

Sujets similaires

W
Réponses
122
Affichages
9 632
Philippe85
Philippe85
N
Réponses
3
Affichages
767
jpbbricole
jpbbricole
lolo
Réponses
0
Affichages
408
lolo
D
Réponses
0
Affichages
223
dodochef
D
osiver
Réponses
14
Affichages
36 184
osiver
osiver
D
Général langage MMBASIC
Réponses
8
Affichages
875
Dudulle
D
P
Réponses
33
Affichages
16 153
wika58
W
T
Réponses
2
Affichages
25 527
Tristan l'apprenti
T
altitude
Réponses
21
Affichages
2 778
laboureau
laboureau
esloch
Réponses
0
Affichages
275
esloch
esloch
laurenttanguy
Réponses
0
Affichages
486
laurenttanguy
laurenttanguy
Haut