2017-01-25 1 views
0

Je souhaite simuler un état de bienvenue/au revoir sur certaines leds. Premièrement, j'ai essayé d'utiliser une fonction mathématique linéaire et cela a fonctionné mais pas comme excepté. Je veux une courbe "inférieure" (graphique) montée, telle qu'une carte de fonction exponentielle. J'ai utilisé une fonction exponentielle, et maintenant, les valeurs PWM plus élevées (valeur pwm est comme le% de l'intensité lumineuse des LED) augmentent trop de l'une à l'autre. Donc j'ai besoin de modifier la fonction exponentielle de 2^x dans quelque chose d'autre, donc je peux avoir un taux de croissance de graphique plus bas.Fonction explonentielle avec un taux de croissance plus faible

J'ai besoin de travailler avec des valeurs de 0 à 65535 (valeurs en%), c'est-à-dire. 32767 est 50% si l'intensité lumineuse, 65535 est 100% ...

Avez-vous une suggestion d'une fonction exponentielle avec un moindre degré de croissance?

+3

Je vote pour clore cette question hors sujet car il ne s'agit pas de programmation, mais de maths. Vous pourrez peut-être trouver de l'aide pour ce genre de chose sur [math.SE]. –

+0

en ce moment suis en essayant d'utiliser la fonction exponentielle: a * (1.1)^x – VladLoveMaths

Répondre

0

Semble avoir besoin de la valeur 0 à l'instant 0 et de la valeur VMax à l'instant TMax. Notez que la fonction exponentielle est 1 à t = 0, de sorte que vous pouvez utiliser le formulaire

F(t) = A * Exp(k * t) - 1 

Vous avez une condition de frontière F (0) = 0 - il est rempli automatiquement. La deuxième condition F (TMax) = VMax. Mais pour déterminer les deux coefficients - A et k, vous avez besoin d'un point intermédiaire et définissez la valeur là. Par exemple, vous pouvez définir la valeur à la moitié de la plage. Alors

F(TMax) = A * Exp(k * TMax) - 1 = VMax 
F(TMax/2) = A * Exp(k * TMax/2) - 1 = VHalf 
A * Exp(k * TMax) = VMax + 1 
A * Exp(k * TMax/2) = VHalf + 1 
divide these equations 
Exp(k * TMax/2) = (VMax + 1)/(VHalf + 1) 

so coefficients are 
k = 2 * Ln((VMax + 1)/(VHalf + 1))/TMax 
A = (VMax + 1)/Exp(k * TMax) 

Peut-être que vous utiliseriez approche plus simple - fonction puissance F (t) = A * t N. Par exemple, la fonction quadratique F = A * t * t

+0

J'ai suivi votre suggestion et cela a fonctionné! Je vous remercie ! Maintenant, je veux gérer un paramètre dans la formule qui déterminera la période de temps qui prendra pour enrichir le VMax. Quelque chose comme, si je mets le paramètre égal à 4 secondes, l'algorithme enverra la dernière valeur (VMax) après exactement 4 secondes. Avez-vous une suggestion? – VladLoveMaths

+0

VMax est atteint à l'heure TMax, donc il suffit de régler TMax = 4 – MBo

+0

J'ai besoin que VMax soit constant, et le TMax modifie le temps jusqu'à la valeur max. – VladLoveMaths