Horloge d'échecs tm1637

Enlève-le et tu verras

Tu noteras au passage que c'est la seule macro où tu as mis un espace entre le nom de la macro et les arguments et justement c'est celle où tu as des erreurs.

En C++, selon la norme, une macro fonctionnelle doit être définie avec une liste d’arguments immédiatement adjacente à l’identifiant de la macro, sans espace intermédiaire.

Si un espace est inséré entre le nom de la macro et la parenthèse, la macro est interprétée comme une macro objet, ce qui entraîne un comportement inattendu.

➜ Une macro objet est une macro sans liste d’arguments, et son expansion se substitue directement à son identifiant sans traitement d’arguments. Donc vous injectiez le mot _temps_ dans le code

1 Like

Sisi :see_no_evil:

Ok
Je pensais que les espaces étaient valides en toute circonstance
Du coup ça compile mais j'ai toujours mon problème
Ça affiche 20'59 sur le chronoB quand j'ajoute 1 minute et ainsi de suite

As-tu bien compris ce qui est ci-haut ?
Afin que tempsLimiteA et tempsLimiteB soient semblables, il faut utiliser la même référence.

Il faudrait donc, quelque chose comme ceci:

int instant = millis()
  tpsLimiteA = chronoA + instant; tpsRestantA = tpsLimiteA - instant;
      memo_temps_restantA = tpsRestantA ;

 tpsLimiteB = chronoB + instant; tpsRestantB = tpsLimiteB - instant;
      memo_temps_restantB = tpsRestantB ;
1 Like

Merci
J'essaye ça ce week end
Il est clair que j'aurai pas pu trouver ça tout seul
Je tiens au courant du résultat

1 Like

Bonjour à tous!!
Voila j'ai donc fait pas mal d'essais avec vos propositions de résolution du problème
Remplacer millis par instant
Ecrire chronoB=chronoA après les lignes de calculs "tempsRestant=etc etc"
Mais le problème persiste

Il m'a pris l'idée d'inverser les consignes
compteareboursA();
compteareboursB();

Donc
compteareboursB();
compteareboursA();

(dans le même if BPplus à la fin)

Et là le problème n'est plus sur l'écran du joueur B mais du joueur A

Voilà je pensais que cette info pourrait vous aider... à m'aider😅

Merci pour les coup d pouce

Bonjour
J'ai fait un wokwi pour faciliter les essais...il ne compile pas alors que le code compile dans l'IDE
Il n'accepte pas la déclaration de la librairie tm1637.h
Si quelqu'un sait pourquoi??

Tu n'a pas ajouter la librairie, donc le wokwi ne peut pas trouver les fichiers d'entête.

Une fois corrigé, ton code ne compile, ni dans le wokwi, ni dans l'IDE Arduino.

tu as le code suivant qui traine en dehors de toutes fonction.

setValue(0);
          }

il y a plusieurs bibliothèques pour le TM1637 connues par wokwi

laquelle c'est exactement — est-ce GitHub - avishorp/TM1637: Arduino library for TM1637 (LED Driver) ?

Je n'ai pas pu vérifier car le code est faux, mais la TM1637, possède un .h correctement nommé.

J'ai à peu près arrangé ça :
N'arrivant pas à effacer le code j'ai mis la partie inutile en commentaire(j'utilise wokwi sur smartphone)
Et j'ai mis la bibliothèque tm1637
Il ne compile pas mais il me donne plein de défauts entre autre les boutons renommés ou à renommer??:exploding_head:

Je vois que @dfgh suis le dossier😉

Rooh
Ça n'a pas enregistré :weary:
Je refais ça tantôt

Voilà :grinning:
Un code qui compile avec le branchement(j'ai pas mis les resistances pull up)
Par contre ça fait rien quand j'appuie sur les boutons....c'est peut être j'ai mal fait quelque-chose ?
Sinon en haut bouton +
Et en bas un bouton par joueur au dessus des afficheurs correspondants

Alors avant tout, je vais jouer les rochons, mais ton code est illisibles :frowning:
Essaye de l'indenter, même si je me doute que sur mobile ce ne doit pas être facile.

Tes branchement ne sont pas bon, quand tu indiques que tes broches de ton µC sont en PULLUP, cela indique que la broche est raccordé à une résistance, qui est elle même connecté au 5V

Du coup dans ton wokwi tes boutons étant connectés d'un coté au 5V du PULLUP et de l'autre coté au 5V de l'Arduino, ta broche d'entrée ne peut voir que du 5V et ne changera jamais d'état.

Une fois ceci corrigé ton code semble marcher :slight_smile:

Je pense aussi que ton code me parais très compliqué par rapport à la tâche qu'il est censer faire.
@J-M-L a fait un tutorial sur les machines à état et par une coïncidence cosmique, cela devrait s'appliquer à ton projet :slight_smile:
Je suis étonné qu'il n'est pas encore sortie son tampon d'ailleurs :wink:

1 Like

Il y a une fonction formatage du code

2 Likes

C’est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

:wink:

1 Like

Merci à tous
Je vais essayer d'arranger tout ça

Oui mon code est un peu dégueux,je m'attendais à ce qu'on me le dise bien plus tôt😁

Concernant la machine à état j'ai regardé ça me semble accessible mais j'ai quand même besoin de me documenter et m'exercer mais d'abord je voudrais régler ce problème d'affichage qui ne devrait pas l'être avec la machine à état
J'ai regardé aussi un exemple de @bricoleau sur un bouton avec easyrun pour ajouter du temps de plus en plus rapidement en appuyant longtemps ,le code est complet mais je ne saurai l'accoupler à mon code.mais c'est pour plus tard...
Encore de la documentation...