Bonsoir à tous,
J'essaie de créer un compte à rebours un peu special avec une led ; le µC seras un picaxe .
Je n'arrive pas à trouver les formules de calcul du compte à rebours pour determiné les durées.
je vais essayer d'être le plus clair possible :
le compte à rebours devra être progressif. CàD que la durée d'extinction de la led devras diminuée avec le temps,(effet accelaration) mais logarithmiquement( ou presque) j'y reviendrais.
la précision n'est pas de rigueur ( un minimum quand même hein... genre 1 ou 2 secondes max). On ne compteras pas le temps entre chaques lignes de programme mais juste le temps des pauses.
Les valeurs à connaitre qui sont fixes :
-Allumage de la led 100ms .
-A la fin du compte à rebours , il faudrait que la durée d'extinction soit de 10ms environ( clignotement trés rapide)
-La seule durée réglable doit être le temps total du compte a rebours par l'utilisateur. (par ex 30s) grosso modo le compte à rebours doit être compris entre 10s min et 120s au max.lereste doit se faire calculer tous seul.
Voila pour les bases : donc pour être plus précis . fonctionnement du compte à rebours:
Le temps d'exctinction de la led va donner l'effet d'acceleration . Au debut l'ecart entre deux exctinction doit etre de 1200ms max( c'est pas figé mais faut bien donné une valeur max), le coup d'apres la durée d'extinction sera moindre, par exemple 1100ms ( donc -100ms) le coup d'aprés la durée d'exctinction doit encore etre moindre par exemple 1010 ( -90ms).
On remarque que la durée d'extinction diminue (sensation de vitesse) mais aussi que le pas de diminution de la duree d'exctinction diminue aussi .
Comme ca quand on est vers la fin du compte a rebours, les ecarts diminue mais moins fort qu'au debut . cela donnerais un effet de "glissement" tres joli.
Pour le moment, j'arrive à faire le compte à rebours, mais je dérégle mes durées d'extinction et le pas manuellemnet en debut de programme pour arrivé à peu pres au temps voulus de compte a rebours ! pas terrrible.
Un petit schéma qui vaut tout les discours (les valeurs sont à titres d'exemple) sauf pour la derniére ligne qui as un temps d'extinction de 10ms comme souhaité.
led etteinte 1000ms
led allumée : 100ms
led eteinte : 900ms (1000 - 100 = 900)
led allumée : 100ms
led allumé : 810ms ( 900 - 90 = 810)
led allumé : 100ms
led eteinte : 730ms ( 810 - 80 = 730)
|
|
|
|
led eteinte 15 ms
led allumée 100ms
led eteinte 12ms (15 - 3 = 12)
led allumée 100ms
led eteinte 10ms (12 - 2 = 10)
fin du compte a rebours
je mettrais en programme vos formules ne vous en faite pas ; Il faut juste les formules avec des variables explicites .
je vous propose pour bien ce comprendre:
"durée_extin" pour la durée d'extinction. qui devras diminue avec le temps.
"pas" pour le pas qui diminue le temps d'extinction et qui lui même devra diminuer.
"T_total" pour la durée du compte à rebours definie par l'utilisateur (variable entre 10s et 120s)
"T_max" pour la durée max d'extinction entre 2 allumage
"T_min" pour le temps minimum d'extinction de 10ms environ.
Voila, si vous avez tous lus, c'est que ce défi vous intéresse . je galére depuis quelques jours alors je vous propose de le relever.
A vos calculettes !!!
-----