ton test avec le petit fils !
Nickel ! enfin presque, j'ai "partie gratuite" qui ne fonctionne pas...
Quand je debranche le connecteur qui va aux lampes de la partie gratuite, il y a bien les 15V lorsque je fais le pont sur les pattes du support qui vont bien.
Mais, si je branche le connecteur qui va aux lampes, pas une lampes ne s'allument. et si je mesure la tension au bornes du connecteur, j'ai moins d'un volt !!!
Je pense à un court circuit et au fonctionnement du polyswitch, à voir...ton test avec le petit fils !
Nickel ! enfin presque, j'ai "partie gratuite" qui ne fonctionne pas...
Quand je debranche le connecteur qui va aux lampes de la partie gratuite, il y a bien les 15V lorsque je fais le pont sur les pattes du support qui vont bien.
Mais, si je branche le connecteur qui va aux lampes, pas une lampes ne s'allument. et si je mesure la tension au bornes du connecteur, j'ai moins d'un volt !!!
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
ça doit allumer 2 ampoules. le polyswitch ne dit rien quand les 4 ampoules (pour le but) sont allumées...
Il y a un truc pour trouver un court circuit ?
Vérifier la R à l'ohmmètre, (il y a des R de 30ohms et les ampoules, ça doit faire... quelques ohms). J'enlèverais les lampes, et il doit plus y avoir de résistance. Et faut chercher un peu...
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Ok, je chercherai demain...
Merci
Bonne nuit
Bonjour,
c'est bien un court circuit ! je ne comprends pas exactement pourquoi....
Il faut que je revois le cablage du "partie gratuite"....
A suivre
Ok,
Ce problème résolu, voici un code (M2 et X2), repris de ton programme avec quelques corrections (tempo pulsout, mémoires bytes et words)
Il doit allumer toutes les ampoules 2s et faire fonctionner le gong, en boucle
Après, on voit, j'ai pas tout compris sur la partie gratuite.Code:;test lampes babyfoot + gong #no_data symbol C_BUT = b1 ;Compteur de buts symbol N_GRATUITE = b2 ;Partie gratuite symbol N_POURC_GRATUITE = b3 ; 1/N_POURC_GRATUITE symbol cpt=b4 ;compteur symbol T_DONG = w11 symbol T_LAMPE = w12 symbol T_PAUSE = w13 symbol DONG = C.2 ;La cloche symbol BT_RAZ = pinC.3 ;Bouton RAZ symbol L_LOGO = C.4 ;les 3 ampoules de la marque symbol WIN_AD = pinC.5 ;Relié à C.1 adversaire est arrivé à 10 symbol BT_BUT = pinC.6 ;contact quand l'equipe a marqué un but symbol L_BUT = C.7 ;les 4 ampoules du gardien dirsB= %11111111 ;Désignation des portsB dirsC= %10010111 ;Désignation des portsC: C.3,C.5,C.6 en entrées pullup %110100000000000 ;pullup sur C.3 C.5 et C6 N_GRATUITE = 0 N_POURC_GRATUITE = 10 T_DONG = 10000 ; pulsout pour le dong (en x10µs), soit 100ms T_LAMPE = 2000 ; tempo lampes en ms T_PAUSE = 1000 ; temps de pause en ms initialisation: ;Allume/eteint toutes les lampes do for C_BUT=0 to 9 high C_BUT pause T_PAUSE low C_BUT pulsout L_LOGO, T_LAMPE next high L_BUT: pause T_LAMPE :low L_BUT: pause T_LAMPE: high L_BUT: pause T_LAMPE :low L_BUT pulsout DONG, T_DONG ;test de dong loop
MM
Dernière modification par mag1 ; 31/07/2017 à 21h20.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Super !! merci
Ben, je ne sais pas pourquoi, mais je vais refaire le cablage de la "partie gratuite".
Bonne nuit
Pas tant que ça..
Un autre code plus en accord avec ce que j'ai dit
2s d'allumage et 1s de pause
Code:;test lampes babyfoot + gong #no_data symbol C_BUT = b1 ;Compteur de buts symbol N_GRATUITE = b2 ;Partie gratuite symbol N_POURC_GRATUITE = b3 ; 1/N_POURC_GRATUITE symbol cpt=b4 ;compteur symbol T_DONG = w11 symbol T_LAMPE = w12 symbol T_PAUSE = w13 symbol DONG = C.2 ;La cloche symbol BT_RAZ = pinC.3 ;Bouton RAZ symbol L_LOGO = C.4 ;les 3 ampoules de la marque symbol WIN_AD = pinC.5 ;Relié à C.1 adversaire est arrivé à 10 symbol BT_BUT = pinC.6 ;contact quand l'equipe a marqué un but symbol L_BUT = C.7 ;les 4 ampoules du gardien dirsB= %11111111 ;Désignation des portsB dirsC= %10010111 ;Désignation des portsC: C.3,C.5,C.6 en entrées pullup %110100000000000 ;pullup sur C.3 C.5 et C6 N_GRATUITE = 0 N_POURC_GRATUITE = 10 T_DONG = 10000 ; pulsout pour le dong (en x10µs), soit 100ms T_LAMPE = 2000 ; tempo lampes en ms T_PAUSE = 1000 ; temps de pause en ms initialisation: ;Allume/eteint toutes les lampes do for C_BUT=0 to 9 high C_BUT pause T_LAMPE low C_BUT pause T_PAUSE next high L_LOGO :pause T_LAMPE: low L_LOGO pause T_PAUSE high L_BUT: pause T_LAMPE :low L_BUT pause T_PAUSE pulsout DONG, T_DONG ;test de dong loop
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Court circuit trouvé et corrigé pour la sortie "partie gratuite" mais "BUT" et "LOGO" ne fonctionne plus.
Surement un nouveau court circuit vu la montée en température du 7805....
to be continu
Bonjour,
Houra!!!! tout a l'air bon, plus de faux contact et soudure hasardeuse...
Le code corrigé avec les bonnes entrée/sortie.
Sinon, j'ai fait quelques tests pour le dong avec 10ms la cloche sonne bien !
Le code est pour le M2 (Soit equipe #2) je vais faire un test avec le X2
Code:;test lampes babyfoot + gong #no_data symbol C_BUT = b1 ;Compteur de buts symbol N_GRATUITE = b2 ;Partie gratuite symbol N_POURC_GRATUITE = b3 ; 1/N_POURC_GRATUITE symbol cpt=b4 ;compteur symbol T_DONG = w10 symbol T_LAMPE = w11 symbol T_PAUSE_A = w12 symbol T_PAUSE_E = w13 symbol WIN_AD = pinC.2 ;Relié à C.1 adversaire est arrivé à 10 symbol BT_RAZ = pinC.3 ;Bouton RAZ symbol L_BUT = C.4 ;les 4 ampoules du gardien symbol L_LOGO = C.5 ;les 2 ampoules de la marque symbol BT_BUT = pinC.6 ;contact quand l'equipe a marqué un but symbol DONG = C.7 ;Clocle dirsB= %11111111 ;Désignation des portsB dirsC= %10010111 ;Désignation des portsC: C.2,C.3,C.6 en entrées dirsC= %10110011 ' 76543210 pullup %1100110000000000 ;pullup sur C.2 C.3 et C6 '7654321076543210 N_GRATUITE = 0 N_POURC_GRATUITE = 10 T_DONG = 1000 ; pulsout pour le dong (en x10µs), soit 10ms T_LAMPE = 2000 ; tempo lampes en ms T_PAUSE_A = 1000 ; temps de pause en ms Allumé T_PAUSE_E = 200 ; temps de pause en ms Eteint initialisation: ;Allume/eteint toutes les lampes do for C_BUT=0 to 9 high C_BUT pause T_PAUSE_A low C_BUT pause T_PAUSE_E next high L_LOGO :pause T_PAUSE_A: low L_LOGO pause T_PAUSE_E high L_BUT: pause T_PAUSE_A :low L_BUT pause T_PAUSE_E pulsout DONG, 7000 ;test de dong loop
Bonjour,
Quelques remarques:
La différence entre M2 et X2 utilisée dans le code test (il y en a beaucoup d'autres) est la récupération de "serial in", pour l'allumage de "partie gratuite": DAC pour le M2 et A0 pour le X2.
Dans le code test lampe, la partie gratuite n'est pas testée, le code était le même, sans le "#picaxe M2" ou "#picaxe X2" (nécessaire pour la vérification spécifique de la syntaxe du code).
Pour tester "partie gratuite", il faut distinguer les codes et ajouter le test sur A0.
Si le test sans les µC est ok pour les deux côtés, il est bon de tester l'allumage des lampes de chaque côté, avec "partie gratuite" côté X2.
Ensuite, il faut un code spécifique complet pour chaque côté (seul différence, partie gratuite).
Vérifier le bon fonctionnement des switchs "but".
Et on verra...
PS :le temps du gong dans ce code est de 70ms
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
70ms ????Envoyé par mag1PS :le temps du gong dans ce code est de 70ms
Oui, le test des 2 cotés est OK sans µC
Les switchs "But" sans Ok au multimetre
Pour le "reset", l'interruction est sur le changement d'etat ?
Pour le dong(si j'ai bien compris)
le M2 1000*1,25 soit 12,5ms
le X2 1000*0,625 soit 6,25ms
c'est bien cela ?
avec la valeur du pulsout à 1000, le dong fonctionne plutôt pas mal avec le M2 et pas bien avec le X2.
Dernière modification par elwe31 ; 06/08/2017 à 16h11.
Ben si on est sur un 20M2, la doc dit que l'unité de temps à 4MHz (fréquence par défaut) est de 10µs
pulsout DONG,7000
ça fait 70000µs donc 70ms.
Pour éviter de trop se tromper, il faut lire scrupuleusement la doc, qui dit:
Fréquence par défaut pour la série M2 = 4MHz
Fréquence par défaut pour la série X2 = 8MHz
Pour "pause"
L'unité de temps est de 1ms
Ceci pour un M2 à 4 MHz ou un X2 à 8 MHz
Donc, si on ne change pas les fréquences par défaut, pause 500 donne 500ms sur un 20M2 ou un 20X2
Pour "pulsout"
L'unité de temps est de 10µs à 4 Mhz (sans spécification de la série)
Et donc, aux fréquences par défaut: pulsout 2000 donnera un créneau de 20ms sur un M2, mais seulement 10ms sur un X2
Pour la commande pause, pause 500 donne sensiblement 500ms, mais pause 2 donne plutôt 3 ou 4 ms
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Petite video de l'equipe #1
L’équipe #2 fonctionne aussi nickel !
Je reglerai le pb du dong dans la semaine.
Il faut que je fasse attention a ne pas faire fonctionne le dong en même temps par les 2 équipes.
Pour les fréquences, J'ai trouvé le tableau de la page 162 du pdf manuel en fr #2 (le lien est sur ton site).
Mais je n'avais pas tout lu du manuel fr #1
Bon, c'est encourageant...
Même si les deux équipes actionnent le gong en même temps (probabilité ?), il n'y a aucun problème électrique.
J'ai un ou deux codes sous le coude, si intéressé...Mais donne d'abords les tiens.
C'était bien la peine qu'on le traduise..Mais je n'avais pas tout lu du manuel fr #1 .
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
C'est la peine.... Ca me sert !!!!
merci
Probabilité, uniquement lors du démarrage... Mais ça peut ce contourner facilement...
Il me faut bosser la partie interruption.
Encore merci.
L'intérêt de l'interruption est de pouvoir l'actionner n'importe quand pour reseter le système. On détecte un changement état (haut ou bas, à ajuster en fonction du poussoir, NO ou NF).
MM
Dernière modification par mag1 ; 06/08/2017 à 23h43.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Voila le code pour le M2
Question : est-il possible de forcer la vitesse de l'horloge pour avec la meme sur M2 et X2 ? j'ai pas trouvé.
Code:;babyfoot Equipe #1 #no_data symbol C_BUT = b1 ;Compteur de buts symbol N_GRATUITE = b2 ;Partie gratuite symbol N_POURC_GRATUITE = b3 ; 1/N_POURC_GRATUITE 'symbol CPT_RAZ=b4 ;compteur symbol T_DONG = w10 symbol T_PAUSE_A = w11 symbol T_PAUSE_E = w12 symbol T_PAUSE_BUT = w13 symbol L_GRATUITE = A.0 symbol WIN_AD = pinC.2 ;Relié à C.1 adversaire est arrivé à 10 symbol BT_RAZ = pinC.3 ;Bouton RAZ symbol L_BUT = C.4 ;les 4 ampoules du gardien symbol L_LOGO = C.5 ;les 2 ampoules de la marque symbol BT_BUT = pinC.6 ;contact quand l'equipe a marqué un but symbol DONG = C.7 ;Clocle dirsB= %11111111 ;Désignation des portsB dirsC= %10010111 ;Désignation des portsC: C.2,C.3,C.6 en entrées dirsC= %10110011 ' 76543210 pullup %1100110000000000 ;pullup sur C.2 C.3 et C6 '7654321076543210 setint %00000000,%00001000 ;interruption du RAZ ' 76543210 76543210 Port C1 à C5 N_GRATUITE = 0 N_POURC_GRATUITE = 10 T_DONG = 14000 ; pulsout pour le dong (en x5µs), soit 70ms T_PAUSE_A = 1000 ; temps de pause en ms Allumé T_PAUSE_E = 200 ; temps de pause en ms Eteint T_PAUSE_BUT = 500 initialisation: ;Allume/eteint toutes les lampes for C_BUT=0 to 9 high C_BUT pause T_PAUSE_A low C_BUT pause T_PAUSE_E next high L_LOGO :pause T_PAUSE_A: low L_LOGO pause T_PAUSE_E high L_BUT: pause T_PAUSE_A :low L_BUT pause T_PAUSE_E high L_GRATUITE :pause T_PAUSE_A: low L_GRATUITE pause T_PAUSE_E pulsout DONG, T_DONG C_BUT=0 main: ;Procedure principale do do while BT_BUT = 0 'tant qu'il n'y a pas de but. If N_GRATUITE > N_POURC_GRATUITE then : N_GRATUITE = 0 : else : N_GRATUITE = N_GRATUITE + 1 : endif 'incremente partie gratuite loop do loop while BT_BUT = 1 or WIN_AD = 1 'on bloque que le but soit eteind ou que l'adversaire a gagner if C_BUT > 0 then 'si ce n'est pas le premier on eteind l'ampoule du but precedant b2 = C_BUT - 1 low b2 endif high C_BUT 'on allume l'ampoule du But inc C_BUT 'on incremante le compteur 'Traitement des buts If C_BUT <=9 then 'si pas 10ieme buts -> Dong + lumiere du gardien high L_BUT pulsout DONG, T_DONG pause T_PAUSE_BUT low L_BUT else for b20=0 to 3 'si 10ieme buts Dong + lumiere du gardien 3 Fois pulsout DONG, T_DONG high L_BUT high L_LOGO Pause T_PAUSE_BUT low L_BUT low L_LOGO next if N_GRATUITE = N_POURC_GRATUITE then : gosub PARTIE_GRATUITE : endif 's'il y a une partie gratuite endif do while C_BUT > 9 high L_LOGO Pause T_PAUSE_BUT low L_LOGO loop loop PARTIE_GRATUITE: high L_GRATUITE pulsout DONG, T_DONG ' 2 Dong low L_GRATUITE Pause T_PAUSE_E high L_GRATUITE pulsout DONG, T_DONG low L_GRATUITE ; Interruction patte C.3 (RAZ) interrupt: do loop while BT_RAZ=0 setint %00000000,%00001000 ;interruption ' 76543210 76543210 Port C1 à C5 goto initialisation 'reset return
Pour la question, voir la commande setfreq
Dans le code, y a des trucs bizarre:
Pourquoi deux dirsC ? il y en a un de trop
Pourquoi T_DONG=14000 , donne 70ms sur un M2 à 4 MHz alors que l'unité est 10µs
Y a une pullup programmée sur C.7 ?
b2 sert plusieurs fois ?
très compliqué la partie gratuite, on peut faire beaucoup plus simple: on incrémente une variable dans la boucle d'attente du but ok, le if then else ne sert à rien. on teste cette variable à la fin (ex modulo 10=une chance sur 10; modulo 2, une chance sur 2)
IMPORTANT: l'interruption est un sous programme, comme un gosub, il doit se terminer par un return (à moins de faire un reset) sinon: erreur de pile tôt ou tard (relire ici: http://electromag1.wifeo.com/les-pic...ur-basic-3.php)
On verra la suite après
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Oups! c'est pour le X2 ! (Equipe 1 avec partie gratuite)
Oui, c'est une erreur les 2 dirsC, le dernier est le bon.
Non pas de pullup sur le C.7 exact !
Oups le b2
Oui Plein de solution pour la partie gratuite !
Bonjour,
Voici une suggestion pour la partie gratuite.
Le compteur tourne pendant l'appui sur RESET. On fait un modulo (//n) , n est la chance de gagner : //2 donne une chance sur deux. Si le résultat est 0, on gagne , Ex: //5 donne une chance sur 5 . on fait le test sur 0, ou 1, ou...4, c'est pareil. Le pavé s'allume
Le pavé "prochaine partie gratuite" reste allumé le temps de la partie et s'éteint si le tirage suivant est négatif (mais on peut faire autre chose).
Je suggère également pour améliorer le système, une procédure à la mise sous tension pour régler les chances de gagner (le n) sans reprogrammer. Le n serait gardé en mémoire dans l'EEPROM du µC.
MMCode:;babyfoot elwe 08082017 ;pour 20X2, avec partie gratuite ;**** nominations ports ;sorties B.0 à C.1 (de 0 à 9) sorties but #picaxe 20X2 #no_data symbol PGratuite=A.0 symbol DONG = C.2 ;La cloche symbol BT_RAZ = pinC.3 ;Bouton RAZ :ouvert=reset symbol L_LOGO = C.4 ;les 3 ampoules de la marque symbol WIN_AD = pinC.5 ;L'adversaire est arriv? ? 10 symbol BT_BUT = pinC.6 ;contact temporairement fermé quand l'equipe marque un but symbol L_BUT = C.7 ;les 4 ampoules du gardien ;*** nominations variables symbol C_BUT = b1 ;Compteur de buts symbol cpt =b2 ;variable compteur divers symbol temps =b3 ;variable temps aléatoire symbol T_DONG = w13 ;tempo dong symbol T_LAMPE = w12 ;tempo lampe on symbol T_PAUSE = w11 ;************** dirsB= %11111111 ;Désiagnation des ports B dirsC= %10010111 ;Désiagnation des ports C pullup %0110100000000000 ;pullup sur C.3 C.5 et C6 setint %1000,%1000 ;interruption niveau haut sur C.3(photo) T_DONG = 14000 ; pulsout pour le dong (en x5µs) T_LAMPE = 500 ; pulsout des lampes en ms T_PAUSE = 500 ; temps de pause do do loop while BT_BUT = 0 or WIN_AD = 1 ;blocage pas de but ou advers a gagné do loop while BT_BUT=1 ;y a un but! attente relachement switch but if C_BUT > 0 then ;si ce n'est pas le premier cpt = C_BUT - 1 ;on éteint low cpt ;le but précédent endif high C_BUT 'on allume l'ampoule du But inc C_BUT 'on incremante le compteur de but If C_BUT <=9 then 'si pas 10 buts Dong + lumiere du gardien high L_BUT pulsout DONG, T_DONG low L_BUT else for cpt=0 to 3 'si 10 buts Dong + lumiere du gardien 3 Fois pulsout DONG, T_DONG high L_BUT high L_LOGO Pause 200 low L_BUT low L_LOGO pause 200 next endif do loop while C_BUT > 9 ;ON A GAGNÉ!!...attente appui sur RESET loop interrupt: do inc temps pause 1 ;bug simu loop while BT_RAZ=1 temps=temps//2 ;//x -> donne une chance sur x if temps=0 then high Pgratuite pulsout DONG, T_DONG ' 2 Dong pause 100 pulsout DONG, T_DONG else low Pgratuite endif for C_BUT=0 to 9 low C_BUT next low L_BUT low L_LOGO C_BUT=0 setint %1000,%1000 ;interruption niveau haut sur C.3 return
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Merci.
Apres réflexion, pour la partie gratuite, c'est pas au reset qu'il faut l'afficher, mais au 10ième but (de l’équipe 1 ou 2) ! non ?
Pour le compteur peut-on s'en servir pour tester le reset ?
Si on appuie (C.3) seconde ça reset. sinon si c'est moins ça fait juste une nouvelle partie ?
Il faut peut-être ajouter des dong pour la partie gratuite!!
Pour C.3, L'interruption ce fait de 1 vers 0. Ton code :
lève l'interruption tout le tempsCode:setint %1000,%1000 ;interruption niveau haut sur C.3(photo)
Je fait une nouvelle version du code.
C'était ma première idée, il est vrai que la carte équipe 1 sait que l'adversaire a gagné.
Donc je revois le problème avec ça.
L'interruption se déclenche lorsque C.3 passe à 1 . Le poussoir est normalement fermé, le niveau de C.3 est 0. On appuie, il passe à 1
Dans l'interruption, il faut tester le relâchement du poussoir pour continuer, sinon, on boucle.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Non, comme dit plus haut (#439), le bouton reset est toujours en contact, lorsque l'on appuie sur le boutons, ça coupe.
donc ça passe de 1 a 0.
Le probleme qu'il y a aujourd'hui,
C'est qu'il faut que l’équipe 1 marque un but pour voir si l’équipe 2 a marqué...
Ne faudrait pas une interruption sur C.2 pour gerer cela ?
Et non....
Le contact est (ou doit être) entre le 0v et l'entre C.3 . Le contact fermé, l'entrée est à 0v. Lorsqu'il s'ouvre, la R de pullup interne met l'entrée à 1 (5v)
Pour l'autre problème, c'est uniquement dans ton code...
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Grrrrrrrr ! je pige rien !Envoyé par mag1Et non....
Le contact est (ou doit être) entre le 0v et l'entre C.3 . Le contact fermé, l'entrée est à 0v. Lorsqu'il s'ouvre, la R de pullup interne met l'entrée à 1 (5v)
J'ai essayé ton programme....
Carte Equipe #1 equipé du X2 avec ton dernier programme...
La carte #2 sans µc !!
Le but 10 reste toujours allumé.
Et, il y a un pb de câblage, j'ai pas croisé le cable qui va de Equipe#1 C.1 vers Equipe#2 C.2...
Je pars en congés jeudi, je reprends les hostilités le 21 !
Auriez-vous un peu de lecture sur ces histoires de pullup/down ?