2017-01-25 4 views
0

Ich möchte auf einigen LEDs einen Willkommen/Auf Wiedersehen Zustand simulieren. Erstens habe ich versucht, eine lineare mathematische Funktion zu verwenden, und es funktionierte, aber nicht so, wie es angenommen wurde. Ich möchte eine "niedrigere" Kurve (Diagramm) klettern, wie Exponentialfunktion Diagramm. Ich habe eine Exponentialfunktion verwendet, und jetzt steigen die höheren PWM-Werte (pwm-Wert ist wie der% der Lichtstärke der LEDs) zu viel von einem zum anderen. Also muss ich die Exponentialfunktion von 2^x in etwas anderem ändern, so dass ich eine niedrigere Wachstumsrate haben kann.Explosionsfunktion mit einer niedrigeren Wachstumsrate

Ich muss mit Werten von 0 - 65535 (% -Werte) arbeiten, d. 32767 ist 50%, wenn die Lichtstärke 65535 100% ist ...

Haben Sie irgendwelche Vorschläge für eine exponentielle Funktion mit einem geringeren Grad an Wachstum?

+3

Ich stimme, um diese Frage als Off-Thema zu schließen, weil es nicht um Programmierung geht, es geht um Mathematik. Sie können vielleicht etwas Hilfe mit dieser Art von Sache auf [math.SE] finden. –

+0

In diesem Moment bin ich im Versuch, die Exponentialfunktion zu verwenden: a * (1.1)^x – VladLoveMaths

Antwort

0

Scheint, dass Sie zum Zeitpunkt 0 den Wert 0 und zum Zeitpunkt TMax den Wert VMax benötigen. Beachten Sie, dass Exponentialfunktion 1 bei t = 0, so können Sie verwenden, Formular

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

Sie haben eine Grenzbedingung F (0) = 0 - es automatisch erfüllt ist. Die zweite Bedingung F (TMax) = VMax. Um jedoch beide Koeffizienten - A und k - zu bestimmen, benötigen Sie einen Zwischenpunkt und definieren dort einen Wert. Zum Beispiel können Sie einen Wert im halben Bereich definieren. So

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) 

Vielleicht möchten Sie einfacheren Ansatz verwenden - Leistungsfunktion F (t) = A * t N. Zum Beispiel, quadratische Funktion F = A * t * t

+0

Ich folge deine suggestion und es hat funktioniert! Danke ! Nun möchte ich einen Parameter in der Formel verwalten, der die Zeitspanne bestimmt, die benötigt wird, um den VMax zu füllen. So ähnlich, wenn ich den Parameter auf 4 Sekunden setze, sendet der Algorithmus den letzten Wert (VMax) nach genau 4 Sekunden. Haben Sie eine Nachsaugung? – VladLoveMaths

+0

VMax wird zur TMax-Zeit erreicht, also setzen Sie einfach TMax = 4 – MBo

+0

Ich brauche den VMax, um konstant zu sein, und den TMax, der die Zeit bis zum maximalen Wert modifiziert. – VladLoveMaths

Verwandte Themen