2017-01-25 12 views
0

Я хочу имитировать состояние приветствия/прощания на некоторых светодиодах. Во-первых, я попытался использовать линейную математическую функцию, и она работала, но не как исключенная. Я хочу получить «более низкую» кривую (диаграмму), например, график экспоненциальной функции. Я использовал экспоненциальную функцию, и теперь более высокие значения ШИМ (значение pwm как% интенсивности света светодиодов) слишком сильно увеличиваются от одного до другого. Поэтому мне нужно изменить экспоненциальную функцию от 2^х в чем-то другом, так что у меня может быть более низкая скорость роста диаграммы.Экспериментальная функция с более низкой скоростью роста

Мне нужно работать со значениями от 0 до 65535 (% значений), т. Е. 32767 составляет 50%, если интенсивность света, 65535 составляет 100% ...

Есть ли у вас предложение экспоненциальной функции с меньшей степенью роста?

+3

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет не о программировании, а о математике. Вы можете найти какую-то помощь в этом вопросе на [math.SE]. –

+0

в этот момент я пытаюсь использовать экспоненциальную функцию: a * (1.1)^x – VladLoveMaths

ответ

0

Кажется, вам нужно значение 0 в момент времени 0 и значение VMax во время TMax. Обратите внимание, что экспоненциальная функция 1 при Т = 0, так что вы можете использовать форму

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

Вы один бордюр условие F (0) = 0 - это выполняется автоматически. Второе условие F (TMax) = VMax. Но для определения обоих коэффициентов - A и k вам нужна промежуточная точка и определить значение там. Например, вы можете определить значение в полудиапазоне. Так

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) 

Возможно, вы бы использовать более простой подход - степенная функция F (T) = A * T N. Например, квадратичная функция F = A * t * t

+0

Я осмелился сказать вам, что это сработало! Спасибо ! Теперь я хочу управлять параметром в формуле, которая определит период времени, который потребуется для богатого VMax. Что-то вроде, если я установил параметр, равный 4 секундам, алгоритм отправит последнее значение (VMax) через ровно 4 секунды. Есть ли у вас какие-либо санкции? – VladLoveMaths

+0

VMax достигается в момент TMax, поэтому просто установите TMax = 4 – MBo

+0

Мне нужно, чтобы VMax был постоянным, а TMax изменял время до максимального значения. – VladLoveMaths