Accel_v1.15 шим1 On 93e5b969-6055-4f5e-a351-5455593060dc 179f68cc-e327-4e14-ae48-3704a3825100 brightness 6ab93886-b1cf-497c-8735-5a91c88ea6cf 1226ec3e-c36a-43e7-981f-a45cd74775c1 0ca5f035-0881-4842-b48b-14acd1ffeaac шим1 on 7294f213-84a1-4b6e-892c-1329632e6b6d cd0e45b3-bedc-4f62-8de3-59def03f8ea2 currentTime = millis(); if((currentTime >= (loopTime + 20))&&(on==1)&&(brightness<255)) { analogWrite(9, brightness); // устанавливаем значение на 9 ножке brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } if((currentTime >= (loopTime + 20))&&(on==0)&&(brightness>0)) { analogWrite(9, brightness); // устанавливаем значение на 9 ножке brightness = brightness - fadeAmount; // отнимаем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } 614 pinMode(9, OUTPUT); // устанавливаем 9 ногу как выход currentTime = millis(); loopTime = currentTime; 105 яркость светодиода brightness = 0; int шаг изменения яркости fadeAmount = 1; int currentTime ; unsigned long loopTime ; unsigned long 9c50f843-193f-4074-ad86-75a063b193af 02fef521-18d8-4431-ae5f-fe40a921bb50 a23788d5-0a22-46d3-ba7e-41fd5430c27c en 081c2bfc-6a7b-4214-94a4-84dfa7e0d3f1 Разрешение на отработку скорости изменения PWMaccel MIN d085dd30-fc23-421c-ad32-83cad803b0d9 Минимальное значение ШИМ 0974089c-b8de-46ce-ae54-7634539e2616 MAX 155a1575-f575-423d-99e2-20bcc1ae5cc8 Максимальное значение ШИМ 85c4037e-badc-455a-83b6-11ffaf4f9b21 tAccel 55f47cf6-6a0a-47d6-b5be-89d33dcbaca8 Ускорение (Время за которое ШИМ изменит значение от MAX до MIN и наоборот) 5bb1b2af-1204-4cb6-a827-a08eaad482ae brightness e3569e5a-7a00-468d-96ea-c029ac11f5cb 6de4ce20-4160-49a8-a61c-4eb5a4aa6430 ff6dd6a6-4850-4d99-a0f6-195f3a6bfaa6 currentTime = millis(); if((currentTime >= (loopTime + 20))&&(On==1)&&(brightness<255)) { brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } if((currentTime >= (loopTime + 20))&&(On==0)&&(brightness>0)) { brightness = brightness - fadeAmount; // отнимаем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } 558 currentTime = millis(); loopTime = currentTime; 51 int brightness= 0; // яркость светодиода шаг изменения яркости fadeAmount = 1; int currentTime ; unsigned long loopTime ; unsigned long 94337c0b-c45c-49bb-a260-335a45c50771 11e96cf0-7d7b-423a-a73d-f976dd53f844 PWM acceleration time - Пауза между изменением значения шим (ms) tAccel - Время ускорения от MIN до MAX (ms) 91 step 1 шаг изменения значения шим 8677fa81-90da-4af2-9f0f-1b4cddd261c1 e1ff2db6-f029-433a-bf6f-8f7c839872ea currentTime = millis(); if((currentTime >= (loopTime + time))&&(On==1)&&(brightness<MAX)) { brightness = brightness + step; // прибавляем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } if((currentTime >= (loopTime + time))&&(On==0)&&(brightness>MIN)) { brightness = brightness - step; // отнимаем шаг изменения яркости, которая установится в следующем цикле loopTime = currentTime; } if(MAX <= MIN) { MAX=MIN+1; // Если MAX значение шим < MIN значения шим устанавливаеи MAX на 1 MIN } 737 currentTime = millis(); loopTime = currentTime; time=tAccel/(MAX-MIN) 75 currentTime ; unsigned long loopTime ; unsigned long time ; unsigned float MAX ; unsigned byte MIN ; unsigned byte tAccel ; unsigned long Accel Ускорение (step/s) шагов в секунду in Входная переменная Out Изменяемая переменная 009bb161-b747-4c28-81eb-27b71dd3d123 Acceleration Overtake v.1.15 Acceleration Overtake v.1.15 Автор: Dryundel https://vk.com/flysking Блок изменяет переменную Out в сторону переменной in с заданной скоростью Accel. Другими словами, переменная Var плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Accel, всегда стремясь к значению на входе in. Когда (Out<in) то Out возрастает стремясь к in , со скоростью Accel (step/s) . Когда (Out>in) то Out убывает стремясь к in, со скоростью Accel (step/s). Поддерживаются как положительные так и отрицательные значения in и Out. Отрицательные значения Accel не поддерживаются !!! Если на вход Accel подается отрицательное значение то принимается его модуль. При старте (начале работы), переменной Out присваивается значение на со входа in. По умолчанию при появлении на входе En логического нуля изменение переменной на выходе Out останавливается, Out "замораживается". При появлениии на входе En логической единицы, изменение Out продолжается. Если требуется что бы при остановке блока, запрете на работу блока (En=0), значение на выходе Out не "замораживалось", а сбрасывалось до значения на входе in, следует изменить параметр Reset, установив True (в парамерах пользователя). Параметр step задает шаг изменения переменной на выходе Out. Входы блока: in - входная переменная Accel - ускорение step/s за секунду или проще step/s^2 En - Разрешение на изменение переменной Var (работу блока). Параметры пользователя: step - шаг изменения переменной Var. Reset - заморозка / сброс Out в in при en=0 1522 шаг изменения значения переменной 13 Reset заморозка / сброс Out в in при запрете работы блока (en=0) f73ffa22-a64a-4f43-bef7-8cc4f80f0566 Сброс Out в in при en=0 69cb29d5-ad80-4ee9-956b-75f22f6a0391 if(Out== -2147483648) {Out = in;} if(en){ if(Accel != 0) { time = 1000000 / abs(Accel); if((micros() >= (loopTime + time))&&(Out<in)){ if(Out < in - step) {Out = Out + step;} else {Out = in;} loopTime = micros(); } if((micros() >= (loopTime + time))&&(Out>in)){ if(Out > in + step) {Out = Out - step;} else {Out = in;} loopTime = micros(); } } } else {if(Reset) {Out = in;} } 407 loopTime = micros(); Out = -2147483648; 47 loopTime ; unsigned long time ; unsigned long