Telectroboy
Active member
Bonjour,
J'ai tout testé et remonté hier soir.
Je vais leur rendre, ils feront la suite des tests!
J'ai tout testé et remonté hier soir.
Je vais leur rendre, ils feront la suite des tests!
Bonjour,Bonjour,
J'ai tout testé et remonté hier soir.
Je vais leur rendre, ils feront la suite des tests!
Ça permet de classer les concurrents, mais ça ne veut pas dire que ce soit équitable ; vu la conception du bidule, il semble que des variations aléatoires pouvant atteindre 1/10 en plus ou en moins soient possibles... Pas sur que ce soit tellement plus juste qu'un chronométrage manuel.Il aurait peut être été sympa d'y ajouter un RTC ou une horloge fiable histoire de ne pas avoir trop de fluctuations avec la température.
Je n'ai pas calculé l'écart possible dans le chronométrage c'est peut être négligeable.
Enfin dans tous les cas ça permet de classer précisément les participants. Et de façon plus fiable qu'à la main.
Bonjour,Bonjour
Je me lance dans la fabrication d'un afficheur extérieur pour mon chrono ... avec le confinement, j'ai un peu de temps libre
@MGU, j'ai refait un schéma récapitulatif depuis Electromag1, mais je me demande à quoi sert la diode 1N5819 présente sur la carte mère de la page 3.
do
gosub affich 'Ligne utile avec le lactch des afficheurs ?'
loop while RAZ=1 and depart=1
;Afficheur exterieur
;B.0 : 1=chrono mère est démarre -> chrono fille demarre
;Chrono mère arrete, B.0=0 -> envoi en serie le temps final
#picaxe 28X2 'Type de Picaxe
#no_data
#no_table
setfreq M16
settimer 64911 'reglage timer 1/100 s ... a ajuster
; --------------- Initialisation
dirsB=%00111100 ' B2 -> B5 = sorties : BCD
dirsC=%11111000 ' C3 -> C7 = sorties : afficheur actif
symbol chiffre=b6
symbol digit=b7
symbol centieme=b8 ' 1=affiche
symbol val=w13 ' Temps du chrono
symbol cmd=pinB.0 ' 1=START - 0=STOP
centieme=1 ' Affichage des centiemes
; --------------- Chrono
Do
val=0
gosub affich ' Affichage 000,00
centieme=0 ' Ne plus afficher les centiemes
do ' Boucle d'attente START
loop while cmd=1
timer=0
do ' Chrono demarre
val=timer ' Lecture du temps
gosub affich ' Affichage du temps
loop while cmd=0
gosub affich ' Affichage du dernier temps
centieme=1 ' Affichage des centiemes
serrxd [1000,affich],("T-"),val ' Temps reel du chrono mere via serie, apres timrout de 1 sec -> affichage temps du chrono fille
disconnect
gosub affch ' Affichage temps du chrono
do ' Attente redémarrage pour garder le dernier temps
loop while cmd=1
loop
; --------------- Sous-routines
affich:
bintoascii val, b1,b2,b3,b4,b5
if centieme=1 then
digit=%01111000 ' Ditit centiemes actif
chiffre=b5-48
gosub affchiffre
end if
digit=%10111000 ' Diziemes
chiffre=b4-48
gosub affchiffre
digit=%11011000 ' Secondes
chiffre=b3-48
gosub affchiffre
digit=%11101000 ' 10 secondes
chiffre=b2-48
gosub affchiffre
digit=%11110000 ' 100 secondes
chiffre=b1-48
gosub affchiffre
affchiffre:
pinsB=4*chiffre ' Chiffre en BCD sur sorties B2 -> B5 : x4 pour commencer au bit 3
pinsC=digit ' Selection du digit actif
pause 1
pinsC=%11111000 ' Reset commande digit : latch afficheurs
return
Oui, les gosub sont inutiles dans la boucle d'attente, suffit de les placer avant. Idem pour le RAZ.Bonjour,
Je retiens votre barrière, je vais devoir en faire une 2me paire car le club souhaite réactiver l'ancien chrono vu que nous faisons nos concours sur 2 terrains depuis 2 années (cette année annulé vu le COVID). Quant il tombera en panne, j'en refais un si toujours au club.
Concernant la détection, j'avais évoqué cela à plusieurs reprises ... c'est en effet une réalité, tous les chiens ne sont pas égaux face au chrono
J'ai fait le premier jet du programme et je me pose la question si une ligne ne serait pas inutile pour une boucle dans le chrono original vu le latch des afficheurs :
Code:do gosub affich 'Ligne utile avec le lactch des afficheurs ?' loop while RAZ=1 and depart=1
;Afficheur exterieur
;B.0 : 1=chrono m?re est d?marre -> chrono fille demarre
;Chrono m?re arrete, B.0=0 -> envoi en serie le temps final
#picaxe 28X2 'Type de Picaxe
#no_data
#no_table
setfreq M16
settimer 64914 'reglage timer 1/100 s ... a ajuster ... augmenter = accelerer
; --------------- Initialisation
dirsB=%10111100 ' B2 -> B5 = sorties : BCD + B.7 = Timeout TX temps
dirsC=%11111000 ' C3 -> C7 = sorties : afficheur actif
symbol chiffre=b6
symbol digit=b7
symbol centieme=b8 ' 1=affiche
symbol tx=b9 ' 1=Timeout TX temps chrono
symbol val=w13 ' Temps du chrono
symbol chrono=w14
symbol cmd=pinB.0 ' 1=START - 0=STOP
symbol txled=pinB.7 ' Led TX temps timeout
centieme=1 ' Affichage des centiemes
; --------------- Chrono
Do
val=0
gosub affich ' Affichage 000,00
chrono=0
centieme=0 ' Ne plus afficher les centiemes
tx=0
txled=tx ' Eteindre led TX temps
do ' Boucle d'attente START
loop while cmd=0
timer=0
do ' Chrono demarre
val=timer ' Lecture du temps
gosub affich ' Affichage du temps
loop while cmd=1
gosub affich ' Affichage du dernier temps
centieme=1 ' Affichage des centiemes
disconnect ' Bloquer le telechargement d'un programme
bptr=10
serrxd [4000],("t"),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptr ' Reception temps reel du chrono mere via serie
reconnect ' Repermettre le telechargement d'un programme
bptr=15
if @bptr="t" then ' Vérification envoi du temps
chrono=@bptrdec - 48 * 10000
chrono=@bptrdec - 48 * 1000 + chrono
chrono=@bptrdec - 48 * 100 + chrono
chrono=@bptrdec - 48 * 10 + chrono
chrono=@bptrdec - 48 + chrono
val=chrono
; ----- Pour test
high B.7
pause 4000
low B.7
else
tx=1 ' Alumer led TX temps : pas reception d'un temps
endif
gosub affich ' Affichage temps du chrono
txled=tx ' Affichage TX temps OK ou pas
do ' Attente redemarrage pour garder le dernier temps
loop while cmd=0
loop
; --------------- Sous-routines
affich:
bintoascii val, b1,b2,b3,b4,b5
if centieme=1 then
digit=%01111000 ' Centiemes
chiffre=b5-48
gosub affchiffre
end if
digit=%10111000 ' Diziemes
chiffre=b4-48
gosub affchiffre
; digit=%11011000 ' Secondes
; chiffre=b3-48
; gosub affchiffre
; digit=%11101000 ' 10 secondes
; chiffre=b2-48
; gosub affchiffre
; digit=%11110000 ' 100 secondes
; chiffre=b1-48
; gosub affchiffre
return
affchiffre:
pinsB=4*chiffre ' Chiffre en BCD sur sorties B2 -> B5 : x4 pour commencer au bit 3
pinsC=digit ' Selection du digit actif
pause 1
pinsC=%11111000 ' Reset commande digit : latch afficheurs
return
serin [4000],C.7,N9600_16,("t"),b10,b11,b12,b13,b14,b15
if b10=9 then ' Vérification envoi du temps
chrono=b11 - 48 * 10000
chrono=b12 - 48 * 1000 + chrono
chrono=b13 - 48 * 100 + chrono
chrono=b14 - 48 * 10 + chrono
chrono=b15 - 48 + chrono
val=chrono
else
tx=1 ' Allumer led TX temps : pas de reception d'un temps
endif