Всем доброго времени суток! Вопрос такой: Хочу сделать так чтобы при уменьшении яркости первого цвета плавно зажигался следующий и так далее все 3 цвета. Накидал вот такой код: Код (C++): for(int i=0; i<256;i++) { analogWrite(LED_R,i); delay(15); } for(int i=255;i>=0;i--) { analogWrite(LED_R,i); int val = i; int level = map(val,i,0,0,255); analogWrite(LED_G,level); delay(15); } Но работать это не хочет(( Но... Если написать Код (C++): int level = map(val,i,0,i,255); Красный начинает набирать яркость(первый цикл выполняется как надо) Дальше зажигается зелёный и гаснут они уже вместе. Подскажите почему не хочет работать функция MAP??? В чём тут подвох???
Код (C++): for(int i=0; i<255;i++) { analogWrite(LED_R,i); delay(15); } for(int i=255;i>=0;i--) { analogWrite(LED_R,i); analogWrite(LED_B,255-i); delay(15); } for(int i=255;i>=0;i--) { analogWrite(LED_B,i); analogWrite(LED_G,255-i); delay(15); } for(int i=255;i>=0;i--) { analogWrite(LED_G,i); delay(15); } Вот, что получилось, работает хорошо. Конечно это не критично, но всё же хочу спросить... Возможно ли упрощение этого кода без потери функционала и как можно избавится от delay в циклах при помощи функции millis???
Ну упрощение я бы не сказал Полный пакет здесь https://yadi.sk/d/-8OnW-TS3GZmyM А так головной файл тут Спойлер Код (C++): /*R_led_v2.ino */ #include "Cl_analogOut.h" Cl_analogOut Out[] = {3, 5, 6, 9, 10, 11};// выводы 3, 5, 6, 9, 10, 11 сделать ШИМ выходами #include "Cl_PWM_led.h" Cl_PWM_led * PWM_led[] = { new Cl_PWM_led(& Out[0]), new Cl_PWM_led(& Out[1]), new Cl_PWM_led(& Out[2]), new Cl_PWM_led(& Out[3]), new Cl_PWM_led(& Out[4]), new Cl_PWM_led(& Out[5]) }; void setup() { for (byte i = 0; i < 6; ++i)PWM_led[i]->setup(); } void loop() { for (byte i = 0; i < 6; ++i)PWM_led[i]->loop(); }