Плавный поджиг на M5451
- Войдите на сайт для отправки комментариев
Доброго времени суток уважаемые форумчане, на кануне сидел со свей ардуино и мк M5451 колдовал на тему плавного поджига диодов, но ничего не вышло, в теории звучит просто, на ногу brightness пока не защелкнут Clock подаем PWM сигнал (предположительно через оператор for), но как оказалось написать на практике это для меня составило трудность (я новичок сильно не пинать)))).
Ниже скетч взят из соседней темы "Автоматическая подсветка лестинцы но на МК 5450" хотелось бы его допилить как сделал Лукьянов с плавным поджигом. Из скетча убраны срабатывания на датчики и хотелось бы узнать как оставить включенные диоды например на 50%). Контроллер Arduino nano 328 при работе за 8-9 проходов начинают хотично светиться диоды на 2-3 сек потом снова нормально 8-9 проходов.
//Устанавливаем контакты для драйвера #define DATA 6 #define CLOCK 7 //Задаем количество светодиодов #define NUM_LEDS 17 const uint32_t mask = 0b11111111111111111; void setup() { pinMode(DATA, OUTPUT); pinMode(CLOCK, OUTPUT); digitalWrite(CLOCK, HIGH); } void loop() { for(char i = NUM_LEDS-1; i >= 0; i--) // зажигаем светодиоды в одну сторону { MM5450(mask<<i); delay(200); // задержка зажигания } delay(3000); // ждем 3 секунды for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды { MM5450(mask>>i); delay(200); // задержка затухания } for(char i = NUM_LEDS-1; i >= 0; i--) // зажигаем светодиоды в другую сторону { MM5450(mask>>i); delay(200); // задержка зажигания } delay(3000); // ждем 3 секунды for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды { MM5450(mask<<i); delay(200); // задержка затухания } delay(20); } void MM5450(uint32_t data) { digitalWrite(DATA, 1); digitalWrite(CLOCK, LOW); digitalWrite(CLOCK, HIGH); for(byte i = 0; i < NUM_LEDS; i++) { if(data & (1UL<<i)) digitalWrite(DATA, HIGH); else digitalWrite(DATA, LOW); digitalWrite(CLOCK, LOW); digitalWrite(CLOCK, HIGH); } digitalWrite(DATA, 0); for(byte i = 0; i < 35-NUM_LEDS; i++) { digitalWrite(CLOCK, LOW); digitalWrite(CLOCK, HIGH); } }
Неужели никто не сталкивался c PWM на LED драйверах?
Если нет явного и горячего желания сделать это именно на М5450, то посмотрите в сторону TLC5940
согласен TLC5940 отличная железяка и быстрая относительно например меги2560, TLC5940 все 16 каналов с 0 до 4095 пошагово без задержки проходит за 270 мс... но библиотека на 168/328 не даст использовать что то еще использующее таймеры(((( но ds18b20 вполне работает когда на TLC5940 ничего не передается. на канал вроде может выдать до 80 мА, ток настраивается одним резистором для всех каналов и => не нужны резисторы
дык в том то и дело прикупил уже себе m5451 в количестве 2х штук не выбрасывать же.
Надо ж совпадение как раз использую 328, видать и делеи придется применять, надо подумать приемлемо ли это. Однако глянул в сторону библиотеки m5451 кажется зовут lightduino http://code.google.com/p/arduino-m5451-current-driver/
так и не разобрался мануала как такового нет или мож я туплю (((
Уважаемый, я понимаю, что прошло 2 года, но разобрались ли вы с этим вопросом? Я просто сам сейчас копаю и пока никак не накопаю...